ソースを参照

电信卡19位判断

zhangdongming 12 時間 前
コミット
ec26b63596
1 ファイル変更11 行追加1 行削除
  1. 11 1
      Controller/UnicomCombo/UnicomComboController.py

+ 11 - 1
Controller/UnicomCombo/UnicomComboController.py

@@ -396,7 +396,17 @@ class UnicomComboView(View):
             ip = CommonService.get_ip_address(request)
             logger.info('--->参数验证通过,sign验证通过{}:{}'.format(serial_no, ip))
             # 待完善代码 根据uid与用户id验证系统设备mdcmd
-            unicom_device_qs = UnicomDeviceInfo.objects.filter(iccid=iccid)
+            if len(iccid) >= 6 and iccid[:6] in CHINA_TELECOM_ICCID_PREFIX:  # 电信卡
+                # 电信卡可能有两种格式存储:完整ICCID或截取19位
+                db_iccid = iccid[:19] if len(iccid) >= 19 else iccid
+
+                # 先查19位格式,再查原格式
+                unicom_device_qs = UnicomDeviceInfo.objects.filter(iccid=db_iccid)
+                if not unicom_device_qs.exists():  # 如果19位格式不存在,则查询原格式
+                    unicom_device_qs = UnicomDeviceInfo.objects.filter(iccid=iccid)
+            else:
+                # 其他运营商直接查询
+                unicom_device_qs = UnicomDeviceInfo.objects.filter(iccid=iccid)
             if unicom_device_qs.exists():
                 if unicom_device_qs.first().serial_no != serial_no:
                     unicom_device_qs.update(main_card=sim, updated_time=n_time, serial_no=serial_no)