CouponController.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. import base64
  4. import json
  5. import os
  6. import time
  7. import math
  8. from django.views.generic.base import View
  9. from Model.models import CouponModel,Device_User
  10. from Object.ResponseObject import ResponseObject
  11. from Object.TokenObject import TokenObject
  12. from django.db.models import Q, F, Count
  13. from django.http import JsonResponse, HttpResponseRedirect, HttpResponse
  14. from Service.CommonService import CommonService
  15. # 优惠券
  16. class CouponView(View):
  17. def get(self, request, *args, **kwargs):
  18. request.encoding = 'utf-8'
  19. operation = kwargs.get('operation')
  20. return self.validation(request.GET, request, operation)
  21. def post(self, request, *args, **kwargs):
  22. request.encoding = 'utf-8'
  23. operation = kwargs.get('operation')
  24. return self.validation(request.POST, request, operation)
  25. def validation(self, request_dict, request, operation):
  26. response = ResponseObject()
  27. if operation is None:
  28. return response.json(444, 'error path')
  29. if operation == 'generateCoupon': # 用户优惠券
  30. return self.generate_coupon(request_dict, response)
  31. else:
  32. token = request_dict.get('token', None)
  33. tko = TokenObject(token)
  34. response.lang = tko.lang
  35. if tko.code != 0:
  36. return response.json(tko.code)
  37. userID = tko.userID
  38. if operation == 'UserCoupon': #用户优惠券
  39. return self.query_user_coupon(request_dict, userID, response)
  40. else:
  41. return response.json(414)
  42. def generate_coupon(self,request_dict,response):
  43. username = request_dict.get('username', None)
  44. num = request_dict.get('num', None)
  45. userID = Device_User.objects.filter(username=username).values('userID')[0]['userID']
  46. try:
  47. data = []
  48. for i in range(int(num)):
  49. if i % 2 == 0:
  50. data.append(CouponModel(
  51. userID_id=userID,
  52. use_status=0,
  53. type=1,
  54. coupon_discount=7,
  55. distributeTime=int(time.time()),
  56. valid_time=int(time.time()) + 8640000,
  57. addTime=int(time.time())
  58. ))
  59. else:
  60. data.append(CouponModel(
  61. userID_id=userID,
  62. use_status=0,
  63. type=2,
  64. coupon_discount=0.01,
  65. distributeTime=int(time.time()),
  66. valid_time=int(time.time()) + 8640000,
  67. addTime=int(time.time())
  68. ))
  69. CouponModel.objects.bulk_create(data)
  70. return HttpResponse('success')
  71. except Exception as e:
  72. return HttpResponse(repr(e))
  73. def query_user_coupon(self, request_dict, userID, response): #用户优惠券列表
  74. nowTime = int(time.time())
  75. couponObj = CouponModel.objects.filter(userID_id=userID,use_status=0,distributeTime__lte=nowTime,
  76. valid_time__gt=nowTime).annotate(coupon_id=F('id')).values(
  77. "coupon_id","type","coupon_discount","valid_time")
  78. for couponList in couponObj:
  79. couponList['valid_time'] = CommonService.timestamp_to_str(couponList['valid_time'])
  80. result = {
  81. 'count':couponObj.count(),
  82. 'couponList':list(couponObj),
  83. }
  84. return response.json(0, result)