Просмотр исходного кода

激活、停用、流量套餐兼容鼎芯4G

zhangdongming 1 год назад
Родитель
Сommit
1885ac43f2

+ 38 - 11
AdminController/UnicomManageController.py

@@ -24,7 +24,8 @@ from Ansjer.config import CONFIG_INFO
 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, UnicomFlowPush, SysMsgModel, UnicomComboExperienceHistory, LogModel, SerialNumberPackage
+    ExchangeCode, UnicomFlowPush, SysMsgModel, UnicomComboExperienceHistory, LogModel, SerialNumberPackage, \
+    AccessNumberTaskQueue
 from Object.Enums.WXOperatorEnum import WXOperatorEnum
 from Object.RedisObject import RedisObject
 from Object.ResponseObject import ResponseObject
@@ -33,6 +34,7 @@ from Object.UnicomObject import UnicomObjeect
 from Object.WXTechObject import WXTechObject
 from Service.CommonService import CommonService
 from Object.EIoTClubObject import EIoTClubObject
+from Service.TelecomService import TelecomService
 
 
 class UnicomManageControllerView(View):
@@ -310,7 +312,8 @@ class UnicomManageControllerView(View):
                         'userID': unicom_device.user_id, 'cardType': unicom_device.card_type,
                         'status': unicom_device.status, 'mainCard': unicom_device.main_card,
                         'createdTime': unicom_device.created_time, 'updatedTime': unicom_device.updated_time,
-                        'cardStatus': self.get_device_status_by_iccid(unicom_device.iccid, unicom_device.card_type)}
+                        'cardStatus': self.get_device_status_by_iccid(unicom_device.iccid, unicom_device.card_type,
+                                                                      unicom_device.access_number)}
                 device_user_qs = Device_User.objects.filter(userID=unicom_device.user_id).values('username', 'NickName',
                                                                                                  'phone')
                 data['userName'] = device_user_qs[0]['username'] if device_user_qs.exists() else ''
@@ -823,7 +826,7 @@ class UnicomManageControllerView(View):
             return response.json(0, {'packageList': package_list})
         iccid = ud_qs[0]['iccid']
         card_type = ud_qs[0]['card_type']
-        if card_type == 0:
+        if card_type == 0 or card_type == 3:
             o_qs = UnicomComboOrderInfo.objects.filter(iccid=iccid) \
                 .values('status', 'flow_total_usage', 'flow_exceed', 'activation_time', 'expire_time',
                         'combo__combo_name', 'combo__flow_total', 'updated_time') \
@@ -835,8 +838,8 @@ class UnicomManageControllerView(View):
             data = {'iccid': iccid, 'operator': 3}
             return response.json(0, {'package_list': cls.get_wx_package_list(**data)})
         if card_type == 5:
-            data = {'iccid': iccid, 'timestamp': int(time.time()), 'nonce': random.randint(10000, 99999) }
-            original_data = EIoTClubObject.query_order_record_list("v3",**data)
+            data = {'iccid': iccid, 'timestamp': int(time.time()), 'nonce': random.randint(10000, 99999)}
+            original_data = EIoTClubObject.query_order_record_list("v3", **data)
             return response.json(0, {'package_list': cls.get_dx_package_list(original_data)})
         return response.json(0, {'package_list': package_list})
 
@@ -904,20 +907,40 @@ class UnicomManageControllerView(View):
             return []
 
     @staticmethod
-    def get_device_status_by_iccid(iccid, card_type):
+    def get_device_status_by_iccid(iccid, card_type, access_number=''):
         try:
             re_data = {'iccid': iccid}
             if card_type == 0:
+
                 status_dict = {1: '已激活', 2: '可激活', 3: '已停用', 4: '已失效', 5: '可测试', 6: '库存', 7: '已更换', 8: '已清除'}
                 result = UnicomObjeect().query_device_status(**re_data)
                 res_dict = UnicomObjeect().get_text_dict(result)
                 return status_dict.get(int(res_dict['data']['status']), 'N/A')
+
             elif card_type == 1:
+
                 status_dict = {1: '库存', 2: '可激活', 3: '已激活', 4: '已停用', 5: '已失效', 6: '强制停机'}
                 data = {'iccid': iccid, 'operator': 3}
                 wx_tech = WXTechObject()
                 result = wx_tech.get_cards_info(**data)
                 return status_dict.get(int(result['data']['cardStatusCode']), 'N/A')
+
+            elif card_type == 3:
+
+                status_dict = {'connect': '已激活', 'disconnect': '已停用'}
+                i = 0
+                while i < 3:
+                    status_code = TelecomService().get_access_number_network_status(access_number)
+                    if status_code:
+                        return status_dict.get(status_code, 'N/A')
+                    i += 1
+
+                access_info = AccessNumberTaskQueue.objects.filter(iccid=iccid, status=1) \
+                    .order_by('-completion_time').values('action')
+                if not access_info.exists():
+                    return 'N/A'
+                return '已激活' if access_info[0]['action'] == 2 else '已停用'
+
             else:
                 return 'N/A'
         except Exception as e:
@@ -934,16 +957,20 @@ class UnicomManageControllerView(View):
         if not serial_number:
             return response.json(444)
         status = int(request_dict.get('status', 0))
-        unicom_qs = UnicomDeviceInfo.objects.filter(serial_no=serial_number, card_type=0)
+        unicom_qs = UnicomDeviceInfo.objects.filter(serial_no=serial_number, card_type__in=[0, 3])
         if not unicom_qs.exists():
             return response.json(173)
         unicom_service = UnicomObjeect()
         iccid = unicom_qs.first().iccid
+        access_number = unicom_qs.first().access_number
+        card_type = unicom_qs.first().card_type
         if status == 1:  # 激活
-            unicom_service.change_device_to_activate(iccid)
+            unicom_service.change_device_to_activate(iccid=iccid, card_type=card_type, access_number=access_number,
+                                                     reason='后台操作恢复网络')
             return response.json(0)
         elif status == 3:  # 停用
-            unicom_service.change_device_to_disable(iccid)
+            unicom_service.change_device_to_disable(iccid=iccid, card_type=card_type, access_number=access_number,
+                                                    reason='后台操作断网')
             return response.json(0)
         return response.json(902)
 
@@ -1314,7 +1341,7 @@ class UnicomManageControllerView(View):
                 "used": package.get("flowTotal", 0) - package.get("flowRemain", 0),
                 "activationTime": package.get("startDate", ""),
                 "expireTime": package.get("endDate", ""),
-                "updatedTime": ""  #没有这个数据接口
+                "updatedTime": ""  # 没有这个数据接口
             }
             package_list.append(new_package)
-        return package_list
+        return package_list

+ 7 - 2
Controller/UnicomCombo/UnicomComboController.py

@@ -411,6 +411,11 @@ class UnicomComboView(View):
                 if access_number:
                     params['access_number'] = access_number
                 UnicomDeviceInfo.objects.create(**params)
+
+                result = cls.activate_test_flow_package(serial_no)  # 激活测试流量套餐
+                cls.create_operation_log('unicom/api/device-bind',
+                                         ip, request_dict,
+                                         '4G序列号{}绑定{},testFlowPackage{}'.format(serial_no, iccid, result))
                 return response.json(0)
             elif cls.is_dingxin_iot(iccid):  # 鼎芯物联卡
                 params['card_type'] = 5  # 国际
@@ -888,8 +893,8 @@ class UnicomComboView(View):
                     if status == 1:  # 激活当前使用的套餐,检查卡商网络状态是否为激活
                         card_info = UnicomDeviceInfo.objects.filter(iccid=iccid).values('card_type', 'access_number')
                         if card_info[0]['card_type'] == 3:
-                            unicom_api.change_device_to_activate(iccid, 3, card_info[0]['access_number'],
-                                                                 '激活' + unicom_combo.combo_name)
+                            reason = '激活' + unicom_combo['combo_name']
+                            unicom_api.change_device_to_activate(iccid, 3, card_info[0]['access_number'], reason)
                         else:
                             unicom_api.change_device_to_activate(iccid)
                         flow_total_usage = unicom_api.get_flow_usage_total(iccid, card_info[0]['card_type'])

+ 4 - 3
Controller/UnicomCombo/UnicomComboTaskController.py

@@ -189,9 +189,10 @@ class UnicomComboTaskView(View):
                     logger.info('-->当前卡{}流量已用完,是否有生效套餐:{}'.format(iccid, activate_status))
                     if not activate_status:  # 停用或断网
                         if card_type == 3:  # 鼎芯电信
-                            TelecomService().update_access_number_network(iccid, u_device_info_qs.access_number, 'ADD')
+                            TelecomService().update_access_number_network(iccid, u_device_info_qs.access_number, 'ADD',
+                                                                          '套餐流量已用完')
                         else:
-                            unicom_api.change_device_to_disable(iccid)
+                            unicom_api.change_device_to_disable(iccid=iccid, reason='套餐流量已用完')
 
         except Exception as e:
             logger.info('异步~检测流量用量详情异常,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
@@ -327,7 +328,7 @@ class UnicomComboTaskView(View):
                 result = UnicomComboTaskView().query_unused_combo_and_activate(item, year, month, usage_flow)
                 if not result:  # 没有可用套餐进行停卡
                     # 停用设备
-                    unicom_api.change_device_to_disable(item)
+                    unicom_api.change_device_to_disable(iccid=item, reason='没有可用套餐')
                     logger.info('调用停卡API successful,iccid:{}'.format(item))
                     combo_order_info_qs = UnicomComboOrderInfo.objects.filter(iccid=item, status=2) \
                         .values('id').order_by('-updated_time')

+ 2 - 2
Object/UnicomObject.py

@@ -332,7 +332,7 @@ class UnicomObjeect:
         if not card_info.exists():
             return None
         if card_info[0]['card_type'] == 3:
-            TelecomService.update_access_number_network(iccid, card_info[0]['access_number'], 'DEL')
+            TelecomService.update_access_number_network(iccid, card_info[0]['access_number'], 'DEL', reason)
             return True
         if iccid:
             re_data = {'iccid': iccid}
@@ -361,7 +361,7 @@ class UnicomObjeect:
         if not card_info.exists():
             return None
         if card_info[0]['card_type'] == 3:
-            TelecomService.update_access_number_network(iccid, card_info[0]['access_number'], 'ADD')
+            TelecomService.update_access_number_network(iccid, card_info[0]['access_number'], 'ADD', reason)
             return True
         if iccid:
             re_data = {"iccid": iccid, "status": 3}