Browse Source

删除AI消息没用接口,优化查询套餐列表,体验套餐接口

locky 2 years ago
parent
commit
106e505c74
1 changed files with 260 additions and 414 deletions
  1. 260 414
      Controller/AiController.py

+ 260 - 414
Controller/AiController.py

@@ -1,19 +1,16 @@
-import time
-import boto3
 import logging
 import logging
-import botocore
-import paypalrestsdk
+import time
+from urllib.parse import quote, parse_qs, unquote
 
 
-from botocore import client
-from boto3.session import Session
+import paypalrestsdk
 from django.db import transaction
 from django.db import transaction
 from django.db.models import Q, F, Sum
 from django.db.models import Q, F, Sum
-from django.views.generic.base import View
 from django.http import HttpResponseRedirect, HttpResponse
 from django.http import HttpResponseRedirect, HttpResponse
+from django.views.generic.base import View
 
 
-from Ansjer.config import PAYPAL_CRD, SERVER_DOMAIN_SSL, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, DETECT_PUSH_DOMAINS
+from Ansjer.config import PAYPAL_CRD, SERVER_DOMAIN_SSL, DETECT_PUSH_DOMAINS
 from Model.models import Device_Info, Order_Model, ExperienceAiModel, Pay_Type, CDKcontextModel, UidPushModel, \
 from Model.models import Device_Info, Order_Model, ExperienceAiModel, Pay_Type, CDKcontextModel, UidPushModel, \
-    AiStoreMeal, AiService, UidSetModel, Ai_Push_Info
+    AiStoreMeal, AiService, UidSetModel
 from Object.AliPayObject import AliPayObject
 from Object.AliPayObject import AliPayObject
 from Object.ETkObject import ETkObject
 from Object.ETkObject import ETkObject
 from Object.RedisObject import RedisObject
 from Object.RedisObject import RedisObject
@@ -21,8 +18,6 @@ from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.TokenObject import TokenObject
 from Object.WechatPayObject import WechatPayObject
 from Object.WechatPayObject import WechatPayObject
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
-from Service.ModelService import ModelService
-from urllib.parse import quote, parse_qs, unquote
 
 
 
 
 class AiView(View):
 class AiView(View):
@@ -45,6 +40,7 @@ class AiView(View):
         response = ResponseObject()
         response = ResponseObject()
         if operation is None:
         if operation is None:
             return response.json(444, 'error path')
             return response.json(444, 'error path')
+        # 支付回调接口
         elif operation == 'doPayPalCallBack':  # paypal支付回调
         elif operation == 'doPayPalCallBack':  # paypal支付回调
             return self.do_pay_by_paypal_callback(request_dict, response)
             return self.do_pay_by_paypal_callback(request_dict, response)
         elif operation == 'doAlipayCallBack':  # 支付宝支付回调
         elif operation == 'doAlipayCallBack':  # 支付宝支付回调
@@ -58,29 +54,265 @@ class AiView(View):
             if tko.code != 0:
             if tko.code != 0:
                 return response.json(tko.code)
                 return response.json(tko.code)
             userID = tko.userID
             userID = tko.userID
-            if operation == 'createpayorder':  # 创建支付订单
-                return self.do_create_pay_order(request_dict, request, userID, response)
-            elif operation == 'getAiStatus':  # 获取AI开关状态
-                return self.get_ai_status(request_dict, response)
-            elif operation == 'changeaistatus':  # 修改AI开关状态
-                return self.do_change_ai_status(userID, request_dict, response)
-            elif operation == 'commoditylist':  # 获取AI套餐列表
+
+            # 套餐相关接口
+            if operation == 'commoditylist':  # 查询套餐列表
                 return self.do_commodity_list(request_dict, response)
                 return self.do_commodity_list(request_dict, response)
-            elif operation == 'queryInfo':  # 查询消息列表
-                return self.queryInfo(userID, request_dict, response)
-            elif operation == 'readInfo':  # 消息已读
-                return self.readInfo(userID, request_dict, response)
-            elif operation == 'deleteInfo':  # 删除消息
-                return self.deleteInfo(userID, request_dict, response)
-            elif operation == 'queryorderlist':  # 查询订单
+            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)
                 return self.do_querylist(userID, request_dict, response)
-            elif operation == 'getUsingPackage':  # 获取当前使用的ai套餐
+            elif operation == 'getUsingPackage':  # 获取当前使用套餐
                 return self.getUsingPackage(request_dict, userID, response)
                 return self.getUsingPackage(request_dict, userID, response)
-            elif operation == 'experienceOrder':  # 体验AI套餐
-                return self.experience_order(request_dict, userID, response)
+            # 开关相关接口
+            elif operation == 'getAiStatus':  # 获取开关状态
+                return self.get_ai_status(request_dict, response)
+            elif operation == 'changeaistatus':  # 修改开关状态
+                return self.do_change_ai_status(userID, request_dict, response)
             else:
             else:
                 return response.json(414)
                 return response.json(414)
 
 
+    @staticmethod
+    def do_commodity_list(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')
+
+        try:
+            # DVR/NVR设备暂不返回套餐列表
+            device_info_qs = Device_Info.objects.filter(Q(UID=uid), Q(Type__lte=4) | Q(Type=10001))
+            if device_info_qs.exists():
+                return response.json(0)
+
+            # 没体验过的设备只返回体验套餐,体验过的不返回体验套餐
+            exc_ai_qs = ExperienceAiModel.objects.filter(uid=uid, experience_type=0)
+            if exc_ai_qs.exists():
+                ai_meal_qs = AiStoreMeal.objects.filter(~Q(pay_type=10))
+            else:
+                ai_meal_qs = AiStoreMeal.objects.filter(pay_type=10)
+
+            # 查询套餐数据
+            ai_meal_qs = ai_meal_qs.filter(is_show=1, lang__lang=lang). \
+                annotate(ai_meal_id=F('id'), title=F('lang__title'), content=F('lang__content')). \
+                values('ai_meal_id', 'title', 'content', 'price', 'effective_day', 'currency', 'virtual_price',
+                       'symbol', 'is_beta')
+            if not ai_meal_qs.exists():
+                return response.json(0)
+
+            # 查询每种套餐的所有支付方式
+            ai_meal_list = list(ai_meal_qs)
+            for ai_meal in ai_meal_list:
+                pay_type_qs = Pay_Type.objects.filter(aistoremeal=ai_meal['ai_meal_id']).values('id', 'payment')
+                ai_meal['pay_type'] = list(pay_type_qs)
+            result = {
+                'meals': ai_meal_list,
+            }
+            return response.json(0, result)
+        except Exception as e:
+            return response.json(500, repr(e))
+
+    @staticmethod
+    def experience_order(request_dict, userID, response):
+        """
+        体验套餐
+        @param request_dict: 请求数据
+        @request_dict uid: uid
+        @request_dict channel: 通道
+        @request_dict pay_type: 支付类型
+        @request_dict rank: 套餐id
+        @request_dict cdk: 兑换码
+        @request_dict lang: 语言
+        @param userID: 用户id
+        @param response: 响应
+        @return: response
+        """
+        logger = logging.getLogger('info')
+        uid = request_dict.get('uid', None)
+        channel = request_dict.get('channel', None)
+        pay_type = int(request_dict.get('pay_type', 10))
+        rank = request_dict.get('rank', None)
+        cdk = request_dict.get('cdk', None)
+        lang = request_dict.get('lang', 'en')
+
+        # 使用redis设置唯一key加锁
+        redisObj = RedisObject()
+        redis_key = uid + 'do_experience_ai_order'
+        isLock = redisObj.CONN.setnx(redis_key, 1)
+        redisObj.CONN.expire(redis_key, 60)
+        if not isLock:
+            return response.json(5)
+
+        try:
+            if pay_type == 10:  # 判断是否已体验过套餐
+                exc_ai_qs = ExperienceAiModel.objects.filter(uid=uid, experience_type=0)
+                if exc_ai_qs.exists():
+                    return response.json(5)
+
+            if cdk is not None and pay_type == 11:  # 兑换码体验
+                cdk_qs = CDKcontextModel.objects.filter(cdk=cdk).values('is_activate', 'rank__id',
+                                                                        'rank__commodity_code')
+                if not cdk_qs.exists():
+                    return response.json(10040)
+                if cdk_qs[0]['is_activate'] == 1:
+                    return response.json(10039)
+                rank = cdk_qs[0]['rank__id']
+
+            if not all([uid, channel, rank]):
+                redisObj.del_data(key=redis_key)
+                return response.json(444)
+
+            # 判断是否为主用户操作
+            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 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)
+            if not dv_qs.exists():
+                return response.json(12)
+
+            orderID = CommonService.createOrderID()
+            nowTime = int(time.time())
+            ai_store_meal_qs = AiStoreMeal.objects.filter(id=rank, lang__lang=lang, is_show=1). \
+                values('lang__content', 'price', 'currency', 'effective_day')
+            if not ai_store_meal_qs.exists():
+                return response.json(173)
+
+            effective_day = ai_store_meal_qs[0]['effective_day']
+            endTime = int(time.time()) + effective_day * 24 * 60 * 60  # 套餐结束时间
+
+            # 查询中文套餐名
+            ai_cn_store_meal_qs = AiStoreMeal.objects.filter(id=rank, lang__lang='cn', is_show=1). \
+                values('lang__content', 'lang__title')
+            if ai_cn_store_meal_qs.exists():
+                store_meal_name = ai_cn_store_meal_qs[0]['lang__title'] + '-' + ai_cn_store_meal_qs[0]['lang__content']
+            else:
+                store_meal_name = '未知套餐'
+
+            with transaction.atomic():
+                # 订单表创建数据
+                Order_Model.objects.create(orderID=orderID, UID=uid, channel=channel, userID_id=userID,
+                                           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体验',
+                                           store_meal_name=store_meal_name, order_type=1,
+                                           rank_id=1, ai_rank_id=rank, status=1)
+                # ai服务表创建数据
+                AiService.objects.create(uid=uid, channel=channel, orders_id=orderID, detect_status=1, endTime=endTime,
+                                         addTime=nowTime, updTime=nowTime, use_status=1)
+                logger.info('{}成功开通AI体验,结束时间{}'.format(uid, endTime))
+                if pay_type == 10:
+                    ExperienceAiModel.objects.create(
+                        experience_type=0,
+                        uid=uid,
+                        do_time=nowTime
+                    )
+                elif pay_type == 11:
+                    CDKcontextModel.objects.filter(cdk=cdk).update(is_activate=1, order=orderID)
+
+                redisObj.del_data(key=redis_key)
+                pay_ok_url = "{}cloudstorage/payOK?paytype={}&lang={}".format(SERVER_DOMAIN_SSL, pay_type, lang)
+                return response.json(0, pay_ok_url)
+        except Exception as e:
+            print(e)
+            redisObj.del_data(key=redis_key)
+            return response.json(474)
+
+    def do_create_pay_order(self, request_dict, request, userID, response):
+        """
+        创建支付订单
+        @param request_dict: 请求数据
+        @param request: 请求体
+        @request_dict uid: uid
+        @request_dict channel: 通道
+        @request_dict pay_type: 支付类型
+        @request_dict rank: 套餐id
+        @request_dict lang: 语言
+        @param userID: 用户id
+        @param response: 响应
+        @return: response
+        """
+        uid = request_dict.get('uid', None)
+        channel = request_dict.get('channel', None)
+        pay_type = int(request_dict.get('pay_type', 1))
+        rank = request_dict.get('rank', None)
+        lang = request_dict.get('lang', 'en')
+        if not all([uid, channel, rank]):
+            return response.json(444)
+
+        try:
+            # 获取ai套餐数据
+            ai_sm_qs = AiStoreMeal.objects.filter(id=rank, pay_type=pay_type, is_show=1, lang__lang=lang). \
+                values('lang__title', 'lang__content', 'currency', 'price')
+            if not ai_sm_qs.exists():
+                return response.json(173)
+            title = ai_sm_qs[0]['lang__title']
+            content = ai_sm_qs[0]['lang__content']
+            currency = ai_sm_qs[0]['currency']
+            price = ai_sm_qs[0]['price']
+
+            # 查询中文套餐名
+            ai_store_meal_qs = AiStoreMeal.objects.filter(id=rank, is_show=1, lang__lang='cn'). \
+                values('lang__title', 'lang__content')
+            if ai_store_meal_qs.exists():
+                store_meal_name = ai_store_meal_qs[0]['lang__title'] + '-' + ai_store_meal_qs[0]['lang__content']
+            else:
+                store_meal_name = '未知套餐'
+
+            nowTime = int(time.time())
+            orderID = CommonService.createOrderID()
+            price = round(float(price), 2)
+
+            order_dict = {
+                'orderID': orderID,
+                'UID': uid,
+                'channel': channel,
+                'userID_id': userID,
+                'desc': content,
+                'payType': pay_type,
+                'payTime': nowTime,
+                'price': price,
+                'currency': currency,
+                'addTime': nowTime,
+                'updTime': nowTime,
+                'ai_rank_id': rank,
+                'rank_id': 1,
+                'order_type': 1,
+                'store_meal_name': store_meal_name
+            }
+
+            # 创建订单数据和返回支付回调链接
+            if pay_type == 1:  # PayPal支付
+                order_dict['paymentID'], order_dict['pay_url'] = self.create_paypal_payment(lang, orderID, price,
+                                                                                            currency, content, response)
+                res_data = {'redirectUrl': order_dict['pay_url'], 'orderID': orderID}
+            elif pay_type == 2:  # 支付宝
+                order_dict['pay_url'] = self.create_alipay_payment(lang, orderID, price, title, content, response)
+                res_data = {'redirectUrl': order_dict['pay_url'], 'orderID': orderID}
+            elif pay_type == 3:  # 微信支付
+                ip = CommonService.get_ip_address(request)
+                order_dict['pay_url'], sign_params = self.create_wechat_payment(lang, orderID, price, ip, content,
+                                                                                response)
+                res_data = {'redirectUrl': order_dict['pay_url'], 'orderID': orderID, 'result': sign_params}
+            else:
+                return response.json(444, {'param': 'pay_type'})
+            Order_Model.objects.create(**order_dict)
+            return response.json(0, res_data)
+        except Exception as e:
+            return response.json(500, repr(e))
+
     @staticmethod
     @staticmethod
     def get_ai_status(request_dict, response):
     def get_ai_status(request_dict, response):
         """
         """
@@ -238,46 +470,6 @@ class AiView(View):
         except Exception as e:
         except Exception as e:
             return response.json(500, repr(e))
             return response.json(500, repr(e))
 
 
-    # 获取AI套餐列表
-    @staticmethod
-    def do_commodity_list(request_dict, response):
-        uid = request_dict.get('uid', None)
-        lang = request_dict.get('lang', 'en')
-
-        try:
-            # DVR/NVR设备暂不返回套餐列表
-            device_info_qs = Device_Info.objects.filter(Q(UID=uid), Q(Type__lte=4) | Q(Type=10001))
-            if device_info_qs.exists():
-                return response.json(0)
-
-            # 没免费体验过的设备只返回体验套餐数据,体验过的不再返回
-            exc_ai_qs = ExperienceAiModel.objects.filter(uid=uid, experience_type=0)
-            if exc_ai_qs.exists():
-                ai_meal_qs = AiStoreMeal.objects.filter(~Q(pay_type=10))
-            else:
-                ai_meal_qs = AiStoreMeal.objects.filter(pay_type=10)
-
-            # 查询套餐数据
-            ai_meal_qs = ai_meal_qs.filter(is_show=1, lang__lang=lang). \
-                annotate(ai_meal_id=F('id'), title=F('lang__title'), content=F('lang__content')). \
-                values("ai_meal_id", "title", "content", "price", "effective_day", "currency", "virtual_price",
-                       "symbol", "is_beta")
-            if not ai_meal_qs.exists():
-                return response.json(0)
-
-            # 查询每种套餐的所有支付方式
-            ai_meal_list = list(ai_meal_qs)
-            for ai_meal in ai_meal_list:
-                pay_type_qs = Pay_Type.objects.filter(aistoremeal=ai_meal['ai_meal_id']).values('id', 'payment')
-                ai_meal['pay_type'] = list(pay_type_qs)
-            result = {
-                'meals': ai_meal_list,
-            }
-            return response.json(0, result)
-        except Exception as e:
-            print(e)
-            return response.json(500, repr(e))
-
     def do_querylist(self, userID, request_dict, response):
     def do_querylist(self, userID, request_dict, response):
         page = request_dict.get('page', None)
         page = request_dict.get('page', None)
         line = request_dict.get('line', None)
         line = request_dict.get('line', None)
@@ -363,181 +555,6 @@ class AiView(View):
             print(e)
             print(e)
             return response.json(500, repr(e))
             return response.json(500, repr(e))
 
 
-    # 体验AI套餐
-    @staticmethod
-    def experience_order(request_dict, userID, response):
-        logger = logging.getLogger('info')
-        uid = request_dict.get('uid', None)
-        channel = request_dict.get('channel', None)
-        pay_type = int(request_dict.get('pay_type', None))
-        rank = request_dict.get('rank', None)
-        cdk = request_dict.get('cdk', None)
-        lang = request_dict.get('lang', 'en')
-
-        # 使用redis设置唯一key加锁
-        redisObj = RedisObject()
-        redis_key = uid + 'do_experience_ai_order'
-        isLock = redisObj.CONN.setnx(redis_key, 1)
-        redisObj.CONN.expire(redis_key, 60)
-        if not isLock:
-            return response.json(5)
-        try:
-            if pay_type == 10:  # 判断是否已体验过套餐
-                exc_ai_qs = ExperienceAiModel.objects.filter(uid=uid, experience_type=0)
-                if exc_ai_qs.exists():
-                    return response.json(5)
-
-            if cdk is not None and pay_type == 11:
-                cdk_qs = CDKcontextModel.objects.filter(cdk=cdk).values('is_activate', 'rank__id',
-                                                                        'rank__commodity_code')
-                if not cdk_qs.exists():
-                    return response.json(10040)
-                if cdk_qs[0]['is_activate'] == 1:
-                    return response.json(10039)
-                rank = cdk_qs[0]['rank__id']
-
-            if uid is None or channel is None or pay_type is None or rank is None:
-                redisObj.del_data(key=redis_key)
-                return response.json(444)
-
-            # 判断是否为主用户操作
-            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 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)
-            if not dv_qs.exists():
-                return response.json(12)
-
-            orderID = CommonService.createOrderID()
-            nowTime = int(time.time())
-            ai_store_meal_qs = AiStoreMeal.objects.filter(id=rank, lang__lang=lang, is_show=1). \
-                values('lang__content', 'price', 'currency', 'effective_day')
-            if not ai_store_meal_qs.exists():
-                return response.json(173)
-
-            effective_day = ai_store_meal_qs[0]['effective_day']
-            endTime = int(time.time()) + effective_day * 24 * 60 * 60  # 套餐结束时间
-            ai_cn_store_meal_qs = AiStoreMeal.objects.filter(id=rank, lang__lang='cn', is_show=1). \
-                values('lang__content', 'lang__title')
-            if ai_cn_store_meal_qs.exists():
-                store_meal_name = ai_cn_store_meal_qs[0]['lang__title'] + '-' + ai_cn_store_meal_qs[0]['lang__content']
-            else:
-                store_meal_name = '未知套餐'
-            with transaction.atomic():
-                # 订单表创建数据
-                Order_Model.objects.create(orderID=orderID, UID=uid, channel=channel, userID_id=userID,
-                                           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体验',
-                                           store_meal_name=store_meal_name, order_type=1,
-                                           rank_id=1, ai_rank_id=rank, status=1)
-                # ai服务表创建数据
-                AiService.objects.create(uid=uid, channel=channel, orders_id=orderID, detect_status=1, endTime=endTime,
-                                         addTime=nowTime, updTime=nowTime, use_status=1)
-                logger.info('{}成功开通AI体验,结束时间{}'.format(uid, endTime))
-                if pay_type == 10:
-                    ExperienceAiModel.objects.create(
-                        experience_type=0,
-                        uid=uid,
-                        do_time=nowTime
-                    )
-
-                elif pay_type == 11:
-                    CDKcontextModel.objects.filter(cdk=cdk).update(is_activate=1, order=orderID)
-
-                redisObj.del_data(key=redis_key)
-                pay_ok_url = "{}cloudstorage/payOK?paytype={}&lang={}".format(SERVER_DOMAIN_SSL, pay_type, lang)
-                return response.json(0, pay_ok_url)
-        except Exception as e:
-            print(e)
-            redisObj.del_data(key=redis_key)
-            return response.json(474)
-
-    def do_create_pay_order(self, request_dict, request, userID, response):
-        uid = request_dict.get('uid', None)
-        channel = request_dict.get('channel', None)
-        pay_type = int(request_dict.get('pay_type', 1))
-        rank = request_dict.get('rank', None)
-        lang = request_dict.get('lang', 'en')
-        if not uid or not channel or not pay_type or not rank:
-            return response.json(444)
-
-        try:
-            # 判断是否为主用户
-            # dv_qs = Device_Info.objects.filter(userID_id=userID, UID=uid, isShare=False, isExist=1).values(
-            #     'vodPrimaryUserID',
-            #     'vodPrimaryMaster')
-            # if not dv_qs.exists():
-            #     return response.json(12)
-
-            # dvq = Device_Info.objects.filter(UID=uid)
-            # dvq = dvq.filter(~Q(vodPrimaryUserID='')).values('vodPrimaryUserID')
-            # if dvq.exists():
-            #     if dvq[0]['vodPrimaryUserID'] != userID:
-            #         return response.json(10033)
-
-            # 获取ai套餐数据
-            ai_sm_qs = AiStoreMeal.objects.filter(id=rank, pay_type=pay_type, is_show=1, lang__lang=lang). \
-                values('lang__title', 'lang__content', 'currency', 'price')
-            if not ai_sm_qs.exists():
-                return response.json(173)
-            title = ai_sm_qs[0]['lang__title']
-            content = ai_sm_qs[0]['lang__content']
-            currency = ai_sm_qs[0]['currency']
-            price = ai_sm_qs[0]['price']
-            ai_store_meal_qs = AiStoreMeal.objects.filter(id=rank, is_show=1, lang__lang='cn'). \
-                values('lang__title', 'lang__content')
-            if ai_store_meal_qs.exists():
-                store_meal_name = ai_store_meal_qs[0]['lang__title'] + '-' + ai_store_meal_qs[0]['lang__content']
-            else:
-                store_meal_name = '未知套餐'
-            nowTime = int(time.time())
-            orderID = CommonService.createOrderID()
-            price = round(float(price), 2)
-
-            order_dict = {
-                'orderID': orderID,
-                'UID': uid,
-                'channel': channel,
-                'userID_id': userID,
-                'desc': content,
-                'payType': pay_type,
-                'payTime': nowTime,
-                'price': price,
-                'currency': currency,
-                'addTime': nowTime,
-                'updTime': nowTime,
-                'ai_rank_id': rank,
-                'rank_id': 1,
-                'order_type': 1,
-                'store_meal_name': store_meal_name
-            }
-
-            if pay_type == 1:  # PayPal支付
-                order_dict['paymentID'], order_dict['pay_url'] = self.create_paypal_payment(lang, orderID, price,
-                                                                                            currency, content, response)
-                res_data = {'redirectUrl': order_dict['pay_url'], 'orderID': orderID}
-            elif pay_type == 2:  # 支付宝
-                order_dict['pay_url'] = self.create_alipay_payment(lang, orderID, price, title, content, response)
-                res_data = {'redirectUrl': order_dict['pay_url'], 'orderID': orderID}
-            elif pay_type == 3:  # 微信支付
-                ip = CommonService.get_ip_address(request)
-                order_dict['pay_url'], sign_params = self.create_wechat_payment(lang, orderID, price, ip, content,
-                                                                                response)
-                res_data = {'redirectUrl': order_dict['pay_url'], 'orderID': orderID, 'result': sign_params}
-            else:
-                return response.json(444, {'param': 'pay_type'})
-            Order_Model.objects.create(**order_dict)
-            return response.json(0, res_data)
-        except Exception as e:
-            print(e)
-            return response.json(500, repr(e))
-
     @staticmethod
     @staticmethod
     def create_paypal_payment(lang, orderID, price, currency, content, response):
     def create_paypal_payment(lang, orderID, price, currency, content, response):
         cancel_url = CommonService.get_payment_status_url(lang, 'fail')
         cancel_url = CommonService.get_payment_status_url(lang, 'fail')
@@ -748,174 +765,3 @@ class AiView(View):
             </xml>")
             </xml>")
         else:
         else:
             return HttpResponseRedirect(pay_success_url)
             return HttpResponseRedirect(pay_success_url)
-
-    def upload_s3(self, file_path, upload_path):
-        try:
-            aws_key = "AKIA2E67UIMD45Y3HL53"  # 【你的 aws_access_key】
-            aws_secret = "ckYLg4Lo9ZXJIcJEAKkzf2rWvs8Xth1FCjqiAqUw"  # 【你的 aws_secret_key】
-            session = Session(aws_access_key_id=aws_key,
-                              aws_secret_access_key=aws_secret,
-                              region_name="us-east-1")
-            s3 = session.resource("s3")
-            # client = session.client("s3")
-            bucket = "foreignpush"  # 【你 bucket 的名字】 # 首先需要保.证 s3 上已经存在该存储桶,否则报错
-            upload_data = open(file_path, "rb")
-            # upload_key = "test"
-            s3.Bucket(bucket).put_object(Key=upload_path, Body=upload_data)
-            return True
-        except Exception as e:
-            print(repr(e))
-            return False
-
-    def queryInfo(self, userID, request_dict, response):
-        page = int(request_dict.get('page', None))
-        line = int(request_dict.get('line', None))
-        if not page or not line:
-            return response.json(444, 'page,line')
-        startTime = request_dict.get('startTime', None)
-        endTime = request_dict.get('endTime', None)
-        eventType = request_dict.get('eventType', None)
-
-        now_time = int(time.time())
-        seven_days_ago = now_time - 7 * 24 * 3600  # 查询7天内的数据
-        qs = Ai_Push_Info.objects.filter(userID_id=userID, eventTime__gt=seven_days_ago).order_by('-eventTime')
-
-        if startTime and endTime:
-            qs = qs.filter(eventTime__range=(startTime, endTime))
-        # if eventType:
-        #     qs = qs.filter(eventType__contains=eventType)
-        uids = request_dict.get('uids', None)
-        if uids:
-            uid_list = uids.split(',')
-            qs = qs.filter(devUid__in=uid_list)
-            dvqs = Device_Info.objects.filter(UID__in=uid_list, userID_id=userID).values('UID', 'Type', 'NickName')
-            uid_type_dict = {}
-            for dv in dvqs:
-                uid_type_dict[dv['UID']] = {'type': dv['Type'], 'NickName': dv['NickName']}
-        else:
-            dvqs = Device_Info.objects.filter(userID_id=userID).values('UID', 'Type', 'NickName')
-            uid_type_dict = {}
-            for dv in dvqs:
-                uid_type_dict[dv['UID']] = {'type': dv['Type'], 'NickName': dv['NickName']}
-
-        if not qs.exists():
-            return response.json(0, {'datas': [], 'count': 0})
-
-        count = qs.count()
-        qs = qs.values('id', 'devUid', 'devNickName', 'Channel', 'eventType', 'status', 'alarm', 'eventTime',
-                       'receiveTime', 'is_st', 'addTime', 'storage_location')
-
-        qs = qs[(page - 1) * line:page * line]
-        res = []
-
-        aws_s3_client = boto3.client(
-            's3',
-            aws_access_key_id=AWS_ACCESS_KEY_ID[0],
-            aws_secret_access_key=AWS_SECRET_ACCESS_KEY[0],
-            config=botocore.client.Config(signature_version='s3v4'),
-            region_name='cn-northwest-1'
-        )
-
-        for p in qs:
-            p['eventType'] = int(p['eventType'][0])
-            devUid = p['devUid']
-            eventTime = p['eventTime']
-            channel = p['Channel']
-            storage_location = p['storage_location']
-            if p['is_st'] == 1:
-                s3_img_cover = '{uid}/{channel}/cover{time}.jpg'.format(uid=devUid, channel=channel, time=eventTime)
-                s3_img_desc = '{uid}/{channel}/desc{time}.jpg'.format(uid=devUid, channel=channel, time=eventTime)
-                response_url_cover = aws_s3_client.generate_presigned_url('get_object',
-                                                                          ExpiresIn=300,
-                                                                          Params={
-                                                                              'Bucket': 'aipush', 'Key': s3_img_cover
-                                                                          },
-                                                                          )
-                response_url_desc = aws_s3_client.generate_presigned_url('get_object',
-                                                                         ExpiresIn=300,
-                                                                         Params={
-                                                                             'Bucket': 'aipush', 'Key': s3_img_desc
-                                                                         },
-                                                                         )
-                p['img'] = response_url_cover
-                p['img_list'] = [response_url_desc]
-
-            elif p['is_st'] == 2:
-                pass
-            elif p['is_st'] == 3:
-                # 列表装载回放时间戳标记
-                p['img_list'] = []
-                for i in range(4):
-                    thumbspng = '{uid}/{channel}/{time}_{st}.jpg'.format(uid=devUid, channel=p['Channel'],
-                                                                         time=eventTime, st=i)
-                    response_url = aws_s3_client.generate_presigned_url('get_object',
-                                                                        ExpiresIn=300,
-                                                                        Params={
-                                                                            'Bucket': 'aipush', 'Key': thumbspng
-                                                                        },
-                                                                        )
-                    p['img_list'].append(response_url)
-
-            if devUid in uid_type_dict.keys():
-                p['uid_type'] = uid_type_dict[devUid]['type']
-                p['devNickName'] = uid_type_dict[devUid]['NickName']
-            else:
-                p['uid_type'] = ''
-            res.append(p)
-        return response.json(0, {'datas': res, 'count': count})
-
-    def readInfo(self, userID, request_dict, response):
-        is_update_all = request_dict.get('is_update_all', 0)
-
-        try:
-            if int(is_update_all) == 1:  # 全部已读
-                is_update = Ai_Push_Info.objects.filter(userID_id=userID).update(status=1)
-                return response.json(0, {'update_count': is_update})
-            else:
-                id_list = request_dict.get('id_list', None)
-                if not id_list:
-                    request_dict.getlist('id_list[]', None)  # 获取IOS数组传参
-                logger = logging.getLogger('info')
-                logger.info('已读ai消息id_list:{}'.format(id_list))
-                if not id_list:
-                    return response.json(444)
-                id_list = eval(id_list)  # 字符串转列表
-                param_flag = CommonService.get_param_flag(data=id_list)
-                if not param_flag:
-                    return response.json(444)
-                count = 0
-                for id in id_list:
-                    ai_push_qs = Ai_Push_Info.objects.filter(id=int(id))
-                    if ai_push_qs.exists():
-                        own_dev = ModelService.check_own_device(userID, ai_push_qs[0].devUid)
-                        if own_dev:
-                            count += 1
-                            ai_push_qs.update(status=1)
-                return response.json(0, {'update_success': count})
-        except Exception as e:
-            print(e)
-            return response.json(500, repr(e))
-
-    def deleteInfo(self, userID, request_dict, response):
-        id_list = request_dict.get('id_list', None)
-        if not id_list:
-            request_dict.getlist('id_list[]', None)  # 获取IOS数组传参
-        logger = logging.getLogger('info')
-        logger.info('删除ai消息id_list:{}'.format(id_list))
-        if not id_list:
-            return response.json(444)
-        try:
-            id_list = eval(id_list)  # 字符串转列表
-            param_flag = CommonService.get_param_flag(data=id_list)
-            if not param_flag:
-                return response.json(444)
-            for id in id_list:
-                ai_push_qs = Ai_Push_Info.objects.filter(id=id)
-                if ai_push_qs.exists():
-                    own_dev = ModelService.check_own_device(userID, ai_push_qs[0].devUid)
-                    if own_dev:
-                        ai_push_qs.delete()
-            return response.json(0)
-        except Exception as e:
-            print(e)
-            return response.json(500, repr(e))