广告小程序后端开发(17.优惠券系统:获取未兑付未过期的我的奖品,获取优惠券参数和兑付优惠券)...

编程入门 行业动态 更新时间:2024-10-11 03:22:00

广告小程序后端开发(17.<a href=https://www.elefans.com/category/jswz/34/1767935.html style=优惠券系统:获取未兑付未过期的我的奖品,获取优惠券参数和兑付优惠券)..."/>

广告小程序后端开发(17.优惠券系统:获取未兑付未过期的我的奖品,获取优惠券参数和兑付优惠券)...

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

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

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内配置路由:

from django.urls import path
from .views import GetMessage,ReadMessage,DelMessage,BuyUseJiFen,GeMyPrizeurlpatterns = [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:

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_namedef __str__(self):return self.prize_title

执行数据更新命令:

python manage.py makemigrations
python manage.py migrate

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

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:

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.nickNamepay_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.usertitle = pr.titlemsg = Message()msg.user = usermsg.content = "您成功使用了积分奖券:" + titlemsg.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内配置路由:

from django.urls import path
from .views import GetMessage,ReadMessage,DelMessage,BuyUseJiFen,CheckingPirze,EditGetPrize,GeMyPrizeurlpatterns = [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中配置:

# 广告平台兑奖url
PRIZEURL='http://127.0.0.1:8000/useroperation/editgetprize/'

 

转载于:.html

更多推荐

广告小程序后端开发(17.优惠券系统:获取未兑付未过期的我的奖品,获取优惠券参数和兑付优惠券)...

本文发布于:2024-03-09 05:19:54,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1723950.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:优惠券   奖品   后端   参数   程序

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!