|
@@ -14,7 +14,7 @@ from django.views import View
|
|
|
from Ansjer.config import LOGGER
|
|
|
from Controller.UnicomCombo.UnicomComboController import UnicomComboView
|
|
|
from Model.models import UnicomDeviceInfo, Order_Model, UnicomComboExperienceHistory, UnicomCombo, ExchangeCode, \
|
|
|
- LogModel
|
|
|
+ LogModel, SerialNumberPackage
|
|
|
from Object.Enums.WXOperatorEnum import WXOperatorEnum
|
|
|
from Object.Enums.WXStartTypeEnum import WXStartTypeEnum
|
|
|
from Object.ResponseObject import ResponseObject
|
|
@@ -68,6 +68,10 @@ class WXTechController(View):
|
|
|
return self.create_order_package(user_id, request_dict, response)
|
|
|
elif operation == 'exchangePackage':
|
|
|
return self.wx_exchange_package(request_dict, response, request, user_id)
|
|
|
+ elif operation == 'getPackageBySerialNumber':
|
|
|
+ return self.get_package_by_serial_number(request_dict, response, request, user_id)
|
|
|
+ elif operation == 'create4GFlowPackage':
|
|
|
+ return self.create_4G_flow_package(request_dict, response, request, user_id)
|
|
|
|
|
|
@classmethod
|
|
|
def wx_package_refund(cls, request_dict, response):
|
|
@@ -355,3 +359,92 @@ class WXTechController(View):
|
|
|
LOGGER.info('*****WXTechController.save_log:errLine:{}, errMsg:{}'
|
|
|
.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
return False
|
|
|
+
|
|
|
+ @classmethod
|
|
|
+ def get_package_by_serial_number(cls, request_dict, response, request, user_id):
|
|
|
+ """
|
|
|
+ 根据序列号获取无限流量套餐信息
|
|
|
+ """
|
|
|
+ try:
|
|
|
+ serial_number = request_dict.get('serialNumber', None)
|
|
|
+ if not serial_number:
|
|
|
+ return response.json(444)
|
|
|
+ serial_package_qs = SerialNumberPackage.objects.filter(serial_number=serial_number, status=1)
|
|
|
+ data = {}
|
|
|
+ if not serial_package_qs:
|
|
|
+ return response.json(0, data)
|
|
|
+ serial_package = serial_package_qs.first()
|
|
|
+ package_id = serial_package.package_id
|
|
|
+ package_info_qs = UnicomCombo.objects.filter(id=package_id).values('combo_name')
|
|
|
+ if not package_info_qs.exists():
|
|
|
+ return response.json(0, data)
|
|
|
+ result = {'comboName': package_info_qs[0]['combo_name']}
|
|
|
+ return response.json(110, result)
|
|
|
+ except Exception as e:
|
|
|
+ LOGGER.info('*****WXTechController.get_package_by_serial_number:errLine:{}, errMsg:{}'
|
|
|
+ .format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+ return response.json(503)
|
|
|
+
|
|
|
+ @classmethod
|
|
|
+ def create_4G_flow_package(cls, request_dict, response, request, user_id):
|
|
|
+ """
|
|
|
+ 创建4G流量套餐(出厂序列号绑定套餐)
|
|
|
+ """
|
|
|
+ ip = CommonService.get_ip_address(request)
|
|
|
+ serial_number = ''
|
|
|
+ try:
|
|
|
+ serial_number = request_dict.get('serialNumber')
|
|
|
+ if not serial_number:
|
|
|
+ return response.json(0)
|
|
|
+ device_info_qs = UnicomDeviceInfo.objects.filter(serial_no=serial_number) \
|
|
|
+ .values('iccid', 'card_type')
|
|
|
+ if not device_info_qs.exists():
|
|
|
+ return response.json(173) # 设备信息不存在
|
|
|
+
|
|
|
+ serial_package_qs = SerialNumberPackage.objects.filter(serial_number=serial_number, status=1)
|
|
|
+ if not serial_package_qs:
|
|
|
+ return response.json(10064)
|
|
|
+
|
|
|
+ combo_id = serial_package_qs.first().package_id
|
|
|
+ # 获取餐套餐信息
|
|
|
+ package_info_qs = UnicomCombo.objects.filter(id=combo_id, is_del=False) \
|
|
|
+ .values('package_id', 'combo_name')
|
|
|
+ if not package_info_qs.exists():
|
|
|
+ return response.json(173)
|
|
|
+ # 得到五兴电信运营商套餐编码
|
|
|
+ package_code = package_info_qs[0]['package_id']
|
|
|
+ combo_name = package_info_qs[0]['combo_name']
|
|
|
+ iccid = device_info_qs[0]['iccid']
|
|
|
+
|
|
|
+ n_time = int(time.time())
|
|
|
+ # 兑换码套餐类型
|
|
|
+ card_type = device_info_qs[0]['card_type']
|
|
|
+ if card_type == 0: # 订购联通流量套餐
|
|
|
+ result = cls.exchange_unicom_package(serial_number, iccid,
|
|
|
+ user_id, combo_id)
|
|
|
+ serial_package_qs.update(status=2, updated_time=n_time, updated_by=user_id)
|
|
|
+ if result:
|
|
|
+ cls.save_log(ip, 10071, '{}领取{}成功{}'.format(serial_number, combo_name, user_id))
|
|
|
+ return response.json(10071)
|
|
|
+ elif card_type == 1: # 订购五兴电信流量套餐
|
|
|
+ # 五兴订购流量包请求参数
|
|
|
+ data = {'iccid': iccid, 'operator': WXOperatorEnum.TELECOM.value,
|
|
|
+ 'startType': str(WXStartTypeEnum.EFFECTIVE_IMMEDIATELY.value), 'packageCode': package_code}
|
|
|
+ wx_tech = WXTechObject()
|
|
|
+ # 请求五兴API订购套餐接口
|
|
|
+ res = wx_tech.create_order_package(**data)
|
|
|
+ LOGGER.info('*****五兴订购套餐结果:{}'.format(res))
|
|
|
+ if res['code'] == '0':
|
|
|
+ trade_no = res['data']['orderNumber']
|
|
|
+ cls.created_order(serial_number, user_id, trade_no, combo_id, 11)
|
|
|
+ serial_package_qs.update(status=2, updated_time=n_time, updated_by=user_id)
|
|
|
+ cls.save_log(ip, 10071, '{}领取{}成功{}'.format(serial_number, combo_name, user_id))
|
|
|
+ return response.json(10071)
|
|
|
+
|
|
|
+ cls.save_log(ip, 10064, '无效卡类型{}领取{}失败{}'.format(serial_number, combo_name, user_id))
|
|
|
+ return response.json(10064)
|
|
|
+ except Exception as e:
|
|
|
+ LOGGER.info('*****WXTechController.wx_exchange_package:errLine:{}, errMsg:{}'
|
|
|
+ .format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+ cls.save_log(ip, 500, f'{serial_number}领取流量套餐异常')
|
|
|
+ return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|