Bläddra i källkod

修复个性语音俄语返回空数据问题、新增后台重置联通4G流量接口

zhangdongming 2 år sedan
förälder
incheckning
914899dfee
2 ändrade filer med 97 tillägg och 3 borttagningar
  1. 93 2
      AdminController/UnicomManageController.py
  2. 4 1
      Controller/VoicePromptController.py

+ 93 - 2
AdminController/UnicomManageController.py

@@ -5,10 +5,12 @@
 # @File    : UnicomManageController.py
 # @Software: PyCharm
 import hashlib
+import json
 import time
 import uuid
-
+from Ansjer.config import CONFIG_INFO
 import openpyxl
+import requests
 from django.db import transaction, connection
 from django.http import HttpResponse
 from django.views.generic.base import View
@@ -16,7 +18,7 @@ from django.views.generic.base import View
 from Ansjer.config import LOGGER
 from Controller.UnicomCombo.UnicomComboController import UnicomComboView
 from Model.models import UnicomDeviceInfo, UnicomCombo, Pay_Type, UnicomComboOrderInfo, Device_User, Order_Model, \
-    ExchangeCode
+    ExchangeCode, UnicomFlowPush, SysMsgModel, UnicomComboExperienceHistory, LogModel
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.UnicomObject import UnicomObjeect
@@ -78,9 +80,98 @@ class UnicomManageControllerView(View):
                 return self.get_iccid_info(request_dict, response)
             elif operation == 'batchGenerateCDK':  # 批量生成兑换码
                 return self.create_package_cdk(request_dict, response)
+            elif operation == 'resetCardPackage':
+                return self.reset_card_package(request, request_dict, response)
             else:
                 return response.json(404)
 
+    @classmethod
+    def reset_card_package(cls, request, request_dict, response):
+        try:
+            serial_number = request_dict.get('serialNumber', None)
+            if not serial_number:
+                return response.json(444)
+            device_info_qs = UnicomDeviceInfo.objects.filter(serial_no=serial_number)
+            now_time = int(time.time())
+            if device_info_qs.exists():  # 首先查询SIM卡绑定信息是否存在
+                iccid = device_info_qs.first().iccid
+                if device_info_qs.first().card_type == 1:
+                    return response.json(0)
+                flow_push_qs = UnicomFlowPush.objects.filter(serial_no=serial_number)
+                if flow_push_qs.exists():  # 删除流量预警推送
+                    flow_push_qs.delete()
+                sys_msg_qs = SysMsgModel.objects.filter(uid=serial_number)
+                if sys_msg_qs.exists():  # 删除有关系统消息数据
+                    sys_msg_qs.delete()
+                # 将4G用户信息状态改为已完成测试状态
+                device_info_qs.update(status=1, updated_time=now_time, user_id='')
+                combo_order_qs = UnicomComboOrderInfo.objects.filter(iccid=iccid)
+                if combo_order_qs.exists():
+                    combo_order_qs.delete()
+                combo_experience_history_qs = UnicomComboExperienceHistory.objects.filter(iccid=iccid)
+                if combo_experience_history_qs.exists():
+                    combo_experience_history_qs.delete()
+                UnicomObjeect().change_device_to_activate(iccid)
+                ip = CommonService.get_ip_address(request)
+                describe = '重置4G流量序列号{},iccid:{}'.format(serial_number, iccid)
+                cls.generate_card_package_order(iccid, serial_number)
+                cls.create_operation_log('unicom/manage/resetCardPackage', ip, request_dict, describe)
+                return response.json(0)
+            return response.json(173)
+        except Exception as e:
+            LOGGER.info('异常详情,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+            return response.json(500)
+
+    @classmethod
+    def generate_card_package_order(cls, iccid, serial_number):
+        """
+        模拟设备上电赠送1G
+        @param iccid:
+        @param serial_number:
+        @return:
+        """
+        url = 'https://www.zositechc.cn/' if CONFIG_INFO == 'cn' else 'https://test.zositechc.cn/'
+        url = url + 'unicom/api/device-bind'
+        now_time = int(time.time())
+        sign = CommonService.encode_data(str(now_time))
+        data = {
+            'iccid': iccid,
+            'serialNo': serial_number,
+            'timeStamp': now_time,
+            'sign': sign,
+            'sim': 1
+        }
+        response = requests.post(url=url, data=data, timeout=5)
+        LOGGER.info(f"生成体验套餐结果:{json.loads(response.text)}")
+
+    @classmethod
+    def create_operation_log(cls, url, ip, request_dict, describe):
+        """
+        存入操作日志
+        @param url: 请求路径
+        @param describe: 描述
+        @param ip: 当前IP
+        @param request_dict: 请求参数
+        @return: True | False
+        """
+        try:
+            # 记录操作日志
+            content = json.loads(json.dumps(request_dict))
+            log = {
+                'ip': ip,
+                'user_id': 1,
+                'status': 200,
+                'time': int(time.time()),
+                'content': json.dumps(content),
+                'url': url,
+                'operation': describe,
+            }
+            LogModel.objects.create(**log)
+            return True
+        except Exception as e:
+            print('日志异常,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+            return False
+
     def get_user_info(self, request_dict, response):
         """
         获取/筛选卡用户信息

+ 4 - 1
Controller/VoicePromptController.py

@@ -173,7 +173,7 @@ class VoicePromptView(View):
             return response.json(444)
 
     def do_query(self, request_dict, response):
-        lang = request_dict.get('lang', None)
+        lang = request_dict.get('lang', 'en')
         uid = request_dict.get('uid', None)
         channel = request_dict.get('channel', None)
         # 个性语音增加算法类型区分默认0兼容老版本
@@ -184,6 +184,9 @@ class VoicePromptView(View):
                                                        algorithm_type=algorithm_type)
             system_qs = VoicePromptModel.objects.filter(classification=0, language=lang, status=1,
                                                         algorithm_type=algorithm_type)
+            if not system_qs.exists() and lang != 'en':
+                system_qs = VoicePromptModel.objects.filter(classification=0, language='en', status=1,
+                                                            algorithm_type=algorithm_type)
             channel_qs = UidChannelSetModel.objects.filter(uid__uid=uid, channel=channel,
                                                            algorithm_type=algorithm_type)