|
@@ -5,10 +5,12 @@
|
|
|
# @File : UnicomManageController.py
|
|
|
# @Software: PyCharm
|
|
|
import hashlib
|
|
|
+import json
|
|
|
import time
|
|
|
import uuid
|
|
|
-
|
|
|
+from Ansjer.config import CONFIG_INFO
|
|
|
import openpyxl
|
|
|
+import requests
|
|
|
from django.db import transaction, connection
|
|
|
from django.http import HttpResponse
|
|
|
from django.views.generic.base import View
|
|
@@ -16,7 +18,7 @@ from django.views.generic.base import View
|
|
|
from Ansjer.config import LOGGER
|
|
|
from Controller.UnicomCombo.UnicomComboController import UnicomComboView
|
|
|
from Model.models import UnicomDeviceInfo, UnicomCombo, Pay_Type, UnicomComboOrderInfo, Device_User, Order_Model, \
|
|
|
- ExchangeCode
|
|
|
+ ExchangeCode, UnicomFlowPush, SysMsgModel, UnicomComboExperienceHistory, LogModel
|
|
|
from Object.ResponseObject import ResponseObject
|
|
|
from Object.TokenObject import TokenObject
|
|
|
from Object.UnicomObject import UnicomObjeect
|
|
@@ -78,9 +80,98 @@ class UnicomManageControllerView(View):
|
|
|
return self.get_iccid_info(request_dict, response)
|
|
|
elif operation == 'batchGenerateCDK': # 批量生成兑换码
|
|
|
return self.create_package_cdk(request_dict, response)
|
|
|
+ elif operation == 'resetCardPackage':
|
|
|
+ return self.reset_card_package(request, request_dict, response)
|
|
|
else:
|
|
|
return response.json(404)
|
|
|
|
|
|
+ @classmethod
|
|
|
+ def reset_card_package(cls, request, request_dict, response):
|
|
|
+ try:
|
|
|
+ serial_number = request_dict.get('serialNumber', None)
|
|
|
+ if not serial_number:
|
|
|
+ return response.json(444)
|
|
|
+ device_info_qs = UnicomDeviceInfo.objects.filter(serial_no=serial_number)
|
|
|
+ now_time = int(time.time())
|
|
|
+ if device_info_qs.exists(): # 首先查询SIM卡绑定信息是否存在
|
|
|
+ iccid = device_info_qs.first().iccid
|
|
|
+ if device_info_qs.first().card_type == 1:
|
|
|
+ return response.json(0)
|
|
|
+ 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_activate(iccid)
|
|
|
+ ip = CommonService.get_ip_address(request)
|
|
|
+ describe = '重置4G流量序列号{},iccid:{}'.format(serial_number, iccid)
|
|
|
+ cls.generate_card_package_order(iccid, serial_number)
|
|
|
+ cls.create_operation_log('unicom/manage/resetCardPackage', ip, request_dict, describe)
|
|
|
+ return response.json(0)
|
|
|
+ return response.json(173)
|
|
|
+ except Exception as e:
|
|
|
+ LOGGER.info('异常详情,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+ return response.json(500)
|
|
|
+
|
|
|
+ @classmethod
|
|
|
+ def generate_card_package_order(cls, iccid, serial_number):
|
|
|
+ """
|
|
|
+ 模拟设备上电赠送1G
|
|
|
+ @param iccid:
|
|
|
+ @param serial_number:
|
|
|
+ @return:
|
|
|
+ """
|
|
|
+ url = 'https://www.zositechc.cn/' if CONFIG_INFO == 'cn' else 'https://test.zositechc.cn/'
|
|
|
+ url = url + 'unicom/api/device-bind'
|
|
|
+ now_time = int(time.time())
|
|
|
+ sign = CommonService.encode_data(str(now_time))
|
|
|
+ data = {
|
|
|
+ 'iccid': iccid,
|
|
|
+ 'serialNo': serial_number,
|
|
|
+ 'timeStamp': now_time,
|
|
|
+ 'sign': sign,
|
|
|
+ 'sim': 1
|
|
|
+ }
|
|
|
+ response = requests.post(url=url, data=data, timeout=5)
|
|
|
+ LOGGER.info(f"生成体验套餐结果:{json.loads(response.text)}")
|
|
|
+
|
|
|
+ @classmethod
|
|
|
+ def create_operation_log(cls, url, ip, request_dict, describe):
|
|
|
+ """
|
|
|
+ 存入操作日志
|
|
|
+ @param url: 请求路径
|
|
|
+ @param describe: 描述
|
|
|
+ @param ip: 当前IP
|
|
|
+ @param request_dict: 请求参数
|
|
|
+ @return: True | False
|
|
|
+ """
|
|
|
+ try:
|
|
|
+ # 记录操作日志
|
|
|
+ content = json.loads(json.dumps(request_dict))
|
|
|
+ log = {
|
|
|
+ 'ip': ip,
|
|
|
+ 'user_id': 1,
|
|
|
+ 'status': 200,
|
|
|
+ 'time': int(time.time()),
|
|
|
+ 'content': json.dumps(content),
|
|
|
+ 'url': url,
|
|
|
+ 'operation': describe,
|
|
|
+ }
|
|
|
+ LogModel.objects.create(**log)
|
|
|
+ return True
|
|
|
+ except Exception as e:
|
|
|
+ print('日志异常,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+ return False
|
|
|
+
|
|
|
def get_user_info(self, request_dict, response):
|
|
|
"""
|
|
|
获取/筛选卡用户信息
|