Jelajahi Sumber

后台新增4G兑换码接口、优化设备影子异常打印、增加查询4G设备有效套餐接口

zhangdongming 1 tahun lalu
induk
melakukan
785bd83133

+ 94 - 1
AdminController/UnicomManageController.py

@@ -85,12 +85,18 @@ class UnicomManageControllerView(View):
                 return self.get_iccid_info(request_dict, response)
                 return self.get_iccid_info(request_dict, response)
             elif operation == 'batchGenerateCDK':  # 批量生成兑换码
             elif operation == 'batchGenerateCDK':  # 批量生成兑换码
                 return self.create_package_cdk(request_dict, response)
                 return self.create_package_cdk(request_dict, response)
+            elif operation == 'getExchangeCodePage':  # 分页获取兑换码
+                return self.get_exchange_code_page(request_dict, response)
+            elif operation == 'updateExchangeCode':  # 修改兑换码
+                return self.update_exchange_code(request_dict, response)
             elif operation == 'resetCardPackage':
             elif operation == 'resetCardPackage':
                 return self.reset_card_package(request, request_dict, response)
                 return self.reset_card_package(request, request_dict, response)
             elif operation == 'getPackageDetails':
             elif operation == 'getPackageDetails':
                 return self.get_package_details(request_dict, response)
                 return self.get_package_details(request_dict, response)
             elif operation == 'asyncUpdateStatus':
             elif operation == 'asyncUpdateStatus':
                 return self.async_update_status(request_dict, response)
                 return self.async_update_status(request_dict, response)
+            elif operation == 'getFlowComboList':  # 获取流量套餐列表
+                return self.get_flow_combo_list(request_dict, response)
             else:
             else:
                 return response.json(404)
                 return response.json(404)
 
 
@@ -129,7 +135,6 @@ class UnicomManageControllerView(View):
                 UnicomObjeect().change_device_to_disable(iccid)  # 重置流量停用设备
                 UnicomObjeect().change_device_to_disable(iccid)  # 重置流量停用设备
                 ip = CommonService.get_ip_address(request)
                 ip = CommonService.get_ip_address(request)
                 describe = '重置4G流量序列号{},iccid:{}'.format(serial_number, iccid)
                 describe = '重置4G流量序列号{},iccid:{}'.format(serial_number, iccid)
-                cls.generate_card_package_order(iccid, serial_number)
                 cls.create_operation_log('unicom/manage/resetCardPackage', ip, request_dict, describe)
                 cls.create_operation_log('unicom/manage/resetCardPackage', ip, request_dict, describe)
                 return response.json(0)
                 return response.json(0)
             return response.json(173)
             return response.json(173)
@@ -871,3 +876,91 @@ class UnicomManageControllerView(View):
             unicom_service.change_device_to_disable(iccid)
             unicom_service.change_device_to_disable(iccid)
             return response.json(0)
             return response.json(0)
         return response.json(902)
         return response.json(902)
+
+    @classmethod
+    def get_exchange_code_page(cls, request_dict, response):
+        """
+        分页获取兑换码
+        @return: 分页数据
+        """
+        pageSize = request_dict.get('pageSize', None)
+        pageNo = request_dict.get('pageNo', None)
+        code = request_dict.get('code', None)
+        is_down = request_dict.get('isDown', None)
+        if not all({pageNo, pageSize}):
+            return response.json(444)
+        page = int(pageNo)
+        line = int(pageSize)
+        try:
+            code_qs = ExchangeCode.objects.all()
+            if code:
+                code_qs = code_qs.filter(code__icontains=code)
+            if is_down:
+                code_qs = code_qs.filter(is_down=int(is_down))
+            code_list = []
+            total = code_qs.count()
+            result = {'total': total, 'data': code_list}
+            code_qs = code_qs.order_by('-created_time')[(page - 1) * line:page * line]
+            if not code_qs.exists():
+                return response.json(0, result)
+            for item in code_qs:
+                combo_name = UnicomCombo.objects.filter(id=item.package_id)[0].combo_name
+                code_list.append({
+                    'id': item.id,
+                    'code': item.code,
+                    'status': item.status,
+                    'isDown': item.is_down,
+                    'packageType': item.package_type,
+                    'comboName': combo_name,
+                    'expireTime': item.expire_time,
+                    'createdTime': item.created_time,
+                    'updatedTime': item.updated_time
+                })
+            result['data'] = code_list
+            return response.json(0, result)
+        except Exception as e:
+            LOGGER.info('异常详情,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+            return response.json(500)
+
+    @classmethod
+    def update_exchange_code(cls, request_dict, response):
+        """
+        修改兑换码数据
+        """
+        code_id = request_dict.get('id', None)
+        is_down = request_dict.get('isDown', None)
+        status = request_dict.get('status', None)
+        expire_time = request_dict.get('expireTime', None)
+        if not code_id:
+            return response.json(444)
+        try:
+            code_qs = ExchangeCode.objects.filter(id=int(code_id))
+            if not code_qs.exists():
+                return response.json(173)
+            params = {}
+            if is_down:
+                params['is_down'] = int(is_down)
+            if status:
+                params['status'] = int(status)
+            if expire_time:
+                params['expire_time'] = int(expire_time)
+            if not params:
+                return response.json(0)
+            code_qs.update(**params)
+            return response.json(0)
+        except Exception as e:
+            LOGGER.info('异常详情,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+            return response.json(500)
+
+    @classmethod
+    def get_flow_combo_list(cls, request_dict, response):
+        """
+        获取4G流量套餐列表
+        @return: 套餐列表
+        """
+        combo_qs = UnicomCombo.objects.filter(is_del=False)
+        if not combo_qs.exists():
+            return response.json(173)
+        combo_qs = combo_qs.values('id', 'combo_name').order_by('-created_time')
+        flow_combo_list = list(combo_qs)
+        return response.json(0, flow_combo_list)

+ 1 - 1
Controller/ShadowController.py

@@ -172,7 +172,7 @@ def update_device_shadow(request):
         LOGGER.info('***设备影子保存成功{}'.format(uid))
         LOGGER.info('***设备影子保存成功{}'.format(uid))
         return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': {}})
         return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': {}})
     except Exception as e:
     except Exception as e:
-        LOGGER.info('更新设备影子异常: {}'.format(repr(e)))
+        LOGGER.info('更新设备影子异常: errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
         return JsonResponse(status=200, data={'code': 1000001, 'update_shadow_error': repr(e)})
         return JsonResponse(status=200, data={'code': 1000001, 'update_shadow_error': repr(e)})
 
 
 
 

+ 38 - 0
Controller/UnicomCombo/UnicomComboController.py

@@ -18,14 +18,17 @@ from django.db.models import Q
 from django.http import HttpResponse, JsonResponse
 from django.http import HttpResponse, JsonResponse
 from django.views.generic.base import View
 from django.views.generic.base import View
 
 
+from Ansjer.config import LOGGER
 from Model.models import UnicomDeviceInfo, UnicomCombo, Pay_Type, Order_Model, Store_Meal, AiStoreMeal, \
 from Model.models import UnicomDeviceInfo, UnicomCombo, Pay_Type, Order_Model, Store_Meal, AiStoreMeal, \
     UnicomComboOrderInfo, UnicomComboExperienceHistory, UnicomDeviceStatusChangePush, SysMsgModel, UnicomFlowPush, \
     UnicomComboOrderInfo, UnicomComboExperienceHistory, UnicomDeviceStatusChangePush, SysMsgModel, UnicomFlowPush, \
     LogModel, DeviceLiveRestrict
     LogModel, DeviceLiveRestrict
 from Object.EIoTClubObject import EIoTClubObject
 from Object.EIoTClubObject import EIoTClubObject
+from Object.Enums.WXOperatorEnum import WXOperatorEnum
 from Object.RedisObject import RedisObject
 from Object.RedisObject import RedisObject
 from Object.ResponseObject import ResponseObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.TokenObject import TokenObject
 from Object.UnicomObject import UnicomObjeect
 from Object.UnicomObject import UnicomObjeect
+from Object.WXTechObject import WXTechObject
 from Object.utils import LocalDateTimeUtil
 from Object.utils import LocalDateTimeUtil
 from Object.utils.PayUtil import PayService
 from Object.utils.PayUtil import PayService
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
@@ -86,6 +89,8 @@ class UnicomComboView(View):
                 return self.user_combo_query(user_id, request_dict, response)
                 return self.user_combo_query(user_id, request_dict, response)
             elif operation == 'getDeviceLiveRestrictList':
             elif operation == 'getDeviceLiveRestrictList':
                 return self.get_device_live_restrict_list(request_dict, response)
                 return self.get_device_live_restrict_list(request_dict, response)
+            elif operation == 'getDevice4GPackage':
+                return self.get_device_4G_package(request_dict, response)
             else:
             else:
                 return response.json(0)
                 return response.json(0)
 
 
@@ -991,3 +996,36 @@ class UnicomComboView(View):
         except Exception as e:
         except Exception as e:
             print('日志异常,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
             print('日志异常,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
             return False
             return False
+
+    @classmethod
+    def get_device_4G_package(cls, request_dict, response):
+        """
+        获取设备流量套餐
+        """
+        try:
+            serial_number = request_dict.get('serialNumber')
+            if not serial_number:
+                return response.json(0)
+            card_qs = UnicomDeviceInfo.objects.filter(serial_no=serial_number)
+            if not card_qs.exists():
+                return response.json(0)
+            card_info = card_qs.first()
+            if card_info.card_type == 0:  # 联通
+                card_order_qs = UnicomComboOrderInfo.objects.filter(iccid=card_info.iccid, status=1)
+                if not card_order_qs:
+                    LOGGER.info(f'error{card_info.serial_no}该设备没有有效套餐')
+                    return response.json(10069)
+                return response.json(0)
+            elif card_info.card_type == 1:  # 电信
+                wx_tech = WXTechObject()
+                data = {'iccid': card_info.iccid, 'operator': WXOperatorEnum.TELECOM}
+                result = wx_tech.get_package_order_record(**data)
+                if not result:
+                    return response.json(0)
+                data = result['data']
+                status = any(item['state'] == 1 for item in data)
+                return response.json(10069) if not status else response.json(0)
+            return response.json(0)
+        except Exception as e:
+            print('日志异常,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+            return response.json(0)

+ 4 - 2
Object/ResponseObject.py

@@ -139,7 +139,8 @@ class ResponseObject(object):
             10065: 'The redemption is successful and can be viewed in Settings-4G-My Package',
             10065: 'The redemption is successful and can be viewed in Settings-4G-My Package',
             10066: 'This code has been redeemed and can be viewed in Settings-4G-My Package',
             10066: 'This code has been redeemed and can be viewed in Settings-4G-My Package',
             10067: 'Invalid redemption code',
             10067: 'Invalid redemption code',
-            10068: 'This device does not support redemption, please contact customer service'
+            10068: 'This device does not support redemption, please contact customer service',
+            10069: 'If the traffic is abnormal, check the data plan or contact customer service'
         }
         }
         data_cn = {
         data_cn = {
             0: '成功',
             0: '成功',
@@ -265,7 +266,8 @@ class ResponseObject(object):
             10065: '\t兑换成功\n可在设置-4G-我的套餐中查看',
             10065: '\t兑换成功\n可在设置-4G-我的套餐中查看',
             10066: '\t此码已兑换\n可在设置-4G-我的套餐中查看',
             10066: '\t此码已兑换\n可在设置-4G-我的套餐中查看',
             10067: '无效兑换码',
             10067: '无效兑换码',
-            10068: '兑换失败,请联系客服'
+            10068: '兑换失败,请联系客服',
+            10069: '流量异常,请查看流量套餐情况或联系客服'
         }
         }
 
 
         msg = data_cn if self.lang == 'cn' or self.lang == 'zh-Hans' or self.lang == 'zh-Hant' else data_en
         msg = data_cn if self.lang == 'cn' or self.lang == 'zh-Hans' or self.lang == 'zh-Hant' else data_en