Эх сурвалжийг харах

解决序列号解绑UID,4G设备无法添加问题

zhangdongming 1 жил өмнө
parent
commit
15c2d8c9bf

+ 2 - 31
Controller/SerialNumberController.py

@@ -15,7 +15,7 @@ from Controller.UnicomCombo.UnicomComboController import UnicomComboView
 from Model.models import SerialNumberModel, CompanySerialModel, UIDCompanySerialModel, UIDModel, Device_Info, \
     iotdeviceInfoModel, LogModel, UidSetModel, UID_Bucket, \
     Unused_Uid_Meal, Order_Model, StsCrdModel, VodHlsModel, ExperienceContextModel, UidUserModel, ExperienceAiModel, \
-    AiService, DeviceDomainRegionModel, RegionModel, UidPushModel, UnicomDeviceInfo
+    AiService, DeviceDomainRegionModel, RegionModel, UidPushModel
 from Object.AWS.S3Email import S3Email
 from Object.RedisObject import RedisObject
 from Object.TokenObject import TokenObject
@@ -606,7 +606,7 @@ class SerialNumberView(View):
 
         try:
             if company_serial.status == 0 or company_serial.status == 1:  # 未使用
-                self.is_4g_device(serial_number, request_dict, request)
+                UnicomComboView().is_4g_device(serial_number, request_dict, request)
                 return response.json(173)
             elif company_serial.status == 2:  # 返回uid
                 res = self.get_uid_info_by_serial(company_serial.id)
@@ -905,32 +905,3 @@ class SerialNumberView(View):
         except Exception as e:
             LOGGER.info('{}同步iot异常,errLine:{}, errMsg:{}'.format(serial_number, e.__traceback__.tb_lineno, repr(e)))
             return False
-
-    @staticmethod
-    def is_4g_device(serial_number, request_dict, request):
-        """
-        判断是否4G设备
-        """
-        try:
-            serial_no = serial_number[0:9]
-            key = f'ASJ:UNICOM:CARD:ACTIVATE:{serial_no}'
-            redis = RedisObject()
-            if redis.get_data(key):
-                return True
-            # 根据序列号查询联通iccid
-            unicom_qs = UnicomDeviceInfo.objects.filter(serial_no=serial_no, status=1, card_type=0) \
-                .values('iccid', 'status')
-            if not unicom_qs.exists():
-                return False
-            # 针对库存设备,此步骤激活测试流量
-            unicom_qs = unicom_qs[0]
-            UnicomComboView().activate_test_flow_package(serial_no)
-            redis.CONN.setnx(key, str(unicom_qs['iccid']))
-            redis.CONN.expire(key, 3600 * 24)  # 已调用过激活两个小时内不可调用
-            ip = CommonService.get_ip_address(request)
-            describe = '{}获取uid请求激活4G卡,{}'.format(serial_no, unicom_qs['iccid'])
-            UnicomComboView().create_operation_log('serialNumber/get-uid', ip, request_dict, describe)
-            return True
-        except Exception as e:
-            LOGGER.info('{}判断是否4G设备异常,errLine:{}, errMsg:{}'.format(serial_number, e.__traceback__.tb_lineno, repr(e)))
-            return False

+ 44 - 0
Controller/UnicomCombo/UnicomComboController.py

@@ -24,6 +24,7 @@ from Model.models import UnicomDeviceInfo, UnicomCombo, Pay_Type, Order_Model, S
     DeviceLiveRestrict
 from Object.EIoTClubObject import EIoTClubObject
 from Object.Enums.WXOperatorEnum import WXOperatorEnum
+from Object.RedisObject import RedisObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.UnicomObject import UnicomObjeect
@@ -1056,3 +1057,46 @@ class UnicomComboView(View):
             LOGGER.info('UnicomManageControllerView.order_flow_package,{}errLine:{}, errMsg:{}'
                         .format(serial_number, e.__traceback__.tb_lineno, repr(e)))
             return False
+
+    @staticmethod
+    def is_4g_device(serial_number, request_dict, request):
+        """
+        序列号未绑定UID时调用
+        判断是否4G设备(如卡停用,判断是否符合激活测试流量)
+        为了解决序列号解绑UID后,测试流量用完客户出现无法添加
+        增加赠送5M测试流量
+        """
+        try:
+            serial_no = serial_number[0:9]
+            key = f'ASJ:UNICOM:CARD:ACTIVATE:{serial_no}'
+            redis = RedisObject()
+            if redis.get_data(key):
+                return True
+            # 根据序列号查询联通iccid
+            unicom_qs = UnicomDeviceInfo.objects.filter(serial_no=serial_no, card_type=0) \
+                .values('iccid', 'status')
+            if not unicom_qs.exists():
+                return False
+            # 针对库存设备,此步骤激活测试流量
+            unicom_qs = unicom_qs[0]
+
+            order_package = UnicomComboOrderInfo.objects.filter(iccid=unicom_qs['iccid'], status=1)
+            if not order_package:  # 当前iccid不存在正在使用的套餐
+                # 查询出厂其它测试流量(特殊套餐5M为了解决客户停卡添加设备)
+                flow_combo_qs = UnicomCombo.objects.filter(combo_type=5, is_del=False)
+                if not flow_combo_qs:
+                    return False
+
+                package_id = flow_combo_qs.first().id
+                UnicomComboView().generate_flow_package(serial_number, package_id, '151564262337939513800138001')
+                redis.CONN.setnx(key, str(unicom_qs['iccid']))
+                redis.CONN.expire(key, 3600 * 24)  # 当天赠送过测试流量的设备缓存24小时
+                ip = CommonService.get_ip_address(request)
+                describe = '{}获取uid请求激活4G卡,{}'.format(serial_no, unicom_qs['iccid'])
+                UnicomComboView().create_operation_log('serialNumber/get-uid', ip, request_dict, describe)
+                return True
+            LOGGER.info(f'{serial_number}有正在使用的套餐')
+            return True
+        except Exception as e:
+            LOGGER.info('{}判断是否4G设备异常,errLine:{}, errMsg:{}'.format(serial_number, e.__traceback__.tb_lineno, repr(e)))
+            return False