|
@@ -54,6 +54,8 @@ class WXTechController(View):
|
|
|
def validation(self, request_dict, request, operation):
|
|
|
if operation == 'deleteCardPackage':
|
|
|
return self.delete_card_package(request_dict, ResponseObject('cn'))
|
|
|
+ elif operation == 'packageRefund':
|
|
|
+ return self.wx_package_refund(request_dict, ResponseObject('cn'))
|
|
|
token_code, user_id, response = CommonService \
|
|
|
.verify_token_get_user_id(request_dict, request)
|
|
|
if token_code != 0:
|
|
@@ -65,7 +67,37 @@ class WXTechController(View):
|
|
|
elif operation == 'createOrder':
|
|
|
return self.create_order_package(request_dict, response)
|
|
|
elif operation == 'exchangePackage':
|
|
|
- return self.wx_exchange_package(request_dict, response, request)
|
|
|
+ return self.wx_exchange_package(request_dict, response, request, user_id)
|
|
|
+
|
|
|
+ @classmethod
|
|
|
+ def wx_package_refund(cls, request_dict, response):
|
|
|
+ """
|
|
|
+ 五兴套餐退订
|
|
|
+ """
|
|
|
+ try:
|
|
|
+ serial_number = request_dict.get('serialNumber', None)
|
|
|
+ if not serial_number:
|
|
|
+ return response(444)
|
|
|
+ device_qs = UnicomDeviceInfo.objects.filter(serial_no=serial_number).values('iccid')
|
|
|
+ if not device_qs.exists():
|
|
|
+ return response(173)
|
|
|
+ uid = CommonService.query_uid_with_serial(serial_number)
|
|
|
+ order_info_qs = Order_Model.objects.filter(UID=uid, order_type=3).values('trade_no') \
|
|
|
+ .order_by('-payTime')
|
|
|
+ if not order_info_qs.exists():
|
|
|
+ return response(173)
|
|
|
+ iccid = device_qs[0]['iccid']
|
|
|
+ trade_no = order_info_qs[0]['trade_no']
|
|
|
+ data = {'iccid': iccid, 'operator': 3, 'orderNumber': trade_no}
|
|
|
+ wx_tech = WXTechObject()
|
|
|
+ res = wx_tech.package_refund(**data)
|
|
|
+ if res['code'] == '0':
|
|
|
+ return response.json(0)
|
|
|
+ return response.json(10059)
|
|
|
+ except Exception as e:
|
|
|
+ LOGGER.info('*****WXTechController.get_cards_info:errLine:{}, errMsg:{}'
|
|
|
+ .format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+ return response.json(500, repr(e))
|
|
|
|
|
|
@classmethod
|
|
|
def get_cards_info(cls, request_dict, response):
|
|
@@ -160,12 +192,17 @@ class WXTechController(View):
|
|
|
return response.json(500, repr(e))
|
|
|
|
|
|
@classmethod
|
|
|
- def created_order(cls, serial_no, user_id, trade_no):
|
|
|
+ def created_order(cls, serial_no, user_id, trade_no, combo_id=None):
|
|
|
"""
|
|
|
创建系统订单
|
|
|
"""
|
|
|
- combo_info_qs = UnicomCombo.objects.filter(combo_type=1, status=0, is_del=False) \
|
|
|
- .values('id', 'combo_name', 'price', 'virtual_price', 'remark').order_by('sort')
|
|
|
+ combo_info_qs = UnicomCombo.objects.filter(is_del=False)
|
|
|
+ if combo_id:
|
|
|
+ combo_info_qs = combo_info_qs.filter(id=int(combo_id))
|
|
|
+ else:
|
|
|
+ combo_info_qs = combo_info_qs.filter(combo_type=1, status=0)
|
|
|
+ combo_info_qs = combo_info_qs.values('id', 'combo_name', 'price', 'virtual_price', 'remark') \
|
|
|
+ .order_by('sort')
|
|
|
if not combo_info_qs.exists():
|
|
|
return False
|
|
|
combo_info_vo = combo_info_qs[0]
|
|
@@ -216,7 +253,7 @@ class WXTechController(View):
|
|
|
return response.json(500, repr(e))
|
|
|
|
|
|
@classmethod
|
|
|
- def wx_exchange_package(cls, request_dict, response, request):
|
|
|
+ def wx_exchange_package(cls, request_dict, response, request, user_id):
|
|
|
"""
|
|
|
使用兑换码订购五兴五年流量套餐包
|
|
|
"""
|
|
@@ -240,8 +277,9 @@ class WXTechController(View):
|
|
|
.values('package_id', 'expire_time')
|
|
|
if not exchange_code_qs.exists():
|
|
|
return response.json(10040) # 兑换码无效
|
|
|
+ combo_id = exchange_code_qs[0]['package_id']
|
|
|
# 获取五兴套餐套餐编码
|
|
|
- package_info_qs = UnicomCombo.objects.filter(id=exchange_code_qs[0]['package_id'], is_del=False) \
|
|
|
+ package_info_qs = UnicomCombo.objects.filter(id=combo_id, is_del=False) \
|
|
|
.values('package_id')
|
|
|
if not package_info_qs.exists():
|
|
|
return response.json(173)
|
|
@@ -255,9 +293,9 @@ class WXTechController(View):
|
|
|
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)
|
|
|
+ trade_no = res['data']['orderNumber']
|
|
|
+ cls.created_order(serial_number, user_id, trade_no, combo_id)
|
|
|
+ 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))
|