CouponController.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. import base64
  4. import json
  5. import os
  6. import time
  7. from django.views.generic.base import View
  8. from Model.models import CouponModel
  9. from Object.ResponseObject import ResponseObject
  10. from Object.TokenObject import TokenObject
  11. from django.db.models import Q, F, Count
  12. from django.http import JsonResponse, HttpResponseRedirect, HttpResponse
  13. from Service.CommonService import CommonService
  14. # 优惠券
  15. class CouponView(View):
  16. def get(self, request, *args, **kwargs):
  17. request.encoding = 'utf-8'
  18. operation = kwargs.get('operation')
  19. return self.validation(request.GET, request, operation)
  20. def post(self, request, *args, **kwargs):
  21. request.encoding = 'utf-8'
  22. operation = kwargs.get('operation')
  23. return self.validation(request.POST, request, operation)
  24. def validation(self, request_dict, request, operation):
  25. response = ResponseObject()
  26. if operation is None:
  27. return response.json(444, 'error path')
  28. else:
  29. token = request_dict.get('token', None)
  30. tko = TokenObject(token)
  31. response.lang = tko.lang
  32. if tko.code != 0:
  33. return response.json(tko.code)
  34. userID = tko.userID
  35. if operation == 'UserCoupon': #用户优惠券
  36. return self.query_user_coupon(request_dict, userID, response)
  37. else:
  38. return response.json(414)
  39. def query_user_coupon(self, request_dict, userID, response): #用户优惠券列表
  40. nowTime = int(time.time())
  41. couponObj = CouponModel.objects.filter(userID_id=userID,use_status=0,distributeTime__lte=nowTime,
  42. valid_time__gt=nowTime).annotate(coupon_id=F('id')).values(
  43. "coupon_id","type","coupon_discount","valid_time")
  44. for couponList in couponObj:
  45. couponList['valid_time'] = CommonService.timestamp_to_str(couponList['valid_time'])
  46. result = {
  47. 'count':couponObj.count(),
  48. 'couponList':list(couponObj),
  49. }
  50. return response.json(0, result)