Browse Source

绑定终身免流量自动激活

zhangdongming 1 year ago
parent
commit
e7b01fdcb9
1 changed files with 46 additions and 2 deletions
  1. 46 2
      AdminController/UnicomManageController.py

+ 46 - 2
AdminController/UnicomManageController.py

@@ -105,7 +105,7 @@ class UnicomManageControllerView(View):
             elif operation == 'downloadCDK':  # 下载兑换码
                 return self.package_cdk_export_excel(response)
             elif operation == 'uploadSerialNumberFile':  # 上传序列号文件绑定4G套餐
-                return self.upload_file(tko.user, request, request_dict, response)
+                return self.upload_file(userID, tko.user, request, request_dict, response)
             elif operation == 'iccidBatchReset':  # 批量重置流量
                 return self.iccid_batch_reset(tko.user, request, request_dict, response)
             elif operation == 'orderFlowPackage':  # 订购流量套餐包
@@ -1066,9 +1066,10 @@ class UnicomManageControllerView(View):
         return response.json(0, flow_combo_list)
 
     @classmethod
-    def upload_file(cls, user, request, request_dict, response):
+    def upload_file(cls, user_id, user, request, request_dict, response):
         """
         上传序列号文件绑定套餐id
+        @param user_id: user_id
         @param user: 当前操作用户
         @param request: file txt
         @param request_dict: package_id 4G套餐id
@@ -1084,6 +1085,11 @@ class UnicomManageControllerView(View):
         n_time = int(time.time())
         package_id = int(package_id)
         sn_list = []
+
+        uc_qs = UnicomCombo.objects.filter(id=package_id)
+        if not uc_qs.exists():
+            return response.json(173)
+
         for line in file:
             serial_number = line.decode().strip()[0:9]
             try:
@@ -1103,8 +1109,46 @@ class UnicomManageControllerView(View):
                 error_list.append({'serialNumber': serial_number, 'msg': repr(e)})
         if sn_list:
             SerialNumberPackage.objects.bulk_create(sn_list)
+
+            # 终身免流量时只保留一个有效套餐并自动激活
+            if uc_qs.first().remark == 'LIFETIME_FREE':
+                asy = threading.Thread(target=cls.activate_4G_lifetime_free, args=(sn_list, user_id))
+                asy.start()
+
         return response.json(0, {'total': len(serial_list), 'errData': error_list})
 
+    @classmethod
+    def activate_4G_lifetime_free(cls, sn_list, user_id):
+        """
+        激活4G终身免流量
+        """
+
+        for item in sn_list:
+            try:
+                serial_number = item.serial_number
+
+                # 查询ICCID
+                iccid_qs = UnicomDeviceInfo.objects.filter(serial_no=serial_number).values('iccid')
+                if not iccid_qs.exists():
+                    LOGGER.info(f'*****激活终身免流量iccid不存在serial_number:{serial_number}')
+                    continue
+
+                now_time = int(time.time())
+                # 写入套餐订购记录
+                experience_history_vo = {'iccid': iccid_qs[0]['iccid'], 'experience_type': 1, 'do_time': now_time}
+                UnicomComboExperienceHistory.objects.create(**experience_history_vo)
+
+                # 根据ICCID删除套餐记录
+                UnicomComboOrderInfo.objects.filter(iccid=iccid_qs[0]['iccid']).delete()
+
+                # 激活终身流量
+                UnicomComboView().generate_flow_package(serial_number, item.package_id, user_id)
+
+            except Exception as e:
+                LOGGER.info('UnicomManageControllerView.activate_4G_lifetime_free,'
+                            'errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+                continue
+
     @classmethod
     def iccid_batch_reset(cls, user, request, request_dict, response):
         """