|
@@ -13,7 +13,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
|
|
|
+from Model.models import UnicomDeviceInfo, Order_Model, UnicomComboExperienceHistory, UnicomCombo, ExchangeCode
|
|
|
from Object.Enums.WXOperatorEnum import WXOperatorEnum
|
|
|
from Object.Enums.WXStartTypeEnum import WXStartTypeEnum
|
|
|
from Object.ResponseObject import ResponseObject
|
|
@@ -63,6 +63,8 @@ class WXTechController(View):
|
|
|
return self.get_experience_package(request_dict, response)
|
|
|
elif operation == 'createOrder':
|
|
|
return self.create_order_package(request_dict, response)
|
|
|
+ elif operation == 'exchangePackage':
|
|
|
+ return self.wx_exchange_package(request_dict, response)
|
|
|
|
|
|
@classmethod
|
|
|
def get_cards_info(cls, request_dict, response):
|
|
@@ -211,3 +213,52 @@ class WXTechController(View):
|
|
|
LOGGER.info('*****WXTechController.delete_card_package:errLine:{}, errMsg:{}'
|
|
|
.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
return response.json(500, repr(e))
|
|
|
+
|
|
|
+ @classmethod
|
|
|
+ def wx_exchange_package(cls, request_dict, response):
|
|
|
+ """
|
|
|
+ 五兴兑换套餐包
|
|
|
+ """
|
|
|
+ try:
|
|
|
+ code = request_dict.get('code')
|
|
|
+ serial_number = request_dict.get('serialNumber')
|
|
|
+ if not all([code, serial_number]):
|
|
|
+ return response.json(444) # 参数缺失
|
|
|
+ # 校验兑换码格式是否正确
|
|
|
+ if not (code.isalnum() and len(code) == 10):
|
|
|
+ return response.json(10040) # 兑换码格式错误
|
|
|
+ card_type = 1
|
|
|
+ # 查询设备信息
|
|
|
+ device_info_qs = UnicomDeviceInfo.objects.filter(serial_no=serial_number, card_type=card_type) \
|
|
|
+ .values('iccid')
|
|
|
+ if not device_info_qs.exists():
|
|
|
+ return response.json(173) # 设备信息不存在
|
|
|
+ # 查询兑换码信息
|
|
|
+ exchange_code_qs = ExchangeCode.objects.filter(code=code, status=False, package_type=card_type) \
|
|
|
+ .values('package_id', 'expire_time')
|
|
|
+ if not exchange_code_qs.exists():
|
|
|
+ return response.json(10040) # 兑换码无效
|
|
|
+ # 获取五兴套餐套餐编码
|
|
|
+ package_info_qs = UnicomCombo.objects.filter(id=exchange_code_qs[0]['package_id'], is_del=False) \
|
|
|
+ .values('package_id')
|
|
|
+ if not package_info_qs.exists():
|
|
|
+ return response.json(173)
|
|
|
+ package_code = package_info_qs[0]['package_id']
|
|
|
+ iccid = device_info_qs[0]['iccid']
|
|
|
+ # 五兴订购流量包请求参数
|
|
|
+ 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':
|
|
|
+ experience_history_vo = {'iccid': iccid, 'experience_type': 1, 'do_time': int(time.time())}
|
|
|
+ UnicomComboExperienceHistory.objects.create(**experience_history_vo)
|
|
|
+ exchange_code_qs.update(status=True)
|
|
|
+ return response.json(0)
|
|
|
+ return response.json(10040)
|
|
|
+ except Exception as e:
|
|
|
+ LOGGER.info('*****WXTechController.delete_card_package:errLine:{}, errMsg:{}'
|
|
|
+ .format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+ return response.json(500, repr(e))
|