Procházet zdrojové kódy

批量重置4G流量接口

zhangdongming před 1 rokem
rodič
revize
f0f58218f5
1 změnil soubory, kde provedl 65 přidání a 0 odebrání
  1. 65 0
      AdminController/UnicomManageController.py

+ 65 - 0
AdminController/UnicomManageController.py

@@ -101,6 +101,8 @@ class UnicomManageControllerView(View):
                 return self.package_cdk_export_excel(response)
             elif operation == 'uploadSerialNumberFile':  # 上传序列号文件绑定4G套餐
                 return self.upload_file(tko.user, request, request_dict, response)
+            elif operation == 'iccidBatchReset':  # 上传序列号文件绑定4G套餐
+                return self.iccid_batch_reset(tko.user, request, request_dict, response)
             else:
                 return response.json(404)
 
@@ -1016,3 +1018,66 @@ class UnicomManageControllerView(View):
         if sn_list:
             SerialNumberPackage.objects.bulk_create(sn_list)
         return response.json(0, {'total': len(serial_list), 'errData': error_list})
+
+    @classmethod
+    def iccid_batch_reset(cls, user, request, request_dict, response):
+        """
+        iccid批量重置流量
+        """
+        file = request.FILES['file']
+        if not file:
+            return response.json(444)
+        err_data = []
+        for line in file:
+            serial_number = line.decode().strip()[0:9]
+            try:
+                device_info_qs = UnicomDeviceInfo.objects.filter(serial_no=serial_number)
+                now_time = int(time.time())
+                if not device_info_qs.exists():
+                    err_data.append({'serialNumber': serial_number, 'msg': '数据不存在'})
+                    continue
+
+                iccid = device_info_qs.first().iccid
+                # 根据序列号重置出厂流量套餐
+                serial_package_qs = SerialNumberPackage.objects.filter(~Q(status=1), serial_number=serial_number)
+                if serial_package_qs.exists():
+                    serial_package_qs.update(status=1, updated_time=now_time, updated_by=user)
+
+                if device_info_qs.first().card_type == 1:  # 五兴电信
+                    data = {'iccids': iccid, 'operator': WXOperatorEnum.TELECOM.value}
+                    wx_tech = WXTechObject()
+                    res = wx_tech.delete_card_package(**data)
+                    if res['code'] == '0':
+                        UnicomComboExperienceHistory.objects.filter(iccid=iccid).delete()
+                        continue
+                    err_data.append({'serialNumber': serial_number, 'msg': '电信重置流量异常:{}'.format(res['code'])})
+                    continue
+                # 联通
+                flow_push_qs = UnicomFlowPush.objects.filter(serial_no=serial_number)
+                if flow_push_qs.exists():  # 删除流量预警推送
+                    flow_push_qs.delete()
+                sys_msg_qs = SysMsgModel.objects.filter(uid=serial_number)
+                if sys_msg_qs.exists():  # 删除有关系统消息数据
+                    sys_msg_qs.delete()
+                # 将4G用户信息状态改为已完成测试状态
+                device_info_qs.update(status=1, updated_time=now_time, user_id='')
+
+                combo_order_qs = UnicomComboOrderInfo.objects.filter(iccid=iccid)
+                if combo_order_qs.exists():
+                    combo_order_qs.delete()
+
+                combo_experience_history_qs = UnicomComboExperienceHistory.objects.filter(iccid=iccid)
+                if combo_experience_history_qs.exists():
+                    combo_experience_history_qs.delete()
+                UnicomObjeect().change_device_to_disable(iccid)  # 重置流量停用设备
+                # 记录日志,清除缓存
+                ip = CommonService.get_ip_address(request)
+                describe = '重置4G流量序列号{},iccid:{}'.format(serial_number, iccid)
+                key = f'ASJ:UNICOM:CARD:ACTIVATE:{serial_number}'
+                redis = RedisObject()
+                redis.del_data(key)
+                cls.create_operation_log('unicom/manage/iccidBatchReset', ip, request_dict, describe)
+                continue
+            except Exception as e:
+                err_data.append({'serialNumber': serial_number, 'msg': '重置流量异常:{}'.format(repr(e))})
+        return response.json(0, err_data)