Bladeren bron

修复查询订单列表接口、优化批量重置、修改停用云存套餐接口

zhangdongming 1 jaar geleden
bovenliggende
commit
86929e2321
3 gewijzigde bestanden met toevoegingen van 60 en 35 verwijderingen
  1. 23 17
      AdminController/ServeManagementController.py
  2. 32 16
      AdminController/UnicomManageController.py
  3. 5 2
      Controller/OrderContrller.py

+ 23 - 17
AdminController/ServeManagementController.py

@@ -1634,9 +1634,6 @@ class serveManagement(View):
         @param request_dict:
         @param response:
         """
-        status = request_dict.get('status', None)
-        if status in [1, 5, 6, 7]:  # 付款状态
-            return response.json(10059)
         uid = request_dict.get('uid', None)
         orderID = request_dict.get('orderID', None)
         orderType = request_dict.get('orderType', None)
@@ -1650,24 +1647,33 @@ class serveManagement(View):
             with transaction.atomic():
                 #  云存套餐
                 if orderType == '0' and payType != '10':
+                    AiService.objects.filter(orders=orderID).delete()  # 删除AI服务
                     order_qs = Order_Model.objects.filter(orderID=orderID, userID__username=userName, UID=uid).values(
-                        'rank__bucket_id')
+                        'rank__bucket_id', 'payTime', 'rank__expire')
                     if not order_qs.exists():
                         return response.json(14)
-                    uid_bucket_qs = UID_Bucket.objects.filter(uid=uid, use_status=1).values('has_unused')
-                    has_unused = uid_bucket_qs[0]['has_unused'] if uid_bucket_qs.exists() else ''
-                    #  判断套餐是否唯一
-                    if has_unused == 0:
-                        uid_bucket_qs.update(endTime=nowTime)
-                        CronUpdateDataView.updateUnusedUidBucket(response)
-                        return response.json(0)
-                    # 当设备套餐不唯一时
-                    # 判断停用套餐是否是为未使用套餐
-                    unused_uid_Meal_qs = Unused_Uid_Meal.objects.filter(uid=uid,
-                                                                        bucket_id=order_qs[0]['rank__bucket_id'])
-                    unused_uid_Meal_number = unused_uid_Meal_qs.count()
-                    if unused_uid_Meal_number == 1:
+                    pay_time = order_qs[0]['payTime']
+                    bucket_id = order_qs[0]['rank__bucket_id']
+                    expire = order_qs[0]['rank__expire']
+                    unused_uid_Meal_qs = Unused_Uid_Meal.objects.filter(order_id=orderID)
+                    if unused_uid_Meal_qs.exists():  # 如果能通过订单id查询到未使用套餐则删除套餐
                         unused_uid_Meal_qs.delete()
+                        unused_meal_qs = Unused_Uid_Meal.objects.filter(uid=uid)
+                        if not unused_meal_qs.exists():
+                            UID_Bucket.objects.filter(uid=uid).update(has_unused=0, updateTime=nowTime)
+                        return response.json(0)
+                    unused_uid_Meal_qs = Unused_Uid_Meal.objects.filter(uid=uid, bucket_id=bucket_id)
+                    if unused_uid_Meal_qs.exists():  # 如果通过uid查询到未使用套餐则删除套餐
+                        unused_uid_Meal_qs.first().delete()
+                        unused_meal_qs = Unused_Uid_Meal.objects.filter(uid=uid)
+                        if not unused_meal_qs.exists():
+                            UID_Bucket.objects.filter(uid=uid).update(has_unused=0, updateTime=nowTime)
+                        return response.json(0)
+                    uid_bucket_qs = UID_Bucket.objects.filter(uid=uid, use_status=1).values('endTime')
+                    if uid_bucket_qs.exists():  # 如果通过uid查询正在使用的套餐,则更新过期时间和使用状态
+                        end_time = pay_time + uid_bucket_qs[0]['endTime'] - CommonService.calcMonthLater(expire, pay_time)
+                        use_status = 2 if end_time < nowTime else 1
+                        uid_bucket_qs.update(endTime=end_time, use_status=use_status, updateTime=nowTime)
                         return response.json(0)
                     return response.json(10059)  # 未使用套餐类型重复
                 #  AI套餐

+ 32 - 16
AdminController/UnicomManageController.py

@@ -7,6 +7,7 @@
 import datetime
 import hashlib
 import json
+import threading
 import time
 import uuid
 from decimal import Decimal
@@ -89,7 +90,7 @@ class UnicomManageControllerView(View):
                 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, tko.user)
             elif operation == 'getPackageDetails':
                 return self.get_package_details(request_dict, response)
@@ -1011,7 +1012,7 @@ class UnicomManageControllerView(View):
         获取4G流量套餐列表
         @return: 套餐列表
         """
-        combo_qs = UnicomCombo.objects.filter(is_del=False, combo_type__in=[0, 3])
+        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')
@@ -1064,8 +1065,17 @@ class UnicomManageControllerView(View):
         iccid批量重置流量
         """
         file = request.FILES['file']
+        binding_type = int(request_dict.get('type', 0))
         if not file:
             return response.json(444)
+        ip = CommonService.get_ip_address(request)
+        asy = threading.Thread(target=UnicomManageControllerView().async_bulk_reset_flow_package,
+                               args=(file, user, ip, binding_type))
+        asy.start()
+        return response.json(0)
+
+    @staticmethod
+    def async_bulk_reset_flow_package(file, user, ip, binding_type):
         err_data = []
         for line in file:
             serial_number = line.decode().strip()[0:9]
@@ -1077,10 +1087,13 @@ class UnicomManageControllerView(View):
                     continue
 
                 iccid = device_info_qs.first().iccid
-                # 根据序列号重置出厂流量套餐
-                serial_package_qs = SerialNumberPackage.objects.filter(~Q(status=1), serial_number=serial_number)
-                if serial_package_qs.exists():
-                    serial_package_qs.update(status=1, updated_time=now_time, updated_by=user)
+                if binding_type == 1:
+                    SerialNumberPackage.objects.filter(serial_number=serial_number).delete()
+                else:
+                    # 根据序列号重置出厂流量套餐
+                    serial_package_qs = SerialNumberPackage.objects.filter(~Q(status=1), serial_number=serial_number)
+                    if serial_package_qs.exists():
+                        serial_package_qs.update(status=1, updated_time=now_time, updated_by=user)
 
                 if device_info_qs.first().card_type == 1:  # 五兴电信
                     data = {'iccids': iccid, 'operator': WXOperatorEnum.TELECOM.value}
@@ -1099,27 +1112,28 @@ class UnicomManageControllerView(View):
                 if sys_msg_qs.exists():  # 删除有关系统消息数据
                     sys_msg_qs.delete()
                 # 将4G用户信息状态改为已完成测试状态
-                device_info_qs.update(status=1, updated_time=now_time, user_id='')
+                device_info_qs.update(status=2, updated_time=now_time, user_id='')
 
                 combo_order_qs = UnicomComboOrderInfo.objects.filter(iccid=iccid)
-                if combo_order_qs.exists():
+                if combo_order_qs.exists():  # 所有套餐删除
                     combo_order_qs.delete()
 
                 combo_experience_history_qs = UnicomComboExperienceHistory.objects.filter(iccid=iccid)
-                if combo_experience_history_qs.exists():
+                if combo_experience_history_qs.exists():  # 删除免费体验流量记录
                     combo_experience_history_qs.delete()
-                UnicomObjeect().change_device_to_disable(iccid)  # 重置流量停用设备
-                # 记录日志,清除缓存
-                ip = CommonService.get_ip_address(request)
-                describe = '重置4G流量序列号{},iccid:{}'.format(serial_number, iccid)
+                result = UnicomComboView().activate_test_flow_package(serial_number)  # 订购新的100M测试流量
+
+                describe = '批量重置4G流量序列号{},iccid:{},{}'.format(serial_number, iccid, result)
                 key = f'ASJ:UNICOM:CARD:ACTIVATE:{serial_number}'
                 redis = RedisObject()
                 redis.del_data(key)
-                cls.create_operation_log('unicom/manage/iccidBatchReset', ip, request_dict, describe)
+                UnicomManageControllerView().create_operation_log('unicom/manage/iccidBatchReset', ip, binding_type,
+                                                                  describe)
                 continue
             except Exception as e:
                 err_data.append({'serialNumber': serial_number, 'msg': '重置流量异常:{}'.format(repr(e))})
-        return response.json(0, err_data)
+                continue
+        LOGGER.info(f'批量重置流量type={binding_type},err_data={err_data}')
 
     @classmethod
     def serial_number_package_page(cls, request_dict, response):
@@ -1249,6 +1263,9 @@ class UnicomManageControllerView(View):
                     package_info['status'] = 1
                     package_info['flow_total_usage'] = unicom_api.get_flow_usage_total(iccid)
                 UnicomComboOrderInfo.objects.create(**package_info)
+                # 设置旧套餐状态为2
+                u_package_query_set.update(status=2, updated_time=int(time.time()))
+
             else:
                 UnicomComboView.create_combo_order_info(now_order, 0, iccid, package_id)
 
@@ -1259,4 +1276,3 @@ class UnicomManageControllerView(View):
             LOGGER.info('UnicomManageControllerView.transfer_device_package, errLine:{}, errMsg:{}'.format(
                 e.__traceback__.tb_lineno, repr(e)))
             return response.json(500)
-

+ 5 - 2
Controller/OrderContrller.py

@@ -110,7 +110,7 @@ class OrderView(View):
                                                               "updTime", "paypal", "rank__day", "payType",
                                                               "rank__price", "status",
                                                               "rank__lang__content", "rank__title", "rank__currency",
-                                                              "rank_id","rank__expire")
+                                                              "rank_id", "rank__expire", 'store_meal_name', 'order_type')
         order_list = list(order_ql)
         data = []
         nowTime = int(time.time())
@@ -132,7 +132,10 @@ class OrderView(View):
                         d['serial_number'] = CommonService.get_full_serial_number(d['UID'], did['serial_number'], did['Type'])
                     data.append(d)
             d['rank__content'] = d['rank__lang__content']
-            d['rank__title'] = d['rank__title'] + '-' +d['rank__lang__content']
+            if d['order_type'] > 1:
+                d['rank__title'] = d['store_meal_name']
+            else:
+                d['rank__title'] = d['rank__title'] + '-' +d['rank__lang__content']
             del d['rank__lang__content']
             # d['rank__lang__content'] = '月' if lang == 'cn' else 'month'
         return response.json(0, {'data': data, 'count': count})