瀏覽代碼

优化4G后台管理;优化查询序列号查询各个服绑定状态

guanhailong 2 年之前
父節點
當前提交
9e9c248952
共有 2 個文件被更改,包括 61 次插入50 次删除
  1. 8 11
      AdminController/UnicomManageController.py
  2. 53 39
      Controller/TestApi.py

+ 8 - 11
AdminController/UnicomManageController.py

@@ -30,8 +30,7 @@ class UnicomManageControllerView(View):
         return self.validation(request.POST, request, operation)
 
     def validation(self, request_dict, request, operation):
-        language = request_dict.get('language', 'en')
-        response = ResponseObject(language, 'pc')
+        response = ResponseObject()
         # 获取支付类型
         if operation == 'get/pay':
             return self.get_pay_type(response)
@@ -469,28 +468,26 @@ class UnicomManageControllerView(View):
         userId = request_dict.get('userId', None)
         serialNo = request_dict.get('serialNo', None)
         comboId = request_dict.get('comboId', None)
-        if not all([userId, serialNo, comboId]):
+        iccid = request_dict.get('iccid', None)
+        if not all([userId, serialNo, comboId, iccid]):
             return response.json(444)
         try:
             while transaction.atomic():
-                combo_info_qs = UnicomCombo.objects.first(id=comboId, combo_type=2, status=0) \
+                combo_info_qs = UnicomCombo.objects.filter(id=comboId, combo_type=2, status=0) \
                     .values('id', 'combo_name', 'price', 'virtual_price', 'remark', 'combo_type')
-                unicom_device_info_qs = UnicomDeviceInfo.objects.first(serial_no=serialNo,
-                                                                        user_id=userId).values \
-                    ('iccid', 'serial_no')
+                unicom_device_info_qs = UnicomDeviceInfo.objects.filter(iccid=iccid)
                 if not unicom_device_info_qs.exists() or not combo_info_qs.exists():
                     return response.json(173)
+                combo_info_qs = combo_info_qs.first()
                 n_time = int(time.time())
-                icc_id = unicom_device_info_qs['iccid']
-                serial_no = unicom_device_info_qs['serial_no']
                 order_id = CommonService.createOrderID()  # 生成订单号
                 #  赠送套餐下个月生效
-                unicom_combo = UnicomComboView.create_combo_order_info(order_id=order_id, activate_type=1, iccid=icc_id,
+                unicom_combo = UnicomComboView.create_combo_order_info(order_id=order_id, activate_type=1, iccid=iccid,
                                                                        combo_id=comboId)
                 if unicom_combo is False:
                     return response.json(178)
                 rank_id, ai_rank_id = UnicomComboView.get_cloud_or_ai_combo()  # 生成订单必须添加该字段
-                uid = CommonService.query_uid_with_serial(serial_no)  # 获取序列号或UID
+                uid = CommonService.query_uid_with_serial(serialNo)  # 获取序列号或UID
                 # 获取套餐信息
                 order_dict = {
                     'orderID': order_id,

+ 53 - 39
Controller/TestApi.py

@@ -898,15 +898,21 @@ class testView(View):
             print(e)
             return response.json(500, repr(e))
 
-    @staticmethod
-    def getSerialNumberInfo(request_dict, response):
+    @classmethod
+    def getSerialNumberInfo(cls, request_dict, response):
         logger = logging.getLogger('info')
         serial_number = request_dict.get('serialNumber', None)
         if not serial_number:
             return response.json(444)
+        # 返回序列号
         serialNumber = serial_number[:9]
+        # 查询uid
         serial_number = serial_number[:6]
         try:
+            company_serial_qs = CompanySerialModel.objects.filter(serial_number=serial_number).values('status')
+            if not company_serial_qs.exists():
+                return response.json(173)
+
             uid_user_message = {
                 "uid": "",
                 "serialNumber": "",
@@ -920,52 +926,60 @@ class testView(View):
                 "status": "",
                 "uid_user_message": uid_user_message
             }
-            company_serial_qs = CompanySerialModel.objects.filter(serial_number=serial_number).values('status')
-            if not company_serial_qs.exists():
-                return response.json(173)
-            if company_serial_qs[0]['status'] == 0:
+
+            company_serial_qs = company_serial_qs.first()
+            if company_serial_qs['status'] == 0:
                 return response.json(0, {'contents': '序列号未分配'})
             uid_company_serial_qs = UIDCompanySerialModel.objects.filter(
                 company_serial__serial_number=serial_number).values('uid__uid', 'uid__status',
                                                                     'company_serial__serial_number')
-            if not uid_company_serial_qs.exists() and company_serial_qs[0]['status'] != 0:
-                if company_serial_qs[0]['status'] == 1:
-                    data['status'] = '已分配'
-                if company_serial_qs[0]['status'] == 2:
-                    data['status'] = '绑定uid'
-                if company_serial_qs[0]['status'] == 3:
-                    data['status'] = '已占用'
+            if not uid_company_serial_qs.exists():
+                data['status'] = cls.serial_number_status(company_serial_qs['status'])
                 return response.json(0, data)
-            for uid_company_serial in uid_company_serial_qs:
-                data['uid'] = uid_company_serial['uid__uid']
-                data['serialNumber'] = serialNumber
-                data['status'] = uid_company_serial['uid__status']
-                if company_serial_qs[0]['status'] == 1:
-                    data['status'] = '已分配'
-                if company_serial_qs[0]['status'] == 2:
-                    data['status'] = '绑定uid'
-                if company_serial_qs[0]['status'] == 3:
-                    data['status'] = '已占用'
-                uid = uid_company_serial['uid__uid'] if uid_company_serial['uid__uid'] else ''
-                device_info_qs = Device_Info.objects.filter(UID=uid).values(
-                    'UID',
-                    'serial_number',
-                    'userID_id',
-                    'primaryUserID',
-                    'userID__username')
-                uid_user_message = {
-                    'uid': device_info_qs[0]['UID'] if device_info_qs.exists() else '',
-                    'serialNumber': device_info_qs[0]['serial_number'] if device_info_qs.exists() else '',
-                    'userID': device_info_qs[0]['userID_id'] if device_info_qs.exists() else '',
-                    'username': device_info_qs[0]['userID__username'] if device_info_qs.exists() else '',
-                    'primaryUserID': device_info_qs[0]['primaryUserID'] if device_info_qs.exists() else ''
-                }
-                data['uid_user_message'] = uid_user_message
+            uid_company_serial = uid_company_serial_qs.first()
+            data['uid'] = uid_company_serial['uid__uid']
+            data['serialNumber'] = serialNumber
+            data['status'] = uid_company_serial['uid__status']
+            data['status'] = cls.serial_number_status(company_serial_qs['status'])
+            device_info_qs = Device_Info.objects.filter(UID=data['uid']).values(
+                'UID',
+                'serial_number',
+                'userID_id',
+                'primaryUserID',
+                'userID__username',
+                'data_joined').order_by('-data_joined')
+            if device_info_qs.exists():
+                # 判断主用户是否存在
+                primary_qs = device_info_qs.exclude(primaryUserID='')
+                if primary_qs.exists():
+                    uid_user_message['uid'] = primary_qs['UID'],
+                    uid_user_message['serialNumber'] = primary_qs['serial_number']
+                    uid_user_message['userID'] = primary_qs['userID_id']
+                    uid_user_message['username'] = primary_qs['userID__username']
+                    uid_user_message['primaryUserID'] = primary_qs['primaryUserID']
+                else:
+                    device_info = device_info_qs.first()
+                    uid_user_message['uid'] = device_info['UID']
+                    uid_user_message['serialNumber'] = device_info['serial_number']
+                    uid_user_message['userID'] = device_info['userID_id']
+                    uid_user_message['username'] = device_info['userID__username']
+                    uid_user_message['primaryUserID'] = device_info['primaryUserID']
             return response.json(0, data)
         except Exception as e:
-            logger.info('查询异常:{}'.format(e))
+            logger.error('序列号:{}, 查询异常:{}'.format(serial_number, e))
             return response.json(500)
 
+    @staticmethod
+    def serial_number_status(status):
+        # 判断序号状态
+        if status == 1:
+            status = '已分配'
+        elif status == 2:
+            status = '绑定uid'
+        elif status == 3:
+            status = '已占用'
+        return status
+
     @classmethod
     def get_serial_details(cls, request_dict, response, request):
         """