Prechádzať zdrojové kódy

后台域名日志页面等接口

locky 1 rok pred
rodič
commit
8611ab311e

+ 72 - 10
AdminController/LogManagementController.py

@@ -4,11 +4,13 @@ import boto3
 import botocore
 import requests
 from django.views.generic.base import View
+
+from Object.IPWeatherObject import IPQuery
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
 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
 
 
@@ -51,10 +53,12 @@ class LogManagementView(View):
                 return self.getOperationLogList(request_dict, response)
             elif operation == 'getAppLogList':  # 获取app日志
                 return self.getAppLogList(request_dict, response)
-            elif operation == 'getScanLog':  # 获取app日志
+            elif operation == 'getScanLog':  # 获取扫码日志
                 return self.getScanLog(request_dict, response)
-            elif operation == 'getAlarmLog':  # 获取app日志
+            elif operation == 'getAlarmLog':  # 获取警报日志
                 return self.getAlarmLog(request_dict, response)
+            elif operation == 'getDomainLog':  # 获取域名日志
+                return self.getDomainLog(request_dict, response)
             else:
                 return response.json(404)
 
@@ -104,7 +108,7 @@ class LogManagementView(View):
                 0, {'list': qs_list, 'total': count})
         except Exception as 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):
         serial_number = request_dict.get('serial_number', None)
@@ -157,7 +161,7 @@ class LogManagementView(View):
                 0, {'list': iot_device_info_list, 'total': total})
         except Exception as 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通知
     @staticmethod
@@ -175,7 +179,7 @@ class LogManagementView(View):
                 return response.json(10044)
             return response.json(0)
         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):
         user = request_dict.get('user', None)
@@ -214,7 +218,7 @@ class LogManagementView(View):
             return response.json(0, {'list': access_log_list, 'total': total})
         except Exception as 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):
         uid = request_dict.get('uid', None)
@@ -270,7 +274,7 @@ class LogManagementView(View):
             return response.json(0, {'list': device_log_list, 'total': total})
         except Exception as 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):
         operation = request_dict.get('operation', None)
@@ -299,7 +303,7 @@ class LogManagementView(View):
                 0, {'list': log_list, 'total': count})
         except Exception as 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):
         """
@@ -340,7 +344,7 @@ class LogManagementView(View):
             )
             for app_log in app_log_list:
                 filename = app_log['filename']
-                if not filename.endswith('.txt') and not filename.endswith('.db'):
+                if not filename.endswith('.txt'):
                     filename += ".txt"
                 obj = 'app_log/' + app_log['user_id'] + '/{}'.format(filename)
                 appLog_url = aws_s3_client.generate_presigned_url(
@@ -408,3 +412,61 @@ class LogManagementView(View):
         except Exception as e:
             print(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, \
     UID_Bucket, ExperienceContextModel, Lang, CloudLogModel, UidSetModel, Unused_Uid_Meal, \
     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.TokenObject import TokenObject
 from Object.UnicomObject import UnicomObjeect
@@ -87,6 +88,7 @@ class serveManagement(View):
             elif operation == 'deleteStoreMealLanguage':
                 return self.deleteStoreMealLanguage(
                     userID, request_dict, response)
+            # CDK
             elif operation == 'getCdkList':
                 return self.getCdkList(userID, request_dict, response)
             elif operation == 'createCdk':
@@ -322,20 +324,34 @@ class serveManagement(View):
                 'is_show',
                 'is_ai',
                 'pixel_level',
-                'product_id',
                 'add_time',
                 'update_time')
             total = len(store_meal_val)
             store_meals = store_meal_val[(page - 1) * line:page * line]
             store_meal_list = []
             for store_meal in store_meals:
+                store_meal_id = store_meal['id']
                 # 获取支付方式列表
                 pay_type_list = [
                     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({
-                    'storeMealID': store_meal['id'],
+                    'storeMealID': store_meal_id,
                     'bucket': store_meal['bucket__bucket'],
                     'day': store_meal['day'],
                     'expire': store_meal['expire'],
@@ -351,7 +367,10 @@ class serveManagement(View):
                     'is_show': store_meal['is_show'],
                     'is_ai': store_meal['is_ai'],
                     '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"),
                     '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))
         pixel_level = int(request_dict.get('pixel_level', 0))
         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)
 
         if not all([bucket, pay_type, price, currency, symbol]):
@@ -392,6 +414,7 @@ class serveManagement(View):
         try:
             bucket_id = VodBucketModel.objects.filter(
                 bucket=bucket).values('id')[0]['id']
+            now_time = int(time.time())
             store_meal_data = {
                 'bucket_id': bucket_id,
                 'day': day,
@@ -406,8 +429,7 @@ class serveManagement(View):
                 'symbol': symbol,
                 'is_show': is_show,
                 'is_ai': is_ai,
-                'pixel_level': pixel_level,
-                'product_id': product_id
+                'pixel_level': pixel_level
             }
             if isEdit:
                 if not storeMealID:
@@ -416,9 +438,29 @@ class serveManagement(View):
                     id=storeMealID).update(
                     **store_meal_data)
                 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:
-                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)
         except Exception as e:
             print(e)
@@ -431,6 +473,7 @@ class serveManagement(View):
         if not storeMealID:
             return response.json(444)
         try:
+            InAppPurchasePackage.objects.filter(rank_id=storeMealID).delete()
             Store_Meal.objects.filter(id=storeMealID).delete()
             return response.json(0)
         except Exception as e: