前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >广告小程序后端开发

广告小程序后端开发

作者头像
玩蛇的胖纸
发布2019-06-15 18:27:31
1K0
发布2019-06-15 18:27:31
举报

1.获取未兑付未过期的我的奖品

1.在apps/user_operation/views.py中新建GeMyPrize:

代码语言:javascript
复制
class GeMyPrize(APIView):
    """
    获取我的奖品
    """
    renderer_classes = [JSONRenderer]  # 渲染器

    def get(self,request):
        token = request.GET.get('token')
        user = UserProfile.objects.filter(token=token).first()
        if user:
            p_list=GetPrize.objects.filter(user=user,end_time__gt=datetime.now(),status='0').order_by('-add_time')
            p=GetPrizeModelSerializer(p_list,many=True)
            return Response(p.data)
        else:
            return HttpResponse('参数不足')

2.在apps/user_operation/urls.py内配置路由:

代码语言:javascript
复制
from django.urls import path
from .views import GetMessage,ReadMessage,DelMessage,BuyUseJiFen,GeMyPrize

urlpatterns = [
    path('getmessage/',GetMessage.as_view()),
    path('readmessage/',ReadMessage.as_view()),
    path('delmessage/',DelMessage.as_view()),
    path('buyusejifen/',BuyUseJiFen.as_view()),
    path('getmyprize/',GeMyPrize.as_view()),
]

2.获取优惠券参数和兑付优惠券

1.简单原理:

扫码操作于普通小程序端,而要直接操作广告小程序的数据库必须要在广告小程序端,所以需要用两个视图类进行对接配合,其中两个视图类的get负责获取优惠券参数的功能实现,post则负责兑付优惠券的功能实现。

2.在apps/user_operation/models.py中新建属于普通小程序段的兑付表PayPrize:

代码语言:javascript
复制
class PayPrize(models.Model):
    """奖品兑付表小程序端"""
    admin_user=models.CharField(max_length=20,verbose_name='职工微信名',null=True,blank=True)
    user = models.CharField(max_length=20, verbose_name='微信用户名', null=True, blank=True)
    prize_title = models.CharField(max_length=20, verbose_name='奖券名', null=True, blank=True)
    add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")

    class Meta:
        verbose_name = "小程序端兑付表"
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.prize_title

执行数据更新命令:

代码语言:javascript
复制
python manage.py makemigrations
python manage.py migrate

3.在apps/user_operation/adminx.py内注册:

代码语言:javascript
复制
class PayPrizeAdmin(object):
    list_display = ["admin_user","user","prize_title","add_time"]
    list_filter = ["admin_user","user","prize_title","add_time"]

xadmin.site.register(PayPrize, PayPrizeAdmin)

4.在apps/user_operation/views.py中新建类CheckingPirze,EditGetPrize:

代码语言:javascript
复制
class CheckingPirze(APIView):
    """扫码访问小程序验证"""
    renderer_classes = [JSONRenderer]  # 渲染器

    def get(self,request):
        token = request.GET.get('token')
        # 扫码者
        admin_user = UserProfile.objects.filter(token=token).first()
        openid = request.GET.get('oid')
        user = UserProfile.objects.filter(open_id=openid).first()
        prizeid=request.GET.get('pid')
        if user and prizeid and admin_user.is_staff:
            # 扫码者必须是员工才可以往下走
            res = urllib.request.urlopen(PRIZEURL+"?openid="+openid+"&prizeid="+prizeid)
            # print('1',res)
            # print('查询结果',type(res.read().decode("utf-8")))
            obj = json.loads(res.read().decode("utf-8"))
            # print('obj',obj)
            re_user=UserProfileModelSerializer(user)
            return Response(data=({'getprize':obj,'user':re_user.data}))
        else:
            return HttpResponse('参数不足')

    def post(self,request):
        token = request.POST.get('token')
        # 扫码者
        admin_user = UserProfile.objects.filter(token=token).first()
        getprizeid=request.POST.get('getprizeid')
        if getprizeid and admin_user.is_staff:
            # 扫码者必须是员工才可以往下走
            data_dict = {"gid":getprizeid}
            data_string = urllib.parse.urlencode(data_dict)
            last_data = bytes(data_string, encoding='utf-8')
            res = urllib.request.urlopen(PRIZEURL,data=last_data)
            st=res.read().decode("utf-8")
            dict_st=eval(st)
            # print('res:',dict_st)
            # if res.read().decode("utf-8")=="200":
            # print('code:',type(dict_st["code"]))
            if dict_st["code"]=='200':
                # print('username',dict_st["user"])
                # print('title', dict_st["title"])
                pay_prize=PayPrize()
                pay_prize.admin_user=admin_user.nickName
                pay_prize.user=dict_st["user"]
                pay_prize.prize_title=dict_st["title"]
                pay_prize.save()
            return HttpResponse(dict_st["code"])
        else:
            return HttpResponse('参数不足')


class EditGetPrize(APIView):
    """get查询,post修改"""
    renderer_classes = [JSONRenderer]  # 渲染器

    def get(self, request):
        openid = request.GET.get('openid')
        user = UserProfile.objects.filter(open_id=openid).first()
        prizeid = request.GET.get('prizeid')
        if user and prizeid:
            prizeid=int(prizeid)
            prize = Prize.objects.filter(id=prizeid).first()
            p=GetPrize.objects.filter(user=user,prize=prize).first()
            re_p=GetPrizeModelSerializer(p)
            if p:
                return Response(re_p.data)
            else:
                #查无领取记录
                return HttpResponse('404')
        else:
            return HttpResponse('参数不足')

    def post(self, request):
        get_pid=request.POST.get('gid')
        if get_pid:
            get_pid=int(get_pid)
            # print('getid',get_pid)
            pr=GetPrize.objects.filter(id=get_pid,end_time__gt=datetime.now()).first()
            if pr:
                if pr.status=='1':
                    # 已经兑付过的了
                    re={'code': '405', 'msg': '此奖品已经兑付过'}
                    return Response(data=re)
                else:
                    pr.status = '1'
                    pr.save()
                    user = pr.user
                    title = pr.title
                    msg = Message()
                    msg.user = user
                    msg.content = "您成功使用了积分奖券:" + title
                    msg.save()
                    # print('新消息',msg.content)
                    re = {'code': '200', 'msg': '兑奖成功','title':title,'user':user.nickName}
                    return Response(data=re)
            else:
                # 奖品已过期
                re = {'code': '404', 'msg': '此奖品不存在或已过期'}
                return Response(data=re)
        else:
            re = {'code': '403', 'msg': '参数不足'}
            return Response(data=re)

5.在apps/user_operation/urls.py内配置路由:

代码语言:javascript
复制
from django.urls import path
from .views import GetMessage,ReadMessage,DelMessage,BuyUseJiFen,CheckingPirze,EditGetPrize,GeMyPrize

urlpatterns = [
    path('getmessage/',GetMessage.as_view()),
    path('readmessage/',ReadMessage.as_view()),
    path('delmessage/',DelMessage.as_view()),
    path('buyusejifen/',BuyUseJiFen.as_view()),
    path('checkingprize/',CheckingPirze.as_view()),
    path('editgetprize/',EditGetPrize.as_view()),
    path('getmyprize/',GeMyPrize.as_view()),
]

 6.在settings.py中配置:

代码语言:javascript
复制
# 广告平台兑奖url
PRIZEURL='http://127.0.0.1:8000/useroperation/editgetprize/'
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.获取未兑付未过期的我的奖品
    • 1.在apps/user_operation/views.py中新建GeMyPrize:
      • 2.在apps/user_operation/urls.py内配置路由:
      • 2.获取优惠券参数和兑付优惠券
        • 1.简单原理:
          • 扫码操作于普通小程序端,而要直接操作广告小程序的数据库必须要在广告小程序端,所以需要用两个视图类进行对接配合,其中两个视图类的get负责获取优惠券参数的功能实现,post则负责兑付优惠券的功能实现。
        • 2.在apps/user_operation/models.py中新建属于普通小程序段的兑付表PayPrize:
          • 3.在apps/user_operation/adminx.py内注册:
            • 4.在apps/user_operation/views.py中新建类CheckingPirze,EditGetPrize:
              • 5.在apps/user_operation/urls.py内配置路由:
                •  6.在settings.py中配置:
                相关产品与服务
                云开发 CloudBase
                云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档