Эх сурвалжийг харах

云存储套餐列表加入判断当前优惠券是否可用

zhangdongming 2 жил өмнө
parent
commit
f81fa546dc

+ 19 - 1
Controller/CloudPhoto/CloudServiceController.py

@@ -6,9 +6,11 @@
 @Email   : zhangdongming@asj6.wecom.work
 @Email   : zhangdongming@asj6.wecom.work
 @Software: PyCharm
 @Software: PyCharm
 """
 """
+import time
+
 from django.views import View
 from django.views import View
 
 
-from Model.models import CouponCombo
+from Model.models import CouponCombo, CouponModel
 from Object.ResponseObject import ResponseObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.TokenObject import TokenObject
 
 
@@ -57,6 +59,22 @@ class CloudServiceController(View):
             combo_list.append(item['combo_id'])
             combo_list.append(item['combo_id'])
         return combo_list
         return combo_list
 
 
+    @classmethod
+    def get_user_coupon_list(cls, user_id):
+        """
+        获取用户未使用优惠券配置ID列表
+        @param user_id:用户id
+        @return: coupon_qs
+        """
+        now_time = int(time.time())
+        coupon_qs = CouponModel.objects.filter(
+            userID=user_id,
+            use_status=0,
+            distribute_time__lte=now_time,
+            valid_time__gt=now_time
+        ).values('coupon_config__id')
+        return coupon_qs
+
     @classmethod
     @classmethod
     def get_combo_list(cls, coupon_type, coupon_id):
     def get_combo_list(cls, coupon_type, coupon_id):
         """
         """

+ 45 - 16
Controller/CloudStorage.py

@@ -1,39 +1,42 @@
 #!/usr/bin/env python3
 #!/usr/bin/env python3
 # -*- coding: utf-8 -*-
 # -*- coding: utf-8 -*-
 import base64
 import base64
+import datetime
 import json
 import json
+import logging
+import sys
 import time
 import time
-from urllib.parse import quote, parse_qs, unquote
-from operator import itemgetter
+from decimal import Decimal
 from itertools import groupby
 from itertools import groupby
+from operator import itemgetter
+from urllib.parse import quote, parse_qs, unquote
+
 import boto3
 import boto3
 import paypalrestsdk
 import paypalrestsdk
-import datetime
-import logging
-import sys
-from django.http import JsonResponse, HttpResponseRedirect, HttpResponse
 from django.db import transaction
 from django.db import transaction
+from django.db.models import Q, F, Count
+from django.http import JsonResponse, HttpResponseRedirect, HttpResponse
 from django.views.generic.base import View
 from django.views.generic.base import View
+
 from Ansjer.config import SERVER_DOMAIN, PAYPAL_CRD, SERVER_DOMAIN_SSL, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, \
 from Ansjer.config import SERVER_DOMAIN, PAYPAL_CRD, SERVER_DOMAIN_SSL, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, \
     AWS_ARN
     AWS_ARN
 from Controller.CheckUserData import DataValid
 from Controller.CheckUserData import DataValid
+from Controller.CloudPhoto.CloudServiceController import CloudServiceController
+from Controller.PaymentCycle import Paypal
 from Model.models import Device_Info, Order_Model, Store_Meal, VodHlsModel, UID_Bucket, StsCrdModel, \
 from Model.models import Device_Info, Order_Model, Store_Meal, VodHlsModel, UID_Bucket, StsCrdModel, \
     ExperienceContextModel, Pay_Type, CDKcontextModel, Device_User, SysMsgModel, Unused_Uid_Meal, PromotionRuleModel, \
     ExperienceContextModel, Pay_Type, CDKcontextModel, Device_User, SysMsgModel, Unused_Uid_Meal, PromotionRuleModel, \
     VideoPlaybackTimeModel, CouponModel, VodBucketModel, VodHlsSummary
     VideoPlaybackTimeModel, CouponModel, VodBucketModel, VodHlsSummary
-from Object.AWS.S3Email import S3Email
 from Object.AWS.AmazonS3Util import AmazonS3Util
 from Object.AWS.AmazonS3Util import AmazonS3Util
+from Object.AWS.S3Email import S3Email
 from Object.AliPayObject import AliPayObject
 from Object.AliPayObject import AliPayObject
 from Object.AliSmsObject import AliSmsObject
 from Object.AliSmsObject import AliSmsObject
 from Object.RedisObject import RedisObject
 from Object.RedisObject import RedisObject
 from Object.ResponseObject import ResponseObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.TokenObject import TokenObject
 from Object.UidTokenObject import UidTokenObject
 from Object.UidTokenObject import UidTokenObject
-from Service.CommonService import CommonService
-from Object.m3u8generate import PlaylistGenerator
 from Object.WechatPayObject import WechatPayObject
 from Object.WechatPayObject import WechatPayObject
-from django.db.models import Q, F, Count
-from Controller.PaymentCycle import Paypal
-from decimal import Decimal
+from Object.m3u8generate import PlaylistGenerator
+from Service.CommonService import CommonService
 from Service.PayService import PaymentService
 from Service.PayService import PaymentService
 
 
 
 
@@ -90,7 +93,7 @@ class CloudStorageView(View):
             elif operation == 'queryvodlist':  # 获取视频播放列表
             elif operation == 'queryvodlist':  # 获取视频播放列表
                 return self.do_query_vod_list(request_dict, user_id, response)
                 return self.do_query_vod_list(request_dict, user_id, response)
             elif operation == 'commoditylist':  # 查询套餐列表
             elif operation == 'commoditylist':  # 查询套餐列表
-                return self.do_commodity_list(request_dict, response)
+                return self.do_commodity_list(request_dict, user_id, response)
             elif operation == 'queryorder':  # 查询订单列表
             elif operation == 'queryorder':  # 查询订单列表
                 return self.do_query_order(request_dict, user_id, response)
                 return self.do_query_order(request_dict, user_id, response)
             elif operation == 'experienceorder':  # 生成体验订单
             elif operation == 'experienceorder':  # 生成体验订单
@@ -157,9 +160,10 @@ class CloudStorageView(View):
         return response.json(0, {'data': data, 'count': count})
         return response.json(0, {'data': data, 'count': count})
 
 
     @staticmethod
     @staticmethod
-    def do_commodity_list(request_dict, response):  # 查询套餐列表
+    def do_commodity_list(request_dict, user_id, response):  # 查询套餐列表
         """
         """
         查询套餐列表
         查询套餐列表
+        @param user_id: 用户id
         @param request_dict: 请求数据
         @param request_dict: 请求数据
         @request_dict mold: 存储区域类型
         @request_dict mold: 存储区域类型
         @request_dict uid: uid
         @request_dict uid: uid
@@ -203,6 +207,7 @@ class CloudStorageView(View):
         store_list = list(store_qs)
         store_list = list(store_qs)
         store_list.sort(key=itemgetter('bucket__area'))
         store_list.sort(key=itemgetter('bucket__area'))
         res = []
         res = []
+        coupon_qs = '' if not user_id else CloudServiceController.get_user_coupon_list(user_id)
         for area, items in groupby(store_list, key=itemgetter('bucket__area')):
         for area, items in groupby(store_list, key=itemgetter('bucket__area')):
             items_list = list(items)
             items_list = list(items)
             for item in items_list:
             for item in items_list:
@@ -210,6 +215,8 @@ class CloudStorageView(View):
                 item['pay_type'] = list(pay_type_qs)
                 item['pay_type'] = list(pay_type_qs)
                 item['is_pay_cycle'] = 1 if item['cycle_config_id'] else 0
                 item['is_pay_cycle'] = 1 if item['cycle_config_id'] else 0
                 del item['cycle_config_id']
                 del item['cycle_config_id']
+                item['isCoupon'] = False if not coupon_qs or not coupon_qs.exists() else \
+                    CloudStorageView.check_user_coupon_is_available(coupon_qs, item['id'])
             res_c = {'area': area, 'items': items_list}
             res_c = {'area': area, 'items': items_list}
             res.append(res_c)
             res.append(res_c)
         # 是否促销
         # 是否促销
@@ -242,6 +249,27 @@ class CloudStorageView(View):
         }
         }
         return response.json(0, result)
         return response.json(0, result)
 
 
+    @staticmethod
+    def check_user_coupon_is_available(coupon_qs, combo_id):
+        """
+        查看用户优惠券是否可用
+        @param coupon_qs: 优惠券列表
+        @param combo_id: 套餐id
+        @return:
+        """
+        if not coupon_qs.exists():
+            return False
+        result = False
+        for item in coupon_qs:
+            if result:
+                break
+            combo_list = CloudServiceController.get_combo_list(0, item['coupon_config__id'])
+            if not combo_list:
+                continue
+            if combo_id in combo_list:
+                result = True
+        return result
+
     @staticmethod
     @staticmethod
     def do_sign_play_m3u8(request_dict, response):  # 根据sts播放m3u8 视频流
     def do_sign_play_m3u8(request_dict, response):  # 根据sts播放m3u8 视频流
         """
         """
@@ -361,7 +389,7 @@ class CloudStorageView(View):
                     "Effect": "Allow",
                     "Effect": "Allow",
                     "Action": "s3:*",
                     "Action": "s3:*",
                     "Resource": ["{aws_arn}:::{bucket_name}/{uid_channel}*".
                     "Resource": ["{aws_arn}:::{bucket_name}/{uid_channel}*".
-                                 format(aws_arn=aws_arn, bucket_name=bucket_name, uid_channel=storage)]
+                                     format(aws_arn=aws_arn, bucket_name=bucket_name, uid_channel=storage)]
                 }
                 }
             ]
             ]
         }
         }
@@ -1640,7 +1668,8 @@ class CloudStorageView(View):
         if device_info_qs[0]['vodPrimaryUserID'] != user_id:
         if device_info_qs[0]['vodPrimaryUserID'] != user_id:
             return response.json(10034)
             return response.json(10034)
         now_time = int(time.time())
         now_time = int(time.time())
-        uid_bucket_qs = UID_Bucket.objects.filter(uid=uid, endTime__gte=now_time, channel=channel).values('bucket_id').order_by(
+        uid_bucket_qs = UID_Bucket.objects.filter(uid=uid, endTime__gte=now_time, channel=channel).values(
+            'bucket_id').order_by(
             'addTime')
             'addTime')
         if not uid_bucket_qs.exists():
         if not uid_bucket_qs.exists():
             return response.json(10030)
             return response.json(10030)