Quellcode durchsuchen

优化添加4G设备绑定userId代码,iccid绑定序列号新增鼎芯物联卡,物联卡序列号字段增加索引

zhangdongming vor 2 Jahren
Ursprung
Commit
b00b098b76

+ 4 - 3
Controller/EquipmentManagerV3.py

@@ -11,8 +11,7 @@ from django.db import transaction
 from django.db.models import Q
 from django.views.generic.base import View
 
-from Ansjer.config import OSS_STS_ACCESS_SECRET, OSS_STS_ACCESS_KEY, SERVER_DOMAIN_LIST, SERVER_DOMAIN_TEST, \
-    SERVER_DOMAIN_CN, SERVER_DOMAIN_US, SERVER_DOMAIN_EUR
+from Ansjer.config import OSS_STS_ACCESS_SECRET, OSS_STS_ACCESS_KEY
 from Controller.CheckUserData import RandomStr
 from Controller.DeviceConfirmRegion import Device_Region
 from Controller.SensorGateway.EquipmentFamilyController import EquipmentFamilyView
@@ -380,7 +379,9 @@ class EquipmentManagerV3(View):
             if not unicom_device_info_qs[0].user_id:
                 # 生成4G免费订单
                 UnicomComboView.experience_order_4G(unicom_device_info_qs[0].iccid,
-                                                    serial_number, user_id, True)
+                                                    serial_number, user_id, False)
+                UnicomDeviceInfo.objects.filter(iccid=unicom_device_info_qs[0].iccid) \
+                    .update(user_id=user_id, updated_time=int(time.time()))
             return True
         except Exception as e:
             logging.info('创建体验4G订单异常,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))

+ 22 - 8
Controller/UnicomCombo/UnicomComboController.py

@@ -21,6 +21,7 @@ from django.views.generic.base import View
 from Model.models import UnicomDeviceInfo, UnicomCombo, Pay_Type, Order_Model, Store_Meal, AiStoreMeal, \
     UnicomComboOrderInfo, UnicomComboExperienceHistory, UnicomDeviceStatusChangePush, SysMsgModel, UnicomFlowPush, \
     LogModel
+from Object.EIoTClubObject import EIoTClubObject
 from Object.RedisObject import RedisObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
@@ -384,13 +385,6 @@ class UnicomComboView(View):
                 # 待完善代码 根据uid与用户id验证系统设备mdcmd
                 unicom_device_qs = UnicomDeviceInfo.objects.filter(iccid=iccid)
                 if unicom_device_qs.exists():
-                    # if unicom_device_qs.first().status == 1:
-                    #     key = 'ASJ:UNICOM:RESET:{}'.format(serial_no)
-                    #     reset_cache = redis.get_data(key)
-                    #     if reset_cache:
-                    #         logger.info('--->三十分后再次访问接口生效赠送流量套餐')
-                    #         return response.json(0, 'Thirty minutes later to visit again take effect')
-                    #     cls.user_activate_flow(iccid)
                     if unicom_device_qs.first().serial_no != serial_no:
                         unicom_device_qs.update(main_card=sim, updated_time=n_time, serial_no=serial_no)
                         cls.create_operation_log('unicom/api/device-bind',
@@ -403,7 +397,12 @@ class UnicomComboView(View):
                 unicom_obj = UnicomObjeect()
                 params = {'iccid': iccid, 'serial_no': serial_no, 'updated_time': n_time,
                           'created_time': n_time, 'main_card': sim}
-                if cls.check_iccid(iccid):
+                if cls.is_dingxin_iot(iccid):  # 鼎芯物联卡
+                    params['card_type'] = 5  # 国际
+                    params['status'] = 2
+                    UnicomDeviceInfo.objects.create(**params)
+                    return response.json(0)
+                if cls.check_iccid(iccid):  # 五兴物联卡
                     params['card_type'] = 1
                     params['status'] = 2
                     UnicomDeviceInfo.objects.create(**params)
@@ -429,6 +428,21 @@ class UnicomComboView(View):
             logger.info('--->设备调用4G注册接口异常:{}'.format(ex))
             return response.json(177, repr(e))
 
+    @classmethod
+    def is_dingxin_iot(cls, iccid):
+        """
+        根据iccid判断是否鼎芯国际卡
+        """
+        try:
+            dx_iot = EIoTClubObject()
+            params = {'iccid': iccid}
+            result = dx_iot.get_cards_info('v3', **params)
+            assert result['code'] == '200'
+            return True
+        except Exception as e:
+            print(repr(e))
+            return False
+
     @classmethod
     def check_iccid(cls, iccid):
         """

+ 2 - 2
Model/models.py

@@ -2942,9 +2942,9 @@ class UnicomDeviceInfo(models.Model):
     id = models.AutoField(primary_key=True, verbose_name=u'自增标记Id')
     iccid = models.CharField(db_index=True, unique=True, max_length=32, verbose_name=u'完整的20位纯数字ICCID')
     status = models.SmallIntegerField(default=0, verbose_name=u'状态{0:可测试,1:测试完成,2:已使用}')
-    serial_no = models.CharField(default='', max_length=32, verbose_name=u'设备序列号')
+    serial_no = models.CharField(default='', db_index=True, max_length=32, verbose_name=u'设备序列号')
     user_id = models.CharField(blank=True, max_length=32, verbose_name=u'用户id')
-    card_type = models.SmallIntegerField(default=0, verbose_name=u'状态{0:联通,1:电信,2:移动}')
+    card_type = models.SmallIntegerField(default=0, verbose_name=u'状态{0:联通,1:电信,2:移动,4:其它,5:国际}')
     main_card = models.SmallIntegerField(default=0, verbose_name=u'SIM卡类型{0:拔插卡,1:贴片卡}')
     sim_used_flow = models.DecimalField(default=0, max_digits=10, decimal_places=2, verbose_name=u'sim卡已用总流量(MB)')
     sim_cycle_used_flow = models.DecimalField(default=0, max_digits=10, decimal_places=2,