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

联通测试服,后台管理功能(完善获取套餐详细信息;筛选功能)

guanhailong 3 жил өмнө
parent
commit
5d605e09e1

+ 151 - 6
AdminController/UnicomManageController.py

@@ -45,10 +45,155 @@ class UnicomComboView(View):
             return self.get_order_info(request_dict, response)
         # 统计4G套餐
         elif operation == 'getComboDataList':
-            return self.combo_order_list(request_dict, response)
+            return self.combo_list(request_dict, response)
         # 删除卡套餐
         elif operation == 'dele/combo/info':
-            return self.dele_combo_info(request_dict, response)
+            return self.combo_order_info(request_dict, response)
+        # 筛选用户信息
+        elif operation == 'filter/user':
+            return self.get_user_info(request_dict, response)
+
+    def get_user_info(self, request_dict, response):
+        # print('request_dict: ', request_dict)
+
+        # Unicom_comborOrder表查询
+        status = request_dict.get('status', None)
+        payType = request_dict.get('payType', None)
+        price = request_dict.get('price', None)
+        addTimeRange = request_dict.get('addTimeRange', None)
+        endTimeRange = request_dict.get('endTimeRange', None)
+
+        # UnicomDevice_info表查询
+        iccid = request_dict.get('iccid', None)
+        serialNo = request_dict.get('serialNo', None)
+        userID = request_dict.get('userID', None)
+
+        # Device_user查询
+        phone = request_dict.get('phone', None)
+        userEmail = request_dict.get('userEmail', None)
+        dataJoined = request_dict.get('dataJoined', None)
+
+        pageNo = request_dict.get('pageNo', None)
+        pageSize = request_dict.get('pageSize', None)
+        if not all([pageNo, [pageSize]]):
+            return response.json(444)
+        page = int(pageNo)
+        line = int(pageSize)
+
+        try:
+            unicom_device_qs = UnicomDeviceInfo.objects.all()
+            if iccid:
+                unicom_device_qs = unicom_device_qs.filter(iccid=iccid)
+            if serialNo:
+                unicom_device_qs = unicom_device_qs.filter(serial_no=serialNo)
+            if userID:
+                unicom_device_qs = unicom_device_qs.filter(user_id=userID)
+            # if addTimeRange:
+            #     addStartTime, addEndTime = int(
+            #         addTimeRange[0][:-3]), int(addTimeRange[1][:-3])
+            #     unicom_combo_order_qs = unicom_combo_order_qs.filter(
+            #         activation_time__gte=addStartTime,
+            #         activation_time__lte=addEndTime)
+            # if endTimeRange:
+            #     endStartTime, endEndTime = int(
+            #         endTimeRange[0][:-3]), int(endTimeRange[1][:-3])
+            #     unicom_combo_order_qs = unicom_combo_order_qs.filter(
+            #         activation_time__gte=endStartTime,
+            #         activation_time__lte=endEndTime)
+
+            userID_list = []
+            userID_set_dict = {}
+            if userID and userID != ['']:
+                device_user_qs = Device_User.objects.filter(user_id__in=userID).values('userID', 'phone', 'userEmail',
+                                                                                       'data_joined').distinct()
+                for device_user in device_user_qs:
+                    userID_list.append(device_user['iccid'])
+                    userID_set_dict[device_user['iccid']] = {
+                        'userID': device_user['user_id'],
+                        'phone': device_user['phone'],
+                        'userEmail': device_user['userEmail'],
+                        'dataJoined': device_user['data_joined'].strftime(
+                        "%Y-%m-%d %H:%M:%S")
+                    }
+                unicom_device_qs = unicom_device_qs.filter(iccid__in=userID_list)
+            else:
+                device_user_qs = Device_User.objects.filter().values('userID', 'phone', 'userEmail',
+                                                                     'data_joined').distinct()
+                for device_user in device_user_qs:
+                    userID_list.append(device_user['iccid'])
+                    userID_set_dict[device_user['iccid']] = {
+                        'userID': device_user['user_id'],
+                        'phone': device_user['phone'],
+                        'userEmail': device_user['userEmail'],
+                        'dataJoined': device_user['dataJoined'].strftime(
+                        "%Y-%m-%d %H:%M:%S")
+                    }
+
+            if not unicom_device_qs.exists():
+                return response.json(0, [])
+
+            unicom_combo_order_qs = UnicomComboOrderInfo.objects.filter(
+                order_id__in=unicom_device_qs.values('iccid')).values('status', 'combo__pay_type', 'combo__price',
+                                                                      'activation_time', 'expire_time')
+
+            if status or payType or addTimeRange or endTimeRange or price:
+                if status:
+                    unicom_combo_order_qs = unicom_combo_order_qs.filter(status=status)
+                if payType:
+                    unicom_combo_order_qs = unicom_combo_order_qs.filter(combo__pay_type=payType)
+                if price:
+                    unicom_combo_order_qs = unicom_combo_order_qs.filter(combo__price=price)
+                if addTimeRange:
+                    addStarTime, addEndTime = int(
+                        addTimeRange[0][-3]), int(addTimeRange[1][:-3])
+                    unicom_combo_order_qs = unicom_combo_order_qs.filter(
+                        activation_time=addStarTime,
+                        expire_time=addEndTime
+                    )
+                if endTimeRange:
+                    endStartTimem, endEndTiem = int(
+                        endTimeRange[0][:-3]),int(endTimeRange[1][:-3])
+                    unicom_combo_order_qs = unicom_combo_order_qs.filter(
+                        activation_time=endStartTimem,
+                        expire_time=endEndTiem)
+
+            list_data = []
+            count = unicom_device_qs.count()
+            unicom_device_qs = unicom_device_qs.order_by('-activation_time')[(page - 1) * line:page * line]
+
+            for unicom_device in unicom_device_qs:
+                endTime = time.strftime("%Y--%m--%d %H:%M:%S", time.localtime(unicom_device.endTime))
+
+                unicom = unicom_device.iccid.upper()
+                data = {
+                    'iccid':unicom_device.iccid,
+                    'serialNo':unicom_device.serial_no,
+                    'userID':unicom_device.user_id
+                }
+
+                for unicom_combo_order in unicom_combo_order_qs.filter(
+                        order_id=unicom_device.iccid).values('status', 'combo__pay_type', 'combo__price',
+                                                             'combo__combo_name', 'activation_time', 'expire_time'):
+                    data['status'] = unicom_combo_order['status']
+                    data['payType'] = unicom_combo_order['combo__pay_type']
+                    data['price'] = unicom_combo_order['combo__price']
+                    data['activationTime'] = unicom_combo_order['activation_time'].strftime(
+                        "%Y-%m-%d %H:%M:%S")
+                    data['expireTime'] = unicom_combo_order['expire_time'].strftime(
+                        "%Y-%m-%d %H:%M:%S")
+                    data['comboName'] = unicom_combo_order['combo__combo_name']
+
+                if userID in userID_set_dict:
+                    data['userID'] = userID_set_dict['userID']
+                    data['phone'] = userID_set_dict['phone']
+                    data['userEmail'] = userID_set_dict['userEmail']
+                    data['dataJoined'] = userID_set_dict['dataJoined']
+
+                list_data.append(data)
+            return response.json(0, {'list': list_data, 'total': count})
+        except Exception as e:
+            print(e)
+            return response.json(500, repr(e))
 
     @staticmethod
     def get_user_combo(request_dict, response):
@@ -229,7 +374,7 @@ class UnicomComboView(View):
             combo_list = []
             for item in combo_qs:
                 # 获取支付方式列表
-                pay_type_qs = Pay_Type.objects.filter(unicomcombo=item['id']).values('id', 'payment')
+                pay_type_list = [pay_type['id'] for pay_type in UnicomCombo.objects.get(id=item['id']).pay_type.values('id')]
                 combo_list.append({
                     'id': item['id'],
                     'comboName': item['combo_name'],
@@ -238,7 +383,7 @@ class UnicomComboView(View):
                     'expirationType': item['expiration_type'],
                     'price': item['price'],
                     'remark': item['remark'],
-                    'payTypes': list(pay_type_qs),
+                    'payTypes': pay_type_list,
                 })
             return response.json(0, {'list': combo_list, 'total': total})
         except Exception as e:
@@ -264,10 +409,10 @@ class UnicomComboView(View):
             return response.json(500, e)
 
     @classmethod
-    def dele_combo_info(cls, request_doct, response):
+    def combo_order_info(cls, request_doct, response):
         pass
 
-    def combo_order_list(self, request_dict, response):
+    def combo_list(self, request_dict, response):
         year = request_dict.get('year', None)
         Jan = int(time.mktime(time.strptime(year + '-1-1 00:00:00', "%Y-%m-%d %H:%M:%S")))
         Feb = int(time.mktime(time.strptime(year + '-2-1 00:00:00', "%Y-%m-%d %H:%M:%S")))