Quellcode durchsuchen

联通新增设备调用接口、优化套餐激活过期消息推送

zhangdongming vor 3 Jahren
Ursprung
Commit
ac58254ea9

+ 30 - 1
Controller/UnicomCombo/UnicomComboController.py

@@ -57,6 +57,8 @@ class UnicomComboView(View):
             return self.device_add(request_dict, response)
             return self.device_add(request_dict, response)
         elif operation == 'device-status':
         elif operation == 'device-status':
             return self.update_device_status(request_dict, response)
             return self.update_device_status(request_dict, response)
+        elif operation == 'update-card':
+            return self.update_device_card_type(request_dict, response)
         elif operation == 'xxx-sign':
         elif operation == 'xxx-sign':
             return self.get_test_sign(request_dict, response)
             return self.get_test_sign(request_dict, response)
         else:
         else:
@@ -121,7 +123,7 @@ class UnicomComboView(View):
                 }
                 }
                 activate_flow = float(flow_details['flowTotalUsage'])
                 activate_flow = float(flow_details['flowTotalUsage'])
                 flow_total_usage = unicom_api.get_flow_usage_total(iccid)
                 flow_total_usage = unicom_api.get_flow_usage_total(iccid)
-                flow = flow_total_usage - activate_flow
+                flow = 0 if flow_total_usage <= 0 else flow_total_usage - activate_flow
                 flow_details['usableFlow'] = flow_details['flowTotal'] - flow
                 flow_details['usableFlow'] = flow_details['flowTotal'] - flow
 
 
                 flow_details['usableFlow'] = \
                 flow_details['usableFlow'] = \
@@ -235,6 +237,33 @@ class UnicomComboView(View):
             logger.info('PC工具重置异常ICCID{},msg={}'.format(iccid, ex))
             logger.info('PC工具重置异常ICCID{},msg={}'.format(iccid, ex))
             return response.json(177, ex)
             return response.json(177, ex)
 
 
+    @classmethod
+    def update_device_card_type(cls, request_dict, response):
+        """
+        修改设备卡类型(0:内置卡,1:外插卡)
+        """
+        serial_no = request_dict.get('serialNo', None)
+        time_stamp = request_dict.get('timeStamp', None)
+        sign = request_dict.get('sign', None)
+        main_card = request_dict.get('type', None)
+        if not all([serial_no, main_card, sign, time_stamp]):
+            return response.json(444)
+        try:
+            if not CommonService.check_time_stamp_token(sign, time_stamp):
+                return response.json(13)
+            now_time = int(time.time())
+            with transaction.atomic():
+                unicom_device_qs = UnicomDeviceInfo.objects.filter(serial_no=serial_no)
+                if not unicom_device_qs.exists():
+                    return response.json(173)
+                unicom_device_qs.update(main_card=int(main_card), updated_time=now_time)
+                return response.json(0)
+        except Exception as e:
+            print(e.args)
+            ex = traceback.format_exc()
+            print(ex)
+            return response.json(177, ex)
+
     @classmethod
     @classmethod
     def get_device_info(cls, request_dict, response):
     def get_device_info(cls, request_dict, response):
         """
         """

+ 35 - 7
Controller/UnicomCombo/UnicomComboTaskController.py

@@ -8,6 +8,7 @@
 """
 """
 import datetime
 import datetime
 import logging
 import logging
+import threading
 import time
 import time
 from decimal import Decimal
 from decimal import Decimal
 
 
@@ -19,6 +20,8 @@ from Model.models import UnicomComboOrderInfo, UnicomCombo, Order_Model, UnicomD
 from Object.ResponseObject import ResponseObject
 from Object.ResponseObject import ResponseObject
 from Object.UnicomObject import UnicomObjeect
 from Object.UnicomObject import UnicomObjeect
 
 
+logger = logging.getLogger('info')
+
 
 
 class UnicomComboTaskView(View):
 class UnicomComboTaskView(View):
 
 
@@ -56,7 +59,6 @@ class UnicomComboTaskView(View):
         @param response:
         @param response:
         @return:
         @return:
         """
         """
-        logger = logging.getLogger('info')
         print(request_dict)
         print(request_dict)
         logger.info('--->进入监控次月激活联通套餐')
         logger.info('--->进入监控次月激活联通套餐')
         now_time = int(time.time())
         now_time = int(time.time())
@@ -106,7 +108,6 @@ class UnicomComboTaskView(View):
         检查流量使用情况
         检查流量使用情况
         @return:
         @return:
         """
         """
-        logger = logging.getLogger('info')
         logger.info('--->进入监控流量使用情况')
         logger.info('--->进入监控流量使用情况')
         try:
         try:
             unicom_api = UnicomObjeect()
             unicom_api = UnicomObjeect()
@@ -171,7 +172,6 @@ class UnicomComboTaskView(View):
         @param flow_usage: 套餐已使用流量
         @param flow_usage: 套餐已使用流量
         @return:
         @return:
         """
         """
-        logger = logging.getLogger('info')
         try:
         try:
             if not app_user_id:
             if not app_user_id:
                 return False
                 return False
@@ -204,7 +204,6 @@ class UnicomComboTaskView(View):
         @param usage_flow:
         @param usage_flow:
         @return:
         @return:
         """
         """
-        logger = logging.getLogger('info')
         try:
         try:
             now_time = int(time.time())
             now_time = int(time.time())
             combo_order_qs = UnicomComboOrderInfo.objects \
             combo_order_qs = UnicomComboOrderInfo.objects \
@@ -224,12 +223,16 @@ class UnicomComboTaskView(View):
                 'year': year,
                 'year': year,
                 'month': month,
                 'month': month,
                 'flow_total_usage': str(usage_flow),
                 'flow_total_usage': str(usage_flow),
+                'activation_time': now_time,
                 'updated_time': now_time,
                 'updated_time': now_time,
             }
             }
             UnicomComboOrderInfo.objects.filter(id=combo_order.id).update(**upd_data)
             UnicomComboOrderInfo.objects.filter(id=combo_order.id).update(**upd_data)
+            asy = threading.Thread(target=UnicomComboTaskView.async_combo_sys_msg_push,
+                                   args=(iccid, combo_order.id, 3))
+            asy.start()
             return True
             return True
         except Exception as e:
         except Exception as e:
-            logger.info('出错了~检测流量用量详情异常,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+            logger.info('出错了~激活套餐,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
             return False
             return False
 
 
     @classmethod
     @classmethod
@@ -239,7 +242,6 @@ class UnicomComboTaskView(View):
         @param response:
         @param response:
         @return:
         @return:
         """
         """
-        logger = logging.getLogger('info')
         logger.info('--->进入监控流量到期停卡或激活叠加包')
         logger.info('--->进入监控流量到期停卡或激活叠加包')
         now_time = int(time.time())
         now_time = int(time.time())
         combo_order_qs = UnicomComboOrderInfo.objects.filter(~Q(status=2), expire_time__lte=now_time,
         combo_order_qs = UnicomComboOrderInfo.objects.filter(~Q(status=2), expire_time__lte=now_time,
@@ -257,7 +259,7 @@ class UnicomComboTaskView(View):
                     um_device_qs = UnicomDeviceInfo.objects.filter(iccid=icc_id)
                     um_device_qs = UnicomDeviceInfo.objects.filter(iccid=icc_id)
                     if not um_device_qs.exists():
                     if not um_device_qs.exists():
                         continue
                         continue
-                    UnicomComboOrderInfo.objects.filter(id=item['id']).update(status=2)
+                    UnicomComboOrderInfo.objects.filter(id=item['id']).update(status=2, updated_time=now_time)
                     iccid_list.append(icc_id)
                     iccid_list.append(icc_id)
                     logger.info('--->当前流量套餐已过期,iccid:{}'.format(icc_id))
                     logger.info('--->当前流量套餐已过期,iccid:{}'.format(icc_id))
                 except Exception as e:
                 except Exception as e:
@@ -276,6 +278,32 @@ class UnicomComboTaskView(View):
             if not result:
             if not result:
                 # 停用设备
                 # 停用设备
                 unicom_api.change_device_to_disable(item)
                 unicom_api.change_device_to_disable(item)
+                combo_order_info_qs = UnicomComboOrderInfo.objects.filter(iccid=item, status=2) \
+                    .values('id').order_by('-updated_time')
+                combo_order = combo_order_info_qs.first()
+                asy = threading.Thread(target=UnicomComboTaskView.async_combo_sys_msg_push,
+                                       args=(icc_id, combo_order['id'], 4))
+                asy.start()
             else:
             else:
                 unicom_api.change_device_to_activate(item)
                 unicom_api.change_device_to_activate(item)
         return response.json(0)
         return response.json(0)
+
+    @staticmethod
+    def async_combo_sys_msg_push(iccid, combo_order_id, push_type):
+        """
+        异步保存消息推送 激活|过期
+        @param iccid:
+        @param combo_order_id:
+        @param push_type:
+        @return:
+        """
+        try:
+            now_time = int(time.time())
+            ud_info_qs = UnicomDeviceInfo.objects.filter(iccid=iccid).values('serial_no', 'user_id')
+            push_data = {'combo_order_id': str(combo_order_id), 'serial_no': ud_info_qs.first()['serial_no'],
+                         'status': 0, 'type': push_type,
+                         'updated_time': now_time,
+                         'created_time': now_time, 'user_id': ud_info_qs.first()['user_id']}
+            UnicomFlowPush.objects.create(**push_data)
+        except Exception as e:
+            logger.info('-->出错了~,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))