Browse Source

Merge branch 'test' of http://192.168.136.99:3000/servers/ASJServer into ghl

guanhailong 2 years ago
parent
commit
9237b90b49
1 changed files with 128 additions and 111 deletions
  1. 128 111
      Controller/AiController.py

+ 128 - 111
Controller/AiController.py

@@ -53,24 +53,24 @@ class AiView(View):
             response.lang = tko.lang
             if tko.code != 0:
                 return response.json(tko.code)
-            userID = tko.userID
+            user_id = tko.userID
 
             # 套餐相关接口
-            if operation == 'commoditylist':  # 查询套餐列表
+            if operation == 'commoditylist':        # 查询套餐列表
                 return self.do_commodity_list(request_dict, response)
-            elif operation == 'experienceOrder':  # 体验套餐
-                return self.experience_order(request_dict, userID, response)
-            elif operation == 'createpayorder':  # 创建支付订单
-                return self.do_create_pay_order(request_dict, request, userID, response)
-            elif operation == 'queryorderlist':  # 查询订单列表
-                return self.do_querylist(userID, request_dict, response)
-            elif operation == 'getUsingPackage':  # 获取当前使用套餐
-                return self.getUsingPackage(request_dict, userID, response)
+            elif operation == 'experienceOrder':    # 体验套餐
+                return self.experience_order(request_dict, user_id, response)
+            elif operation == 'createpayorder':     # 创建支付订单
+                return self.do_create_pay_order(request_dict, request, user_id, response)
+            elif operation == 'queryorderlist':     # 查询订单列表
+                return self.query_order_list(request_dict, user_id, response)
+            elif operation == 'getUsingPackage':    # 获取当前使用套餐
+                return self.get_using_package(request_dict, response)
             # 开关相关接口
-            elif operation == 'getAiStatus':  # 获取开关状态
+            elif operation == 'getAiStatus':        # 获取开关状态
                 return self.get_ai_status(request_dict, response)
-            elif operation == 'changeaistatus':  # 修改开关状态
-                return self.do_change_ai_status(userID, request_dict, response)
+            elif operation == 'changeaistatus':     # 修改开关状态
+                return self.do_change_ai_status(request_dict, user_id, response)
             else:
                 return response.json(414)
 
@@ -121,7 +121,7 @@ class AiView(View):
             return response.json(500, repr(e))
 
     @staticmethod
-    def experience_order(request_dict, userID, response):
+    def experience_order(request_dict, user_id, response):
         """
         体验套餐
         @param request_dict: 请求数据
@@ -131,7 +131,7 @@ class AiView(View):
         @request_dict rank: 套餐id
         @request_dict cdk: 兑换码
         @request_dict lang: 语言
-        @param userID: 用户id
+        @param user_id: 用户id
         @param response: 响应
         @return: response
         """
@@ -173,13 +173,13 @@ class AiView(View):
             # 判断是否为主用户操作
             device_info_qs = Device_Info.objects.filter(Q(UID=uid) & ~Q(vodPrimaryUserID='')).values('vodPrimaryUserID')
             if device_info_qs.exists():
-                if device_info_qs[0]['vodPrimaryUserID'] != userID:
+                if device_info_qs[0]['vodPrimaryUserID'] != user_id:
                     if pay_type == 10:
                         return response.json(10035)
                     if pay_type == 11:
                         return response.json(10036)
 
-            dv_qs = Device_Info.objects.filter(userID_id=userID, UID=uid, isShare=False, isExist=1)
+            dv_qs = Device_Info.objects.filter(userID_id=user_id, UID=uid, isShare=False, isExist=1)
             if not dv_qs.exists():
                 return response.json(12)
 
@@ -203,7 +203,7 @@ class AiView(View):
 
             with transaction.atomic():
                 # 订单表创建数据
-                Order_Model.objects.create(orderID=orderID, UID=uid, channel=channel, userID_id=userID,
+                Order_Model.objects.create(orderID=orderID, UID=uid, channel=channel, userID_id=user_id,
                                            desc=ai_store_meal_qs[0]['lang__content'], payType=pay_type, payTime=nowTime,
                                            price=ai_store_meal_qs[0]['price'], currency=ai_store_meal_qs[0]['currency'],
                                            addTime=nowTime, updTime=nowTime, pay_url='AI体验',
@@ -230,7 +230,7 @@ class AiView(View):
             redisObj.del_data(key=redis_key)
             return response.json(474)
 
-    def do_create_pay_order(self, request_dict, request, userID, response):
+    def do_create_pay_order(self, request_dict, request, user_id, response):
         """
         创建支付订单
         @param request_dict: 请求数据
@@ -240,7 +240,7 @@ class AiView(View):
         @request_dict pay_type: 支付类型
         @request_dict rank: 套餐id
         @request_dict lang: 语言
-        @param userID: 用户id
+        @param user_id: 用户id
         @param response: 响应
         @return: response
         """
@@ -279,7 +279,7 @@ class AiView(View):
                 'orderID': orderID,
                 'UID': uid,
                 'channel': channel,
-                'userID_id': userID,
+                'userID_id': user_id,
                 'desc': content,
                 'payType': pay_type,
                 'payTime': nowTime,
@@ -313,6 +313,108 @@ class AiView(View):
         except Exception as e:
             return response.json(500, repr(e))
 
+    @staticmethod
+    def query_order_list(request_dict, user_id, response):
+        """
+        查询订单列表
+        @param request_dict: 请求数据
+        @param user_id: 用户id
+        @request_dict page: 页数
+        @request_dict line: 条数
+        @request_dict uid: uid
+        @request_dict lang: 语言
+        @param response: 响应
+        @return: response
+        """
+        page = request_dict.get('page', None)
+        line = request_dict.get('line', None)
+        uid = request_dict.get('uid', None)
+        lang = request_dict.get('lang', 'en')
+
+        if not all([page, line]):
+            return response.json(444, 'page,line')
+
+        page, line = int(page), int(line)
+
+        try:
+            order_qs = Order_Model.objects.filter(userID_id=user_id, status=1, order_type=1, ai_rank__lang__lang=lang)
+
+            if uid:     # 查询指定设备订单
+                order_qs.filter(UID=uid)
+            if not order_qs.exists():
+                return response.json(173)
+
+            count = order_qs.count()
+            order_qs = order_qs.annotate(rank__title=F('ai_rank__lang__title'),
+                                         rank__content=F('ai_rank__lang__content'),
+                                         rank__day=F('ai_rank__effective_day'), rank__price=F('ai_rank__price'),
+                                         rank__expire=F('ai_rank__effective_day'), rank__id=F('ai_rank_id'),
+                                         rank__currency=F('ai_rank__currency'))
+            order_qs = order_qs[(page - 1) * line:page * line].values('orderID', 'UID', 'channel', 'desc', 'price',
+                                                                      'currency', 'addTime', 'updTime', 'paypal',
+                                                                      'rank__day', 'payType', 'rank__price', 'status',
+                                                                      'rank__content', 'rank__title', 'rank__currency',
+                                                                      'rank__expire', 'ai_rank_id')
+            order_list = list(order_qs)
+            data = []
+            now_time = int(time.time())
+            uid_list = [order['UID'] for order in order_list]
+            device_info_qs = Device_Info.objects.filter(userID_id=user_id, UID__in=uid_list).values('id', 'UID', 'Type')
+            for order in order_list:
+                if order['status'] == 0:
+                    if order['addTime'] + 3600 < now_time:
+                        order['status'] = 3
+                for did in device_info_qs:
+                    if order['UID'] == did['UID']:
+                        order['did'] = did['id']
+                        order['Type'] = did['Type']
+                        data.append(order)
+            return response.json(0, {'data': data, 'count': count})
+        except Exception as e:
+            return response.json(500, repr(e))
+
+    @staticmethod
+    def get_using_package(request_dict, response):
+        """
+        获取当前使用套餐
+        @param request_dict: 请求数据
+        @request_dict uid: uid
+        @request_dict lang: 语言
+        @param response: 响应
+        @return: response
+        """
+        uid = request_dict.get('uid', None)
+        lang = request_dict.get('lang', 'en')
+
+        if not uid:
+            return response.json(444, 'uid')
+
+        try:
+            ai_service_qs = AiService.objects.filter(uid=uid, use_status=1, orders__ai_rank__lang__lang=lang)
+            if not ai_service_qs.exists():
+                return response.json(0, [])
+
+            # 计算套餐过期时间
+            sum_end_time = AiService.objects.filter(Q(uid=uid), ~Q(use_status=2)).aggregate(Sum('endTime'))[
+                'endTime__sum']
+            ai_service_qs = ai_service_qs.order_by('addTime').annotate(
+                bucket__content=F('orders__ai_rank__lang__title')). \
+                values('uid', 'use_status', 'bucket__content')
+
+            ai_service_data = ai_service_qs[0]
+            ai_service_data['endTime'] = sum_end_time
+
+            # 如果存在序列号返回完整序列号
+            device_info_qs = Device_Info.objects.filter(UID=uid).values('serial_number', 'Type')
+            serial_number = device_info_qs[0]['serial_number']
+            device_type = device_info_qs[0]['Type']
+            if serial_number:
+                ai_service_data['serial_number'] = CommonService.get_full_serial_number(uid, serial_number, device_type)
+
+            return response.json(0, [ai_service_data])
+        except Exception as e:
+            return response.json(500, repr(e))
+
     @staticmethod
     def get_ai_status(request_dict, response):
         """
@@ -338,10 +440,9 @@ class AiView(View):
             return response.json(500, repr(e))
 
     @staticmethod
-    def do_change_ai_status(userID, request_dict, response):
+    def do_change_ai_status(request_dict, user_id, response):
         """
         修改AI开关状态
-        @param userID: 用户id
         @param request_dict: 请求数据
         @request_dict token_val: 设备验证令牌
         @request_dict appBundleId: app包id
@@ -354,6 +455,7 @@ class AiView(View):
         @request_dict tz: 时区
         @request_dict detect_group: 检测类型
         @request_dict interval: 推送间隔
+        @param user_id: 用户id
         @param response: 响应
         @return: response
         """
@@ -385,7 +487,7 @@ class AiView(View):
                 return response.json(10054)
 
             # 查询设备是否属于该用户
-            device_info_qs = Device_Info.objects.filter(userID_id=userID, UID=uid)
+            device_info_qs = Device_Info.objects.filter(userID_id=user_id, UID=uid)
             if not device_info_qs.exists():
                 return response.json(14)
             status = int(status)
@@ -430,7 +532,7 @@ class AiView(View):
                 return response.json(0)
             elif status == 1:  # 开启
                 # 更新或创建uid_push数据
-                uid_push_qs = UidPushModel.objects.filter(userID_id=userID, m_code=m_code, uid_set__uid=uid)
+                uid_push_qs = UidPushModel.objects.filter(userID_id=user_id, m_code=m_code, uid_set__uid=uid)
                 uid_push_data = {
                     'appBundleId': appBundleId,
                     'app_type': app_type,
@@ -445,7 +547,7 @@ class AiView(View):
                     uid_push_qs.update(**uid_push_data)
                 else:
                     uid_push_data['uid_set_id'] = uid_set_id
-                    uid_push_data['userID_id'] = userID
+                    uid_push_data['userID_id'] = user_id
                     uid_push_data['m_code'] = m_code
                     uid_push_data['addTime'] = nowTime
                     UidPushModel.objects.create(**uid_push_data)
@@ -470,91 +572,6 @@ class AiView(View):
         except Exception as e:
             return response.json(500, repr(e))
 
-    def do_querylist(self, userID, request_dict, response):
-        page = request_dict.get('page', None)
-        line = request_dict.get('line', None)
-        uid = request_dict.get('uid', None)
-        lang = request_dict.get('lang', 'en')
-        if not page or not line:
-            return response.json(444, 'page,line')
-
-        try:
-            page = int(page)
-            line = int(line)
-            omqs = Order_Model.objects.filter(userID_id=userID, status=1, order_type=1, ai_rank__lang__lang=lang)
-            # 筛选指定设备id的订单
-            if uid:
-                omqs.filter(UID=uid)
-            if not omqs.exists():
-                return response.json(173)
-            count = omqs.count()
-            omqs = omqs.annotate(rank__title=F('ai_rank__lang__title'), rank__content=F('ai_rank__lang__content'),
-                                 rank__day=F('ai_rank__effective_day'), rank__price=F('ai_rank__price'),
-                                 rank__expire=F('ai_rank__effective_day'), rank__id=F('ai_rank_id'),
-                                 rank__currency=F('ai_rank__currency'))
-            order_ql = omqs[(page - 1) * line:page * line].values("orderID", "UID", "channel", "desc", "price",
-                                                                  "currency",
-                                                                  "addTime",
-                                                                  "updTime", "paypal", "rank__day", "payType",
-                                                                  "rank__price", "status",
-                                                                  "rank__content", "rank__title", "rank__currency",
-                                                                  "rank__expire", "ai_rank_id")
-            order_list = list(order_ql)
-            data = []
-            nowTime = int(time.time())
-            # 这里需要进行优化
-            uid_list = []
-            for od in order_list:
-                uid_list.append(od['UID'])
-            didqs = Device_Info.objects.filter(userID_id=userID, UID__in=uid_list).values('id', 'UID', 'Type')
-            for d in order_list:
-                if d['status'] == 0:
-                    if d['addTime'] + 3600 < nowTime:
-                        d['status'] = 3
-                for did in didqs:
-                    if d['UID'] == did['UID']:
-                        d['did'] = did['id']
-                        d['Type'] = did['Type']
-                        data.append(d)
-                # d['rank__lang__content'] = '月' if lang == 'cn' else 'month'
-            return response.json(0, {'data': data, 'count': count})
-        except Exception as e:
-            print(e)
-        return response.json(500, repr(e))
-
-    # 获取当前使用的ai套餐
-    def getUsingPackage(self, request_dict, userID, response):
-        uid = request_dict.get('uid', None)
-        lang = request_dict.get('lang', 'en')
-        # dv_qs = Device_Info.objects.filter(userID_id=userID, UID=uid, isShare=False, isExist=1, vodPrimaryUserID=userID)
-        # if not dv_qs.exists():
-        #     return response.json(12)
-        try:
-            ai_service_qs = AiService.objects.filter(uid=uid, use_status=1, orders__ai_rank__lang__lang=lang)
-            if not ai_service_qs.exists():
-                return response.json(0, [])
-
-            # 计算套餐过期时间
-            sum_end_time = AiService.objects.filter(Q(uid=uid), ~Q(use_status=2)).aggregate(Sum('endTime'))[
-                'endTime__sum']
-            ai_service_qs = ai_service_qs.order_by('addTime').annotate(
-                bucket__content=F('orders__ai_rank__lang__title')). \
-                values('uid', 'use_status', 'bucket__content')
-
-            ai_service_data = ai_service_qs[0]
-            # 如果存在序列号返回完整序列号
-            device_info_qs = Device_Info.objects.filter(UID=uid).values('serial_number', 'Type')
-            serial_number = device_info_qs[0]['serial_number']
-            device_type = device_info_qs[0]['Type']
-            if serial_number:
-                ai_service_data['serial_number'] = CommonService.get_full_serial_number(uid, serial_number, device_type)
-
-            ai_service_data['endTime'] = sum_end_time
-            return response.json(0, [ai_service_data])
-        except Exception as e:
-            print(e)
-            return response.json(500, repr(e))
-
     @staticmethod
     def create_paypal_payment(lang, orderID, price, currency, content, response):
         cancel_url = CommonService.get_payment_status_url(lang, 'fail')