| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 | #!/usr/bin/env python3# -*- coding: utf-8 -*-import timefrom django.db.models import Ffrom django.http import HttpResponsefrom django.views.generic.base import Viewfrom Controller.CloudPhoto.CloudServiceController import CloudServiceControllerfrom Model.models import CouponModel, Device_Userfrom Object.ResponseObject import ResponseObjectfrom Object.TokenObject import TokenObjectfrom Service.CommonService import CommonService# 优惠券class CouponView(View):    def get(self, request, *args, **kwargs):        request.encoding = 'utf-8'        operation = kwargs.get('operation')        return self.validation(request.GET, request, operation)    def post(self, request, *args, **kwargs):        request.encoding = 'utf-8'        operation = kwargs.get('operation')        return self.validation(request.POST, request, operation)    def validation(self, request_dict, request, operation):        response = ResponseObject()        if operation is None:            return response.json(444, 'error path')        if operation == 'generateCoupon':  # 用户优惠券            return self.generate_coupon(request_dict, response)        else:            token = request_dict.get('token', None)            tko = TokenObject(token)            response.lang = tko.lang            if tko.code != 0:                return response.json(tko.code)            userID = tko.userID            if operation == 'UserCoupon':  # 用户优惠券                return self.query_user_coupon(request_dict, userID, response)            else:                return response.json(414)    def generate_coupon(self, request_dict, response):        username = request_dict.get('username', None)        num = request_dict.get('num', None)        userID = Device_User.objects.filter(username=username).values('userID')[0]['userID']        coupon_config_id = request_dict.get('coupon_config_id', 1)        try:            data = []            # CouponConfigModel.objects.create(type=1, use_range=1, coupon_discount=8)            # CouponLangObj = CouponLang.objects.create(            #     lang='cn',            #     instruction='用于自动续费套餐的首月',            #     quota='八',            #     unit='折',            #     remark='每台摄像机上只能用一次'            # )            # CouponConfigModel.objects.get(id=1).lang.add(CouponLangObj.id)            now_time = int(time.time())            CouponModel.objects.create(                use_status=0,                distribute_time=now_time,                valid_time=now_time + 10000000,                userID=userID,                coupon_config_id=coupon_config_id,                update_time=now_time,                create_time=now_time            )            return HttpResponse('success')        except Exception as e:            return HttpResponse(                "错误行数:{errLine}, 错误信息: {errmsg}".format(errLine=e.__traceback__.tb_lineno, errmsg=repr(e)))    def query_user_coupon(self, request_dict, userID, response):  # 用户优惠券列表        now_time = int(time.time())        lang = request_dict.get('lang', 'en')        coupon_obj = CouponModel.objects.filter(            userID=userID,            use_status=0,            distribute_time__lte=now_time,            valid_time__gt=now_time,            coupon_config__lang__lang=lang,        ).annotate(            coupon_id=F('id'),            type=F('coupon_config__type'),            coupon_discount=F('coupon_config__coupon_discount'),            instruction=F('coupon_config__lang__instruction'),            remark=F('coupon_config__lang__remark'),            quota=F('coupon_config__lang__quota'),            unit=F('coupon_config__lang__unit'),            config_id=F('coupon_config_id')        ).values(            "coupon_id",            "type",            "coupon_discount",            "valid_time",            "instruction",            "remark",            "quota",            "unit",            "config_id"        )        for couponList in coupon_obj:            couponList['valid_time'] = CommonService.timestamp_to_str(couponList['valid_time'])            couponList['comboList'] = CloudServiceController.get_combo_list(0, couponList['config_id'])        result = {            'count': coupon_obj.count(),            'couponList': list(coupon_obj),        }        return response.json(0, result)
 |