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

优化4G流量卡订单和卡用户信息界面;新增流量套餐赠送功能

guanhailong 2 жил өмнө
parent
commit
ee9bc60554

+ 90 - 16
AdminController/UnicomManageController.py

@@ -9,8 +9,12 @@ import time
 from django.db import transaction
 from django.views.generic.base import View
 
-from Model.models import UnicomDeviceInfo, UnicomCombo, Pay_Type, UnicomComboOrderInfo, Device_User, Device_Info
+from Controller.UnicomCombo.UnicomComboController import UnicomComboView
+from Model.models import UnicomDeviceInfo, UnicomCombo, Pay_Type, UnicomComboOrderInfo, Device_User, Device_Info, \
+    Order_Model
+from Object.UnicomObject import UnicomObjeect
 from Object.ResponseObject import ResponseObject
+from Service.CommonService import CommonService
 
 
 class UnicomManageControllerView(View):
@@ -37,7 +41,7 @@ class UnicomManageControllerView(View):
         # 添加和编辑卡套餐
         elif operation == 'edit/combo':
             return self.edit_combo(request_dict, response)
-        # 获取/筛选设备套餐订单信息
+        # 获取/筛选4G流量卡订单信息
         elif operation == 'order/info':
             return self.get_order_info(request_dict, response)
         # 统计4G套餐
@@ -49,6 +53,9 @@ class UnicomManageControllerView(View):
         # 获取/筛选用户信息
         elif operation == 'filter/user':
             return self.get_user_info(request_dict, response)
+        # 充值流量
+        elif operation == 'getFlowPackages':
+            return self.get_flow_packages(request_dict, response)
 
     def get_user_info(self, request_dict, response):
         """
@@ -109,7 +116,8 @@ class UnicomManageControllerView(View):
                     'createdTime': unicom_device.created_time,
                     'updatedTime': unicom_device.updated_time
                 }
-                device_user_qs = Device_User.objects.filter(userID=unicom_device.user_id).values('username', 'NickName', 'phone')
+                device_user_qs = Device_User.objects.filter(userID=unicom_device.user_id).values('username', 'NickName',
+                                                                                                 'phone')
                 data['userName'] = device_user_qs[0]['username'] if device_user_qs.exists() else ''
                 data['NickName'] = device_user_qs[0]['NickName'] if device_user_qs.exists() else ''
                 data['phone'] = device_user_qs[0]['phone'] if device_user_qs.exists() else ''
@@ -122,7 +130,7 @@ class UnicomManageControllerView(View):
     @staticmethod
     def get_order_info(request_dict, response):
         """
-        获取/筛选设备套餐订单信息
+        获取/筛选4G流量卡订单信息
         @param request_dict:
         @param response:
         @return:
@@ -141,7 +149,7 @@ class UnicomManageControllerView(View):
 
         try:
             combo_order_info_qs = UnicomComboOrderInfo.objects.all()
-            # 筛选查询
+            # 序列号查询
             if serial_no:
                 unicom_device_qs = UnicomDeviceInfo.objects.filter(serial_no__icontains=serial_no).values('serial_no',
                                                                                                           'user_id',
@@ -149,6 +157,7 @@ class UnicomManageControllerView(View):
                 if not unicom_device_qs.exists():
                     return response.json(0, [])
                 combo_order_info_qs = combo_order_info_qs.filter(iccid__icontains=unicom_device_qs[0]['iccid'])
+            # UID查询
             if UID:
                 device_qs = Device_Info.objects.filter(UID=UID).values('serial_number').distinct()
                 if not device_qs.exists():
@@ -158,6 +167,7 @@ class UnicomManageControllerView(View):
                 if not unicom_device_qs.exists():
                     return response.json(0, [])
                 combo_order_info_qs = combo_order_info_qs.filter(iccid__icontains=unicom_device_qs[0]['iccid'])
+            # 状态查询
             if status:
                 status = int(status)
                 combo_order_info_qs = combo_order_info_qs.filter(status=status)
@@ -168,7 +178,7 @@ class UnicomManageControllerView(View):
             data_list = []
             for combo_order in combo_order_info_qs:
                 data = {'userName': '',
-                        'serialNo': '',
+                        'UID': '',
                         'iccid': combo_order.iccid,
                         'status': combo_order.status,
                         'order_id': combo_order.order_id,
@@ -178,18 +188,28 @@ class UnicomManageControllerView(View):
                         'expireTime': combo_order.expire_time,
                         'createdTime': combo_order.created_time,
                         'updated_time': combo_order.updated_time}
-                unicom_combo_qs = UnicomCombo.objects.filter(id=combo_order.combo_id).values('combo_name')
+                unicom_combo_qs = UnicomCombo.objects.filter(id=combo_order.combo_id).values('combo_name', 'price')
+                data['price'] = unicom_combo_qs[0]['price'] if unicom_combo_qs.exists() else ''
                 data['comboName'] = unicom_combo_qs[0]['combo_name'] if unicom_combo_qs.exists() else ''
                 unicom_device_qs = UnicomDeviceInfo.objects.filter(iccid__icontains=combo_order.iccid).values('user_id',
                                                                                                               'serial_no')
                 userID = unicom_device_qs[0]['user_id'] if unicom_device_qs.exists() else ''
-                device_user = Device_User.objects.filter(userID=userID).values('username')
-                if device_user.exists():
-                    nick_name = device_user[0]['username']
-                    data['userName'] = nick_name
                 data['serialNo'] = unicom_device_qs[0]['serial_no'] if unicom_device_qs.exists() else ''
-                device_qs = Device_Info.objects.filter(serial_number=unicom_device_qs[0]['serial_no']).values('UID')
-                data['UID'] = device_qs[0]['UID'] if device_qs.exists() else ''
+                serial_no = data['serialNo']
+                device_info_qs = Device_Info.objects.filter(userID__userID=userID, serial_number=serial_no).values(
+                    'userID__username', 'UID')
+                if device_info_qs.exists():
+                    nick_name = device_info_qs[0]['userID__username']
+                    data['userName'] = nick_name
+                if data['serialNo'] != '':
+                    data['UID'] = CommonService.query_serial_with_uid(data['serialNo'])
+                if combo_order.status == 1:
+                    total_flow = UnicomObjeect.current_sim_traffic_usage_details(combo_order.iccid)  # 4G总值
+                    flow_total_usage = combo_order.flow_total_usage  # 激活时当月已用流量
+                    flow_total_usage = float(flow_total_usage)
+                    data['using_total'] = total_flow - flow_total_usage
+                else:
+                    data['using_total'] = 0
                 data_list.append(data)
             return response.json(0, {'list': data_list, 'total': total})
         except Exception as e:
@@ -366,9 +386,9 @@ class UnicomManageControllerView(View):
     def static_info(self, request_dict, response):
         """
         统计联通套餐
-        @param request_dict:
-        @param response:
-        @return:
+        @param request_dict:请求参数
+        @param response: 响应对象
+        @param return:
         """
         year = request_dict.get('year', None)
         Jan = int(time.mktime(time.strptime(year + '-1-1 00:00:00', "%Y-%m-%d %H:%M:%S")))
@@ -422,3 +442,57 @@ class UnicomManageControllerView(View):
         except Exception as e:
             print(e)
             return response.json(500, repr(e))
+
+    @classmethod
+    def get_flow_packages(cls, request_dict, response):
+        """
+        赠送套餐流量
+        @param request_dict:请求参数
+        @username request_dict:用户名
+        @comboType request_dict:套餐类型
+        @serialNo request_dict:序列号
+        @param response: 响应对象
+        @param return:
+        """
+        userId = request_dict.get('userId', None)
+        serialNo = request_dict.get('serialNo', None)
+        comboId = request_dict.get('comboId', None)
+        if not all([userId, serialNo, comboId]):
+            return response.json(444)
+        try:
+            while transaction.atomic():
+                combo_info_qs = UnicomCombo.objects.filter(id=comboId, combo_type=2, status=0, is_del=False) \
+                    .values('id', 'combo_name', 'price', 'virtual_price', 'remark', 'combo_type').order_by('sort')
+                if not combo_info_qs.exists():
+                    return response.json(173)
+
+                unicom_device_info_qs = UnicomDeviceInfo.objects.filter(serial_no=serialNo, user_id=userId).values \
+                    ('user_id', 'iccid', 'serial_no')
+                if not unicom_device_info_qs.exists():
+                    return response.json(173)
+                n_time = int(time.time())
+                icc_id = unicom_device_info_qs[0]['iccid']
+                serial_no = unicom_device_info_qs[0]['serial_no']
+                order_id = CommonService.createOrderID()
+                unicom_combo = UnicomComboView.create_combo_order_info(order_id=order_id, activate_type=1, iccid=icc_id,
+                                                                       combo_id=comboId)
+                if unicom_combo is False:
+                    return False
+                # 获取套餐信息
+                combo_info_vo = combo_info_qs[0]
+                c_time = n_time
+                # 根据序列号获取UID
+                uid = CommonService.query_uid_with_serial(serial_no)
+                rank_id, ai_rank_id = UnicomComboView.get_cloud_or_ai_combo()  # 生成订单必须添加该字段
+                order_dict = {'orderID': order_id, 'UID': uid, 'rank_id': rank_id, 'ai_rank_id': ai_rank_id,
+                              'userID_id': userId, 'desc': combo_info_vo['combo_name'], 'payType': 10,
+                              'payTime': c_time, 'price': combo_info_vo['price'], 'addTime': c_time,
+                              'updTime': c_time, 'status': 1,
+                              'unify_combo_id': str(combo_info_vo['id']), 'order_type': 2,
+                              'store_meal_name': combo_info_vo['combo_name']
+                              }
+                Order_Model.objects.create(**order_dict)
+                return response.json(0)
+        except Exception as e:
+            print(e)
+            return response.json(500, repr(e))