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('参数不足')
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()),
]
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
执行数据更新命令:
python manage.py makemigrations
python manage.py migrate
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)
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)
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()),
]
# 广告平台兑奖url
PRIZEURL='http://127.0.0.1:8000/useroperation/editgetprize/'