|
@@ -220,7 +220,7 @@ class WXTechController(View):
|
|
|
'store_meal_name': combo_info_vo['combo_name'],
|
|
|
'trade_no': trade_no}
|
|
|
Order_Model.objects.create(**order_dict)
|
|
|
- return True
|
|
|
+ return order_id
|
|
|
|
|
|
@classmethod
|
|
|
def delete_card_package(cls, request_dict, response):
|
|
@@ -267,14 +267,13 @@ class WXTechController(View):
|
|
|
# 校验兑换码格式是否正确
|
|
|
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) \
|
|
|
+ device_info_qs = UnicomDeviceInfo.objects.filter(serial_no=serial_number) \
|
|
|
.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')
|
|
|
+ exchange_code_qs = ExchangeCode.objects.filter(code=code, status=False) \
|
|
|
+ .values('package_id', 'expire_time', 'package_type')
|
|
|
if not exchange_code_qs.exists():
|
|
|
return response.json(10040) # 兑换码无效
|
|
|
combo_id = exchange_code_qs[0]['package_id']
|
|
@@ -285,19 +284,29 @@ class WXTechController(View):
|
|
|
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':
|
|
|
- trade_no = res['data']['orderNumber']
|
|
|
- cls.created_order(serial_number, user_id, trade_no, combo_id, 11)
|
|
|
- exchange_code_qs.update(status=True, updated_time=int(time.time()))
|
|
|
- cls.save_log(ip, 200, '兑换成功{},{}'.format(serial_number, code))
|
|
|
- return response.json(0)
|
|
|
+ # 兑换码套餐类型
|
|
|
+ package_type = exchange_code_qs[0]['package_type']
|
|
|
+ if package_type == 0: # 联通无限流量兑换码
|
|
|
+ result = cls.exchange_unicom_package(serial_number, iccid,
|
|
|
+ user_id, combo_id)
|
|
|
+ if result:
|
|
|
+ exchange_code_qs.update(status=True, updated_time=int(time.time()))
|
|
|
+ cls.save_log(ip, 200, '兑换成功{},{}'.format(serial_number, code))
|
|
|
+ return response.json(0)
|
|
|
+ elif package_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)
|
|
|
+ exchange_code_qs.update(status=True, updated_time=int(time.time()))
|
|
|
+ cls.save_log(ip, 200, '兑换成功{},{}'.format(serial_number, code))
|
|
|
+ return response.json(0)
|
|
|
cls.save_log(ip, 10040, '兑换失败{},{}'.format(serial_number, code))
|
|
|
return response.json(10040)
|
|
|
except Exception as e:
|
|
@@ -306,6 +315,19 @@ class WXTechController(View):
|
|
|
cls.save_log(ip, 500, '兑换内部错误')
|
|
|
return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
|
|
|
+ @classmethod
|
|
|
+ def exchange_unicom_package(cls, serial_number, iccid, user_id, combo_id):
|
|
|
+ try:
|
|
|
+ # 通过兑换码创建订单记录
|
|
|
+ order_id = cls.created_order(serial_number, user_id, 'ansjer', combo_id, 11)
|
|
|
+ # 根据订单信息创建流量套餐包
|
|
|
+ UnicomComboView.create_combo_order_info(order_id, 0, iccid, combo_id)
|
|
|
+ return True
|
|
|
+ except Exception as e:
|
|
|
+ LOGGER.info('*****WXTechController.exchange_unicom_package:errLine:{}, errMsg:{}'
|
|
|
+ .format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+ return False
|
|
|
+
|
|
|
@staticmethod
|
|
|
def save_log(ip, code, operation):
|
|
|
"""
|