|
@@ -7,9 +7,9 @@
|
|
import datetime
|
|
import datetime
|
|
import hashlib
|
|
import hashlib
|
|
import json
|
|
import json
|
|
|
|
+import random
|
|
import threading
|
|
import threading
|
|
import time
|
|
import time
|
|
-import random
|
|
|
|
import uuid
|
|
import uuid
|
|
from decimal import Decimal
|
|
from decimal import Decimal
|
|
|
|
|
|
@@ -24,7 +24,9 @@ from Ansjer.config import CONFIG_INFO
|
|
from Ansjer.config import LOGGER
|
|
from Ansjer.config import LOGGER
|
|
from Controller.UnicomCombo.UnicomComboController import UnicomComboView
|
|
from Controller.UnicomCombo.UnicomComboController import UnicomComboView
|
|
from Model.models import UnicomDeviceInfo, UnicomCombo, Pay_Type, UnicomComboOrderInfo, Device_User, Order_Model, \
|
|
from Model.models import UnicomDeviceInfo, UnicomCombo, Pay_Type, UnicomComboOrderInfo, Device_User, Order_Model, \
|
|
- ExchangeCode, UnicomFlowPush, SysMsgModel, UnicomComboExperienceHistory, LogModel, SerialNumberPackage
|
|
|
|
|
|
+ ExchangeCode, UnicomFlowPush, SysMsgModel, UnicomComboExperienceHistory, LogModel, SerialNumberPackage, \
|
|
|
|
+ AccessNumberTaskQueue
|
|
|
|
+from Object.EIoTClubObject import EIoTClubObject
|
|
from Object.Enums.WXOperatorEnum import WXOperatorEnum
|
|
from Object.Enums.WXOperatorEnum import WXOperatorEnum
|
|
from Object.RedisObject import RedisObject
|
|
from Object.RedisObject import RedisObject
|
|
from Object.ResponseObject import ResponseObject
|
|
from Object.ResponseObject import ResponseObject
|
|
@@ -32,7 +34,7 @@ from Object.TokenObject import TokenObject
|
|
from Object.UnicomObject import UnicomObjeect
|
|
from Object.UnicomObject import UnicomObjeect
|
|
from Object.WXTechObject import WXTechObject
|
|
from Object.WXTechObject import WXTechObject
|
|
from Service.CommonService import CommonService
|
|
from Service.CommonService import CommonService
|
|
-from Object.EIoTClubObject import EIoTClubObject
|
|
|
|
|
|
+from Service.TelecomService import TelecomService
|
|
|
|
|
|
|
|
|
|
class UnicomManageControllerView(View):
|
|
class UnicomManageControllerView(View):
|
|
@@ -103,7 +105,7 @@ class UnicomManageControllerView(View):
|
|
elif operation == 'downloadCDK': # 下载兑换码
|
|
elif operation == 'downloadCDK': # 下载兑换码
|
|
return self.package_cdk_export_excel(response)
|
|
return self.package_cdk_export_excel(response)
|
|
elif operation == 'uploadSerialNumberFile': # 上传序列号文件绑定4G套餐
|
|
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': # 批量重置流量
|
|
elif operation == 'iccidBatchReset': # 批量重置流量
|
|
return self.iccid_batch_reset(tko.user, request, request_dict, response)
|
|
return self.iccid_batch_reset(tko.user, request, request_dict, response)
|
|
elif operation == 'orderFlowPackage': # 订购流量套餐包
|
|
elif operation == 'orderFlowPackage': # 订购流量套餐包
|
|
@@ -158,12 +160,13 @@ class UnicomManageControllerView(View):
|
|
if device_info_qs.count() > 1:
|
|
if device_info_qs.count() > 1:
|
|
return response.json(177)
|
|
return response.json(177)
|
|
iccid = device_info_qs.first().iccid
|
|
iccid = device_info_qs.first().iccid
|
|
|
|
+
|
|
# 根据序列号重置出厂流量套餐
|
|
# 根据序列号重置出厂流量套餐
|
|
serial_package_qs = SerialNumberPackage.objects.filter(~Q(status=1), serial_number=serial_number)
|
|
serial_package_qs = SerialNumberPackage.objects.filter(~Q(status=1), serial_number=serial_number)
|
|
if serial_package_qs.exists():
|
|
if serial_package_qs.exists():
|
|
serial_package_qs.update(status=1, updated_time=now_time, updated_by=user)
|
|
serial_package_qs.update(status=1, updated_time=now_time, updated_by=user)
|
|
|
|
|
|
- if device_info_qs.first().card_type == 1: # 五兴电信
|
|
|
|
|
|
+ if device_info_qs.first().card_type == 1: # 五兴电信API删除所有套餐历史
|
|
data = {'iccids': iccid, 'operator': WXOperatorEnum.TELECOM.value}
|
|
data = {'iccids': iccid, 'operator': WXOperatorEnum.TELECOM.value}
|
|
wx_tech = WXTechObject()
|
|
wx_tech = WXTechObject()
|
|
res = wx_tech.delete_card_package(**data)
|
|
res = wx_tech.delete_card_package(**data)
|
|
@@ -172,24 +175,31 @@ class UnicomManageControllerView(View):
|
|
LOGGER.info(f"{serial_number}电信重置流量成功:{json.dumps(res)}")
|
|
LOGGER.info(f"{serial_number}电信重置流量成功:{json.dumps(res)}")
|
|
return response.json(0)
|
|
return response.json(0)
|
|
return response.json(176)
|
|
return response.json(176)
|
|
|
|
+
|
|
flow_push_qs = UnicomFlowPush.objects.filter(serial_no=serial_number)
|
|
flow_push_qs = UnicomFlowPush.objects.filter(serial_no=serial_number)
|
|
if flow_push_qs.exists(): # 删除流量预警推送
|
|
if flow_push_qs.exists(): # 删除流量预警推送
|
|
flow_push_qs.delete()
|
|
flow_push_qs.delete()
|
|
sys_msg_qs = SysMsgModel.objects.filter(uid=serial_number)
|
|
sys_msg_qs = SysMsgModel.objects.filter(uid=serial_number)
|
|
if sys_msg_qs.exists(): # 删除有关系统消息数据
|
|
if sys_msg_qs.exists(): # 删除有关系统消息数据
|
|
sys_msg_qs.delete()
|
|
sys_msg_qs.delete()
|
|
|
|
+
|
|
# 将4G用户信息状态改为已完成测试状态
|
|
# 将4G用户信息状态改为已完成测试状态
|
|
device_info_qs.update(status=2, updated_time=now_time, user_id='')
|
|
device_info_qs.update(status=2, updated_time=now_time, user_id='')
|
|
combo_order_qs = UnicomComboOrderInfo.objects.filter(iccid=iccid)
|
|
combo_order_qs = UnicomComboOrderInfo.objects.filter(iccid=iccid)
|
|
if combo_order_qs.exists():
|
|
if combo_order_qs.exists():
|
|
combo_order_qs.delete()
|
|
combo_order_qs.delete()
|
|
|
|
+
|
|
|
|
+ # 删除免费体验记录
|
|
combo_experience_history_qs = UnicomComboExperienceHistory.objects.filter(iccid=iccid)
|
|
combo_experience_history_qs = UnicomComboExperienceHistory.objects.filter(iccid=iccid)
|
|
if combo_experience_history_qs.exists():
|
|
if combo_experience_history_qs.exists():
|
|
combo_experience_history_qs.delete()
|
|
combo_experience_history_qs.delete()
|
|
- # UnicomObjeect().change_device_to_disable(iccid) # 重置流量停用设备
|
|
|
|
|
|
+
|
|
|
|
+ # 重置流量后,恢复测试流量
|
|
result = UnicomComboView().activate_test_flow_package(serial_number)
|
|
result = UnicomComboView().activate_test_flow_package(serial_number)
|
|
ip = CommonService.get_ip_address(request)
|
|
ip = CommonService.get_ip_address(request)
|
|
describe = '重置4G流量序列号{},iccid:{},{}'.format(serial_number, iccid, result)
|
|
describe = '重置4G流量序列号{},iccid:{},{}'.format(serial_number, iccid, result)
|
|
|
|
+
|
|
|
|
+ # 当前缓存是客户首次扫序列号,激活赠送测试流量生成的,重置流量所以要清除
|
|
key = f'ASJ:UNICOM:CARD:ACTIVATE:{serial_number}'
|
|
key = f'ASJ:UNICOM:CARD:ACTIVATE:{serial_number}'
|
|
redis = RedisObject()
|
|
redis = RedisObject()
|
|
redis.del_data(key)
|
|
redis.del_data(key)
|
|
@@ -302,7 +312,8 @@ class UnicomManageControllerView(View):
|
|
'userID': unicom_device.user_id, 'cardType': unicom_device.card_type,
|
|
'userID': unicom_device.user_id, 'cardType': unicom_device.card_type,
|
|
'status': unicom_device.status, 'mainCard': unicom_device.main_card,
|
|
'status': unicom_device.status, 'mainCard': unicom_device.main_card,
|
|
'createdTime': unicom_device.created_time, 'updatedTime': unicom_device.updated_time,
|
|
'createdTime': unicom_device.created_time, 'updatedTime': unicom_device.updated_time,
|
|
- 'cardStatus': self.get_device_status_by_iccid(unicom_device.iccid, unicom_device.card_type)}
|
|
|
|
|
|
+ 'cardStatus': self.get_device_status_by_iccid(unicom_device.iccid, unicom_device.card_type,
|
|
|
|
+ unicom_device.access_number)}
|
|
device_user_qs = Device_User.objects.filter(userID=unicom_device.user_id).values('username', 'NickName',
|
|
device_user_qs = Device_User.objects.filter(userID=unicom_device.user_id).values('username', 'NickName',
|
|
'phone')
|
|
'phone')
|
|
data['userName'] = device_user_qs[0]['username'] if device_user_qs.exists() else ''
|
|
data['userName'] = device_user_qs[0]['username'] if device_user_qs.exists() else ''
|
|
@@ -479,7 +490,7 @@ class UnicomManageControllerView(View):
|
|
'expiration_days',
|
|
'expiration_days',
|
|
'expiration_type', 'price', 'is_unlimited',
|
|
'expiration_type', 'price', 'is_unlimited',
|
|
'updated_time', 'created_time',
|
|
'updated_time', 'created_time',
|
|
- 'remark', 'is_show', 'sort', 'virtual_price').order_by('sort')
|
|
|
|
|
|
+ 'remark', 'is_show', 'sort', 'virtual_price').order_by('-created_time', 'sort')
|
|
if not combo_qs.exists():
|
|
if not combo_qs.exists():
|
|
return response.json(0, [])
|
|
return response.json(0, [])
|
|
total = combo_qs.count()
|
|
total = combo_qs.count()
|
|
@@ -815,7 +826,7 @@ class UnicomManageControllerView(View):
|
|
return response.json(0, {'packageList': package_list})
|
|
return response.json(0, {'packageList': package_list})
|
|
iccid = ud_qs[0]['iccid']
|
|
iccid = ud_qs[0]['iccid']
|
|
card_type = ud_qs[0]['card_type']
|
|
card_type = ud_qs[0]['card_type']
|
|
- if card_type == 0:
|
|
|
|
|
|
+ if card_type == 0 or card_type == 3:
|
|
o_qs = UnicomComboOrderInfo.objects.filter(iccid=iccid) \
|
|
o_qs = UnicomComboOrderInfo.objects.filter(iccid=iccid) \
|
|
.values('status', 'flow_total_usage', 'flow_exceed', 'activation_time', 'expire_time',
|
|
.values('status', 'flow_total_usage', 'flow_exceed', 'activation_time', 'expire_time',
|
|
'combo__combo_name', 'combo__flow_total', 'updated_time') \
|
|
'combo__combo_name', 'combo__flow_total', 'updated_time') \
|
|
@@ -827,8 +838,8 @@ class UnicomManageControllerView(View):
|
|
data = {'iccid': iccid, 'operator': 3}
|
|
data = {'iccid': iccid, 'operator': 3}
|
|
return response.json(0, {'package_list': cls.get_wx_package_list(**data)})
|
|
return response.json(0, {'package_list': cls.get_wx_package_list(**data)})
|
|
if card_type == 5:
|
|
if card_type == 5:
|
|
- data = {'iccid': iccid, 'timestamp': int(time.time()), 'nonce': random.randint(10000, 99999) }
|
|
|
|
- original_data = EIoTClubObject.query_order_record_list("v3",**data)
|
|
|
|
|
|
+ data = {'iccid': iccid, 'timestamp': int(time.time()), 'nonce': random.randint(10000, 99999)}
|
|
|
|
+ original_data = EIoTClubObject.query_order_record_list("v3", **data)
|
|
return response.json(0, {'package_list': cls.get_dx_package_list(original_data)})
|
|
return response.json(0, {'package_list': cls.get_dx_package_list(original_data)})
|
|
return response.json(0, {'package_list': package_list})
|
|
return response.json(0, {'package_list': package_list})
|
|
|
|
|
|
@@ -896,20 +907,40 @@ class UnicomManageControllerView(View):
|
|
return []
|
|
return []
|
|
|
|
|
|
@staticmethod
|
|
@staticmethod
|
|
- def get_device_status_by_iccid(iccid, card_type):
|
|
|
|
|
|
+ def get_device_status_by_iccid(iccid, card_type, access_number=''):
|
|
try:
|
|
try:
|
|
re_data = {'iccid': iccid}
|
|
re_data = {'iccid': iccid}
|
|
if card_type == 0:
|
|
if card_type == 0:
|
|
|
|
+
|
|
status_dict = {1: '已激活', 2: '可激活', 3: '已停用', 4: '已失效', 5: '可测试', 6: '库存', 7: '已更换', 8: '已清除'}
|
|
status_dict = {1: '已激活', 2: '可激活', 3: '已停用', 4: '已失效', 5: '可测试', 6: '库存', 7: '已更换', 8: '已清除'}
|
|
result = UnicomObjeect().query_device_status(**re_data)
|
|
result = UnicomObjeect().query_device_status(**re_data)
|
|
res_dict = UnicomObjeect().get_text_dict(result)
|
|
res_dict = UnicomObjeect().get_text_dict(result)
|
|
return status_dict.get(int(res_dict['data']['status']), 'N/A')
|
|
return status_dict.get(int(res_dict['data']['status']), 'N/A')
|
|
|
|
+
|
|
elif card_type == 1:
|
|
elif card_type == 1:
|
|
|
|
+
|
|
status_dict = {1: '库存', 2: '可激活', 3: '已激活', 4: '已停用', 5: '已失效', 6: '强制停机'}
|
|
status_dict = {1: '库存', 2: '可激活', 3: '已激活', 4: '已停用', 5: '已失效', 6: '强制停机'}
|
|
data = {'iccid': iccid, 'operator': 3}
|
|
data = {'iccid': iccid, 'operator': 3}
|
|
wx_tech = WXTechObject()
|
|
wx_tech = WXTechObject()
|
|
result = wx_tech.get_cards_info(**data)
|
|
result = wx_tech.get_cards_info(**data)
|
|
return status_dict.get(int(result['data']['cardStatusCode']), 'N/A')
|
|
return status_dict.get(int(result['data']['cardStatusCode']), 'N/A')
|
|
|
|
+
|
|
|
|
+ elif card_type == 3:
|
|
|
|
+
|
|
|
|
+ status_dict = {'connect': '已激活', 'disconnect': '已停用'}
|
|
|
|
+ i = 0
|
|
|
|
+ while i < 3:
|
|
|
|
+ status_code = TelecomService().get_access_number_network_status(access_number)
|
|
|
|
+ if status_code:
|
|
|
|
+ return status_dict.get(status_code, 'N/A')
|
|
|
|
+ i += 1
|
|
|
|
+
|
|
|
|
+ access_info = AccessNumberTaskQueue.objects.filter(iccid=iccid, status=1) \
|
|
|
|
+ .order_by('-completion_time').values('action')
|
|
|
|
+ if not access_info.exists():
|
|
|
|
+ return 'N/A'
|
|
|
|
+ return '已激活' if access_info[0]['action'] == 2 else '已停用'
|
|
|
|
+
|
|
else:
|
|
else:
|
|
return 'N/A'
|
|
return 'N/A'
|
|
except Exception as e:
|
|
except Exception as e:
|
|
@@ -926,16 +957,20 @@ class UnicomManageControllerView(View):
|
|
if not serial_number:
|
|
if not serial_number:
|
|
return response.json(444)
|
|
return response.json(444)
|
|
status = int(request_dict.get('status', 0))
|
|
status = int(request_dict.get('status', 0))
|
|
- unicom_qs = UnicomDeviceInfo.objects.filter(serial_no=serial_number, card_type=0)
|
|
|
|
|
|
+ unicom_qs = UnicomDeviceInfo.objects.filter(serial_no=serial_number, card_type__in=[0, 3])
|
|
if not unicom_qs.exists():
|
|
if not unicom_qs.exists():
|
|
return response.json(173)
|
|
return response.json(173)
|
|
unicom_service = UnicomObjeect()
|
|
unicom_service = UnicomObjeect()
|
|
iccid = unicom_qs.first().iccid
|
|
iccid = unicom_qs.first().iccid
|
|
|
|
+ access_number = unicom_qs.first().access_number
|
|
|
|
+ card_type = unicom_qs.first().card_type
|
|
if status == 1: # 激活
|
|
if status == 1: # 激活
|
|
- unicom_service.change_device_to_activate(iccid)
|
|
|
|
|
|
+ unicom_service.change_device_to_activate(iccid=iccid, card_type=card_type, access_number=access_number,
|
|
|
|
+ reason='后台操作恢复网络')
|
|
return response.json(0)
|
|
return response.json(0)
|
|
elif status == 3: # 停用
|
|
elif status == 3: # 停用
|
|
- unicom_service.change_device_to_disable(iccid)
|
|
|
|
|
|
+ unicom_service.change_device_to_disable(iccid=iccid, card_type=card_type, access_number=access_number,
|
|
|
|
+ reason='后台操作断网')
|
|
return response.json(0)
|
|
return response.json(0)
|
|
return response.json(902)
|
|
return response.json(902)
|
|
|
|
|
|
@@ -1020,7 +1055,10 @@ class UnicomManageControllerView(View):
|
|
获取4G流量套餐列表
|
|
获取4G流量套餐列表
|
|
@return: 套餐列表
|
|
@return: 套餐列表
|
|
"""
|
|
"""
|
|
|
|
+ c_type = request_dict.get('type', None)
|
|
combo_qs = UnicomCombo.objects.filter(is_del=False)
|
|
combo_qs = UnicomCombo.objects.filter(is_del=False)
|
|
|
|
+ if c_type:
|
|
|
|
+ combo_qs = combo_qs.filter(combo_type=int(c_type))
|
|
if not combo_qs.exists():
|
|
if not combo_qs.exists():
|
|
return response.json(173)
|
|
return response.json(173)
|
|
combo_qs = combo_qs.values('id', 'combo_name').order_by('-created_time')
|
|
combo_qs = combo_qs.values('id', 'combo_name').order_by('-created_time')
|
|
@@ -1028,9 +1066,10 @@ class UnicomManageControllerView(View):
|
|
return response.json(0, flow_combo_list)
|
|
return response.json(0, flow_combo_list)
|
|
|
|
|
|
@classmethod
|
|
@classmethod
|
|
- def upload_file(cls, user, request, request_dict, response):
|
|
|
|
|
|
+ def upload_file(cls, user_id, user, request, request_dict, response):
|
|
"""
|
|
"""
|
|
上传序列号文件绑定套餐id
|
|
上传序列号文件绑定套餐id
|
|
|
|
+ @param user_id: user_id
|
|
@param user: 当前操作用户
|
|
@param user: 当前操作用户
|
|
@param request: file txt
|
|
@param request: file txt
|
|
@param request_dict: package_id 4G套餐id
|
|
@param request_dict: package_id 4G套餐id
|
|
@@ -1046,6 +1085,11 @@ class UnicomManageControllerView(View):
|
|
n_time = int(time.time())
|
|
n_time = int(time.time())
|
|
package_id = int(package_id)
|
|
package_id = int(package_id)
|
|
sn_list = []
|
|
sn_list = []
|
|
|
|
+
|
|
|
|
+ uc_qs = UnicomCombo.objects.filter(id=package_id)
|
|
|
|
+ if not uc_qs.exists():
|
|
|
|
+ return response.json(173)
|
|
|
|
+
|
|
for line in file:
|
|
for line in file:
|
|
serial_number = line.decode().strip()[0:9]
|
|
serial_number = line.decode().strip()[0:9]
|
|
try:
|
|
try:
|
|
@@ -1065,8 +1109,46 @@ class UnicomManageControllerView(View):
|
|
error_list.append({'serialNumber': serial_number, 'msg': repr(e)})
|
|
error_list.append({'serialNumber': serial_number, 'msg': repr(e)})
|
|
if sn_list:
|
|
if sn_list:
|
|
SerialNumberPackage.objects.bulk_create(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})
|
|
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
|
|
@classmethod
|
|
def iccid_batch_reset(cls, user, request, request_dict, response):
|
|
def iccid_batch_reset(cls, user, request, request_dict, response):
|
|
"""
|
|
"""
|
|
@@ -1131,9 +1213,11 @@ class UnicomManageControllerView(View):
|
|
combo_experience_history_qs = UnicomComboExperienceHistory.objects.filter(iccid=iccid)
|
|
combo_experience_history_qs = UnicomComboExperienceHistory.objects.filter(iccid=iccid)
|
|
if combo_experience_history_qs.exists(): # 删除免费体验流量记录
|
|
if combo_experience_history_qs.exists(): # 删除免费体验流量记录
|
|
combo_experience_history_qs.delete()
|
|
combo_experience_history_qs.delete()
|
|
- result = UnicomComboView().activate_test_flow_package(serial_number) # 订购新的100M测试流量
|
|
|
|
|
|
|
|
|
|
+ result = UnicomComboView().activate_test_flow_package(serial_number) # 订购新的100M测试流量
|
|
describe = '批量重置4G流量序列号{},iccid:{},{}'.format(serial_number, iccid, result)
|
|
describe = '批量重置4G流量序列号{},iccid:{},{}'.format(serial_number, iccid, result)
|
|
|
|
+
|
|
|
|
+ # 当前缓存是客户首次扫序列号,激活赠送测试流量生成的,重置流量所以要清除
|
|
key = f'ASJ:UNICOM:CARD:ACTIVATE:{serial_number}'
|
|
key = f'ASJ:UNICOM:CARD:ACTIVATE:{serial_number}'
|
|
redis = RedisObject()
|
|
redis = RedisObject()
|
|
redis.del_data(key)
|
|
redis.del_data(key)
|
|
@@ -1282,6 +1366,8 @@ class UnicomManageControllerView(View):
|
|
|
|
|
|
else:
|
|
else:
|
|
UnicomComboView.create_combo_order_info(now_order, 0, iccid, package_id)
|
|
UnicomComboView.create_combo_order_info(now_order, 0, iccid, package_id)
|
|
|
|
+ # 激活新卡
|
|
|
|
+ unicom_api.change_device_to_activate(iccid)
|
|
|
|
|
|
describe = f'{order_id}套餐转移成功,操作人{user}'
|
|
describe = f'{order_id}套餐转移成功,操作人{user}'
|
|
cls.create_operation_log('unicom/manage/transferDevicePackage', '127.0.0.1', request_dict, describe)
|
|
cls.create_operation_log('unicom/manage/transferDevicePackage', '127.0.0.1', request_dict, describe)
|
|
@@ -1290,3 +1376,21 @@ class UnicomManageControllerView(View):
|
|
LOGGER.info('UnicomManageControllerView.transfer_device_package, errLine:{}, errMsg:{}'.format(
|
|
LOGGER.info('UnicomManageControllerView.transfer_device_package, errLine:{}, errMsg:{}'.format(
|
|
e.__traceback__.tb_lineno, repr(e)))
|
|
e.__traceback__.tb_lineno, repr(e)))
|
|
return response.json(500)
|
|
return response.json(500)
|
|
|
|
+
|
|
|
|
+ def get_dx_package_list(original_data):
|
|
|
|
+ """
|
|
|
|
+ 鼎芯数据处理
|
|
|
|
+ """
|
|
|
|
+ package_list = []
|
|
|
|
+ for package in original_data["data"]:
|
|
|
|
+ new_package = {
|
|
|
|
+ "packageName": package.get("packageName", ""),
|
|
|
|
+ "status": package.get("state"), # Assuming state 2 means 'In Use'
|
|
|
|
+ "flowTotal": package.get("flowTotal", 0),
|
|
|
|
+ "used": package.get("flowTotal", 0) - package.get("flowRemain", 0),
|
|
|
|
+ "activationTime": package.get("startDate", ""),
|
|
|
|
+ "expireTime": package.get("endDate", ""),
|
|
|
|
+ "updatedTime": "" # 没有这个数据接口
|
|
|
|
+ }
|
|
|
|
+ package_list.append(new_package)
|
|
|
|
+ return package_list
|