Эх сурвалжийг харах

新增五兴电信兑换码订购接口

zhangdongming 2 жил өмнө
parent
commit
e863176ae8

+ 52 - 1
Controller/UnicomCombo/WXTechController.py

@@ -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))