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

后台域名日志页面等接口

locky 1 жил өмнө
parent
commit
8611ab311e

+ 72 - 10
AdminController/LogManagementController.py

@@ -4,11 +4,13 @@ import boto3
 import botocore
 import botocore
 import requests
 import requests
 from django.views.generic.base import View
 from django.views.generic.base import View
+
+from Object.IPWeatherObject import IPQuery
 from Object.ResponseObject import ResponseObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
 from Model.models import Device_Info, RequestRecordModel, iotdeviceInfoModel, Access_Log, DeviceLogModel, LogModel, \
 from Model.models import Device_Info, RequestRecordModel, iotdeviceInfoModel, Access_Log, DeviceLogModel, LogModel, \
-    AppLogModel, AppScannedSerial, StsFrequency
+    AppLogModel, AppScannedSerial, StsFrequency, DeviceDomainRegionModel, IPAddr, CountryModel
 from Ansjer.config import REGION_NAME, ACCESS_KEY_ID, SECRET_ACCESS_KEY, LOG_BUCKET
 from Ansjer.config import REGION_NAME, ACCESS_KEY_ID, SECRET_ACCESS_KEY, LOG_BUCKET
 
 
 
 
@@ -51,10 +53,12 @@ class LogManagementView(View):
                 return self.getOperationLogList(request_dict, response)
                 return self.getOperationLogList(request_dict, response)
             elif operation == 'getAppLogList':  # 获取app日志
             elif operation == 'getAppLogList':  # 获取app日志
                 return self.getAppLogList(request_dict, response)
                 return self.getAppLogList(request_dict, response)
-            elif operation == 'getScanLog':  # 获取app日志
+            elif operation == 'getScanLog':  # 获取扫码日志
                 return self.getScanLog(request_dict, response)
                 return self.getScanLog(request_dict, response)
-            elif operation == 'getAlarmLog':  # 获取app日志
+            elif operation == 'getAlarmLog':  # 获取警报日志
                 return self.getAlarmLog(request_dict, response)
                 return self.getAlarmLog(request_dict, response)
+            elif operation == 'getDomainLog':  # 获取域名日志
+                return self.getDomainLog(request_dict, response)
             else:
             else:
                 return response.json(404)
                 return response.json(404)
 
 
@@ -104,7 +108,7 @@ class LogManagementView(View):
                 0, {'list': qs_list, 'total': count})
                 0, {'list': qs_list, 'total': count})
         except Exception as e:
         except Exception as e:
             print(e)
             print(e)
-            return response.json(500, repr(e))
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
 
 
     def getDeviceIotInfoList(self, request_dict, response):
     def getDeviceIotInfoList(self, request_dict, response):
         serial_number = request_dict.get('serial_number', None)
         serial_number = request_dict.get('serial_number', None)
@@ -157,7 +161,7 @@ class LogManagementView(View):
                 0, {'list': iot_device_info_list, 'total': total})
                 0, {'list': iot_device_info_list, 'total': total})
         except Exception as e:
         except Exception as e:
             print(e)
             print(e)
-            return response.json(500, repr(e))
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
 
 
     # 通用发布MQTT通知
     # 通用发布MQTT通知
     @staticmethod
     @staticmethod
@@ -175,7 +179,7 @@ class LogManagementView(View):
                 return response.json(10044)
                 return response.json(10044)
             return response.json(0)
             return response.json(0)
         except Exception as e:
         except Exception as e:
-            return response.json(500, repr(e))
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
 
 
     def getAccessLogList(self, request_dict, response):
     def getAccessLogList(self, request_dict, response):
         user = request_dict.get('user', None)
         user = request_dict.get('user', None)
@@ -214,7 +218,7 @@ class LogManagementView(View):
             return response.json(0, {'list': access_log_list, 'total': total})
             return response.json(0, {'list': access_log_list, 'total': total})
         except Exception as e:
         except Exception as e:
             print(e)
             print(e)
-            return response.json(500, repr(e))
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
 
 
     def getDeviceLogList(self, request_dict, response):
     def getDeviceLogList(self, request_dict, response):
         uid = request_dict.get('uid', None)
         uid = request_dict.get('uid', None)
@@ -270,7 +274,7 @@ class LogManagementView(View):
             return response.json(0, {'list': device_log_list, 'total': total})
             return response.json(0, {'list': device_log_list, 'total': total})
         except Exception as e:
         except Exception as e:
             print(e)
             print(e)
-            return response.json(500, repr(e))
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
 
 
     def getOperationLogList(self, request_dict, response):
     def getOperationLogList(self, request_dict, response):
         operation = request_dict.get('operation', None)
         operation = request_dict.get('operation', None)
@@ -299,7 +303,7 @@ class LogManagementView(View):
                 0, {'list': log_list, 'total': count})
                 0, {'list': log_list, 'total': count})
         except Exception as e:
         except Exception as e:
             print(e)
             print(e)
-            return response.json(500, repr(e))
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
 
 
     def getAppLogList(self, request_dict, response):
     def getAppLogList(self, request_dict, response):
         """
         """
@@ -340,7 +344,7 @@ class LogManagementView(View):
             )
             )
             for app_log in app_log_list:
             for app_log in app_log_list:
                 filename = app_log['filename']
                 filename = app_log['filename']
-                if not filename.endswith('.txt') and not filename.endswith('.db'):
+                if not filename.endswith('.txt'):
                     filename += ".txt"
                     filename += ".txt"
                 obj = 'app_log/' + app_log['user_id'] + '/{}'.format(filename)
                 obj = 'app_log/' + app_log['user_id'] + '/{}'.format(filename)
                 appLog_url = aws_s3_client.generate_presigned_url(
                 appLog_url = aws_s3_client.generate_presigned_url(
@@ -408,3 +412,61 @@ class LogManagementView(View):
         except Exception as e:
         except Exception as e:
             print(e)
             print(e)
             return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
             return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+
+    @staticmethod
+    def getDomainLog(request_dict, response):
+        page_no = request_dict.get('pageNo', None)
+        page_size = request_dict.get('pageSize', None)
+        serial_number = request_dict.get('serialNumber', None)
+
+        if not all([page_no, page_size]):
+            return response.json(444)
+
+        page = int(page_no)
+        line = int(page_size)
+
+        try:
+            device_domain_qs = DeviceDomainRegionModel.objects.all()
+            if serial_number:
+                device_domain_qs = device_domain_qs.filter(serial_number__contains=serial_number)
+            count = device_domain_qs.count()
+            device_domain_qs = device_domain_qs.order_by('-update_time').values()[(page - 1) * line:page * line]
+
+            device_domain_list = []
+            for device_domain in device_domain_qs:
+                ip = device_domain['ip']
+                country_code = device_domain['country_code']
+                ip_addr_qs = IPAddr.objects.filter(ip=ip, is_geoip2=False).values('region')
+                if ip_addr_qs.exists():
+                    region = ip_addr_qs[0]['region']
+                else:
+                    ip_qs = IPQuery(ip)
+                    region = ip_qs.region
+
+                # 港澳台返回美洲域名
+                if country_code == 'CN' and region in ['香港', '澳门', '台湾']:
+                    country_code = 'NA'
+
+                country_qs = CountryModel.objects.filter(country_code=country_code).\
+                    values('region__name', 'region__api')
+                api = ''
+                region_name = ''
+                if country_qs.exists():
+                    api = country_qs[0]['region__api']
+                    region_name = country_qs[0]['region__name']
+                api_region = region_name + '域名'
+
+                device_domain_list.append({
+                    'id': device_domain['id'],
+                    'serial_number': device_domain['serial_number'],
+                    'ip': ip,
+                    'region_id': device_domain['region_id'],
+                    'country_code': country_code,
+                    'api': api,
+                    'api_region': api_region,
+                    'add_time': device_domain['add_time'].strftime("%Y-%m-%d %H:%M:%S"),
+                    'update_time': device_domain['update_time'].strftime("%Y-%m-%d %H:%M:%S"),
+                })
+            return response.json(0, {'list': device_domain_list, 'total': count})
+        except Exception as e:
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))

+ 52 - 9
AdminController/ServeManagementController.py

@@ -23,7 +23,8 @@ from Controller.UnicomCombo.UnicomComboTaskController import UnicomComboTaskView
 from Model.models import VodBucketModel, CDKcontextModel, Store_Meal, Order_Model, \
 from Model.models import VodBucketModel, CDKcontextModel, Store_Meal, Order_Model, \
     UID_Bucket, ExperienceContextModel, Lang, CloudLogModel, UidSetModel, Unused_Uid_Meal, \
     UID_Bucket, ExperienceContextModel, Lang, CloudLogModel, UidSetModel, Unused_Uid_Meal, \
     Device_Info, DeviceTypeModel, UnicomComboOrderInfo, AiService, CountryModel, \
     Device_Info, DeviceTypeModel, UnicomComboOrderInfo, AiService, CountryModel, \
-    Device_User, AbnormalOrder, DailyReconciliation, StsCrdModel, LogModel
+    Device_User, AbnormalOrder, DailyReconciliation, StsCrdModel, LogModel, \
+    InAppPurchasePackage
 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
@@ -87,6 +88,7 @@ class serveManagement(View):
             elif operation == 'deleteStoreMealLanguage':
             elif operation == 'deleteStoreMealLanguage':
                 return self.deleteStoreMealLanguage(
                 return self.deleteStoreMealLanguage(
                     userID, request_dict, response)
                     userID, request_dict, response)
+            # CDK
             elif operation == 'getCdkList':
             elif operation == 'getCdkList':
                 return self.getCdkList(userID, request_dict, response)
                 return self.getCdkList(userID, request_dict, response)
             elif operation == 'createCdk':
             elif operation == 'createCdk':
@@ -322,20 +324,34 @@ class serveManagement(View):
                 'is_show',
                 'is_show',
                 'is_ai',
                 'is_ai',
                 'pixel_level',
                 'pixel_level',
-                'product_id',
                 'add_time',
                 'add_time',
                 'update_time')
                 'update_time')
             total = len(store_meal_val)
             total = len(store_meal_val)
             store_meals = store_meal_val[(page - 1) * line:page * line]
             store_meals = store_meal_val[(page - 1) * line:page * line]
             store_meal_list = []
             store_meal_list = []
             for store_meal in store_meals:
             for store_meal in store_meals:
+                store_meal_id = store_meal['id']
                 # 获取支付方式列表
                 # 获取支付方式列表
                 pay_type_list = [
                 pay_type_list = [
                     pay_type['id'] for pay_type in Store_Meal.objects.get(
                     pay_type['id'] for pay_type in Store_Meal.objects.get(
-                        id=store_meal['id']).pay_type.values('id')]
+                        id=store_meal_id).pay_type.values('id')]
+
+                # 查询product_id
+                product_id = ''
+                subscription_group = ''
+                subscription_group_id = ''
+                package_type = 0
+                in_app_purchase_qs = InAppPurchasePackage.objects.filter(rank__id=store_meal_id).\
+                    values('product_id', 'subscription_group', 'subscription_group_id', 'package_type')
+                if in_app_purchase_qs.exists():
+                    product_id = in_app_purchase_qs[0]['product_id']
+                    subscription_group = in_app_purchase_qs[0]['subscription_group']
+                    subscription_group_id = in_app_purchase_qs[0]['subscription_group_id']
+                    package_type = in_app_purchase_qs[0]['package_type']
+
                 # 组织响应数据
                 # 组织响应数据
                 store_meal_list.append({
                 store_meal_list.append({
-                    'storeMealID': store_meal['id'],
+                    'storeMealID': store_meal_id,
                     'bucket': store_meal['bucket__bucket'],
                     'bucket': store_meal['bucket__bucket'],
                     'day': store_meal['day'],
                     'day': store_meal['day'],
                     'expire': store_meal['expire'],
                     'expire': store_meal['expire'],
@@ -351,7 +367,10 @@ class serveManagement(View):
                     'is_show': store_meal['is_show'],
                     'is_show': store_meal['is_show'],
                     'is_ai': store_meal['is_ai'],
                     'is_ai': store_meal['is_ai'],
                     'pixel_level': store_meal['pixel_level'],
                     'pixel_level': store_meal['pixel_level'],
-                    'product_id': store_meal['product_id'],
+                    'product_id': product_id,
+                    'subscription_group': subscription_group,
+                    'subscription_group_id': subscription_group_id,
+                    'package_type': package_type,
                     'addTime': store_meal['add_time'].strftime("%Y-%m-%d %H:%M:%S"),
                     'addTime': store_meal['add_time'].strftime("%Y-%m-%d %H:%M:%S"),
                     'updTime': store_meal['update_time'].strftime("%Y-%m-%d %H:%M:%S"),
                     'updTime': store_meal['update_time'].strftime("%Y-%m-%d %H:%M:%S"),
                 })
                 })
@@ -384,6 +403,9 @@ class serveManagement(View):
         is_ai = int(request_dict.get('is_ai', 0))
         is_ai = int(request_dict.get('is_ai', 0))
         pixel_level = int(request_dict.get('pixel_level', 0))
         pixel_level = int(request_dict.get('pixel_level', 0))
         product_id = request_dict.get('product_id', '')
         product_id = request_dict.get('product_id', '')
+        subscription_group = request_dict.get('subscription_group', '')
+        subscription_group_id = request_dict.get('subscription_group_id', '')
+        package_type = int(request_dict.get('package_type', 0))
         isEdit = request_dict.get('isEdit', None)
         isEdit = request_dict.get('isEdit', None)
 
 
         if not all([bucket, pay_type, price, currency, symbol]):
         if not all([bucket, pay_type, price, currency, symbol]):
@@ -392,6 +414,7 @@ class serveManagement(View):
         try:
         try:
             bucket_id = VodBucketModel.objects.filter(
             bucket_id = VodBucketModel.objects.filter(
                 bucket=bucket).values('id')[0]['id']
                 bucket=bucket).values('id')[0]['id']
+            now_time = int(time.time())
             store_meal_data = {
             store_meal_data = {
                 'bucket_id': bucket_id,
                 'bucket_id': bucket_id,
                 'day': day,
                 'day': day,
@@ -406,8 +429,7 @@ class serveManagement(View):
                 'symbol': symbol,
                 'symbol': symbol,
                 'is_show': is_show,
                 'is_show': is_show,
                 'is_ai': is_ai,
                 'is_ai': is_ai,
-                'pixel_level': pixel_level,
-                'product_id': product_id
+                'pixel_level': pixel_level
             }
             }
             if isEdit:
             if isEdit:
                 if not storeMealID:
                 if not storeMealID:
@@ -416,9 +438,29 @@ class serveManagement(View):
                     id=storeMealID).update(
                     id=storeMealID).update(
                     **store_meal_data)
                     **store_meal_data)
                 Store_Meal.objects.get(id=storeMealID).pay_type.set(pay_type)
                 Store_Meal.objects.get(id=storeMealID).pay_type.set(pay_type)
+                # 更新苹果内购套餐
+                in_app_purchase_qs = InAppPurchasePackage.objects.filter(rank__id=storeMealID)
+                if in_app_purchase_qs.exists():
+                    in_app_purchase_qs.update(
+                        product_id=product_id, subscription_group=subscription_group,
+                        subscription_group_id=subscription_group_id, package_type=package_type, update_time=now_time)
+                else:
+                    if any([product_id, subscription_group, subscription_group_id, package_type]):
+                        InAppPurchasePackage.objects.create(
+                            rank_id=storeMealID, subscription_group=subscription_group,
+                            subscription_group_id=subscription_group_id, package_type=package_type,
+                            created_time=now_time, update_time=now_time
+                        )
             else:
             else:
-                Store_Meal.objects.create(
-                    **store_meal_data).pay_type.set(pay_type)
+                store_meal = Store_Meal.objects.create(**store_meal_data).pay_type.set(pay_type)
+                # 新增苹果内购套餐
+                if any([product_id, subscription_group, subscription_group_id, package_type]):
+                    store_meal_id = store_meal.id
+                    InAppPurchasePackage.objects.create(
+                        rank_id=store_meal_id, subscription_group=subscription_group,
+                        subscription_group_id=subscription_group_id, package_type=package_type,
+                        created_time=now_time, update_time=now_time
+                    )
             return response.json(0)
             return response.json(0)
         except Exception as e:
         except Exception as e:
             print(e)
             print(e)
@@ -431,6 +473,7 @@ class serveManagement(View):
         if not storeMealID:
         if not storeMealID:
             return response.json(444)
             return response.json(444)
         try:
         try:
+            InAppPurchasePackage.objects.filter(rank_id=storeMealID).delete()
             Store_Meal.objects.filter(id=storeMealID).delete()
             Store_Meal.objects.filter(id=storeMealID).delete()
             return response.json(0)
             return response.json(0)
         except Exception as e:
         except Exception as e: