Procházet zdrojové kódy

新增新后台APP记录界面相关接口

locky před 3 roky
rodič
revize
170ae5bbc6
1 změnil soubory, kde provedl 212 přidání a 1 odebrání
  1. 212 1
      AdminController/VersionManagementController.py

+ 212 - 1
AdminController/VersionManagementController.py

@@ -4,13 +4,14 @@ import os
 import hashlib
 import time
 
+from django.db import transaction
 from django.views.generic.base import View
 
 from Ansjer.config import BASE_DIR
-from Model.models import Equipment_Version, App_Info, AppSetModel
 from Object.TokenObject import TokenObject
 from Object.ResponseObject import ResponseObject
 from Service.CommonService import CommonService
+from Model.models import Equipment_Version, App_Info, AppSetModel, App_Colophon
 
 
 class VersionManagement(View):
@@ -53,6 +54,14 @@ class VersionManagement(View):
                 return self.getAppSet(request_dict, response)
             elif operation == 'editAppSet':
                 return self.editAppSet(request_dict, response)
+            elif operation == 'getAppRecordList':
+                return self.getAppRecordList(request_dict, response)
+            elif operation == 'getAppBundleIdList':
+                return self.getAppBundleIdList(request_dict, response)
+            elif operation == 'addOrEditAppRecord':
+                return self.addOrEditAppRecord(request_dict, response)
+            elif operation == 'deleteAppRecord':
+                return self.deleteAppRecord(request_dict, response)
             else:
                 return response.json(404)
 
@@ -304,3 +313,205 @@ class VersionManagement(View):
         except Exception as e:
             print(e)
             return response.json(500, repr(e))
+
+    def getAppRecordList_1(self, request_dict, response):
+        app_type = request_dict.get('app_type', 'IOS')
+        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:
+            if app_type:
+                if app_type == 'IOS':
+                    app_type = 1
+                elif app_type == '安卓':
+                    app_type = 2
+                else:
+                    app_type = 3
+            app_colophon_qs = App_Colophon.objects.filter(app_id__app_type=app_type).order_by('app_id').values_list('app_id__appBundleId', flat=True).distinct()
+            if not app_colophon_qs.exists():
+                return response.json(173)
+            total = app_colophon_qs.count()
+            app_colophon_list = list(app_colophon_qs[(page - 1) * line:page * line])
+            app_info_qs = App_Colophon.objects.filter(app_id__appBundleId__in=app_colophon_list).\
+                values("id", "lang", "newApp_version", "content","version_time", "app_id__appBundleId", "app_id__appName", "app_id__app_type")
+            app_info_list = list(app_info_qs)
+            data_dict = {}
+            # 组装数据
+            for app_info in app_info_list:
+                for app_colophon in app_colophon_list:
+                    if app_colophon not in data_dict.keys():
+                        data_dict[app_colophon] = []
+                    if app_colophon == app_info['app_id__appBundleId']:
+                        data_dict[app_colophon].append(app_info)
+
+            for k, v in enumerate(data_dict):
+                new = sorted(data_dict[v], key=lambda x: x['id'], reverse=True)
+                data_dict[v] = new
+
+            res = {
+                'data_dict': data_dict,
+                'total': total
+            }
+            return response.json(0, res)
+        except Exception as e:
+            print(e)
+            return response.json(500, repr(e))
+
+    def getAppRecordList(self, request_dict, response):
+        app_type = request_dict.get('appType', 'IOS')
+        queryVersion = request_dict.get('queryVersion', None)
+        queryAppBundleId = request_dict.get('queryAppBundleId', 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:
+            if app_type == 'IOS':
+                app_type = 1
+            elif app_type == '安卓':
+                app_type = 2
+            else:
+                app_type = 3
+            app_colophon_qs = App_Colophon.objects.filter(app_id__app_type=app_type).order_by('app_id').values_list('app_id__appBundleId', flat=True).distinct()
+            if not app_colophon_qs.exists():
+                return response.json(173)
+            total = app_colophon_qs.count()
+            app_colophon_list = list(app_colophon_qs[(page - 1) * line:page * line])
+            app_info_qs = App_Colophon.objects.filter(app_id__appBundleId__in=app_colophon_list).\
+                values("id", "lang", "newApp_version", "content", "version_time", "app_id__appBundleId", "app_id__appName", "app_id__app_type")
+            app_info_list = list(app_info_qs)
+            app_record_list = []    # 响应的app record数据
+            appBundleId_list = []   # 记录已添加过的appBundleId
+            # 组装数据
+            for app_info in app_info_list:
+                version = app_info['lang'] + app_info['newApp_version']
+                if app_info['app_id__appBundleId'] not in appBundleId_list:
+                    appBundleId_list.append(app_info['app_id__appBundleId'])
+                    newApp_version_list = [[app_info['lang'], app_info['newApp_version']]]
+                    app_record_dict = {
+                        'app_id__appBundleId': app_info['app_id__appBundleId'],
+                        'app_id__appName': app_info['app_id__appName'],
+                        'app_id__app_type': app_info['app_id__app_type'],
+                        'version': version,
+                        'newApp_version_list': newApp_version_list,
+                        'id': app_info['id'],
+                        'content': app_info['content'],
+                        'version_time': time.strftime("%Y-%m-%d", time.localtime(app_info['version_time'])),
+                    }
+                    if queryVersion and queryVersion == version and queryAppBundleId == app_info['app_id__appBundleId']:
+                        app_record_dict['id'] = app_info['id']
+                        app_record_dict['content'] = app_info['content']
+                        app_record_dict['version_time'] = time.strftime("%Y-%m-%d", time.localtime(app_info['version_time']))
+
+                    app_record_list.append(app_record_dict)
+                else:
+                    index = appBundleId_list.index(app_info['app_id__appBundleId'])
+                    newApp_version_list = [app_info['lang'], app_info['newApp_version']]
+
+                    if queryVersion and queryVersion == version and queryAppBundleId == app_info['app_id__appBundleId']:
+                        app_record_dict['id'] = app_info['id']
+                        app_record_dict['content'] = app_info['content']
+                        app_record_dict['version_time'] = time.strftime("%Y-%m-%d", time.localtime(app_info['version_time']))
+                        app_record_dict['version'] = version
+                        app_record_dict['newApp_version_list'].insert(0, newApp_version_list)
+                    else:
+                        app_record_list[index]['newApp_version_list'].append(newApp_version_list)
+
+            res = {
+                'app_record_list': app_record_list,
+                'total': total
+            }
+            return response.json(0, res)
+        except Exception as e:
+            print(e)
+            return response.json(500, repr(e))
+
+    def getAppBundleIdList(self, request_dict, response):
+        print('request_dict:', request_dict)
+        app_type = request_dict.get('appType', 'IOS')
+
+        try:
+            if app_type == 'IOS':
+                app_type = 1
+            elif app_type == '安卓':
+                app_type = 2
+            else:
+                app_type = 3
+            app_info_qs = App_Info.objects.filter(app_type=app_type).values('id', 'appBundleId')
+            appBundleIdList = list(app_info_qs)
+            return response.json(0, {'appBundleIdList': appBundleIdList})
+        except Exception as e:
+            print(e)
+            return response.json(500, repr(e))
+
+    def addOrEditAppRecord(self, request_dict, response):
+        print('request_dict:', request_dict)
+        appBundleId = request_dict.get('app_id__appBundleId', None)
+        newApp_version = request_dict.get('version', None)
+        version_time = request_dict.get('version_time', None)
+        cn_content = request_dict.get('cnContent', None)
+        en_content = request_dict.get('enContent', None)
+        content = request_dict.get('content', None)
+        app_colophon_id = request_dict.get('id', None)
+
+        if not all([appBundleId, newApp_version, version_time]):
+            return response.json(444)
+
+        try:
+            version_time = int(time.mktime(time.strptime(version_time, '%Y-%m-%d')))  # 字符串转时间戳
+            if app_colophon_id:     # 编辑
+                # 编辑获取的版本信息前两位为语言
+                lang = newApp_version[:2]
+                newApp_version = newApp_version[2:]
+                App_Colophon.objects.filter(id=app_colophon_id).update(lang=lang, newApp_version=newApp_version,
+                                                                       content=content, version_time=version_time)
+            else:   # 添加
+                app_info_qs = App_Info.objects.filter(appBundleId=appBundleId).values('id')
+                if not app_info_qs.exists():
+                    return response.json(173)
+
+                data_dict = {
+                    'app_id_id': app_info_qs[0]['id'],
+                    'newApp_version': newApp_version,
+                    'version_time': version_time,
+                    'lang': 'cn',
+                    'content': cn_content,
+                }
+                with transaction.atomic():
+                    # 创建中文内容数据
+                    App_Colophon.objects.create(**data_dict)
+                    # 创建英文内容数据
+                    data_dict['lang'] = 'en'
+                    data_dict['content'] = en_content
+                    App_Colophon.objects.create(**data_dict)
+            return response.json(0)
+        except Exception as e:
+            print(e)
+            return response.json(500, repr(e))
+
+    def deleteAppRecord(self, request_dict, response):
+        print('request_dict:', request_dict)
+        app_colophon_id = request_dict.get('app_colophon_id', None)
+
+        try:
+            if not app_colophon_id:
+                return response.json(444)
+            app_colophon_qs = App_Colophon.objects.filter(id=app_colophon_id)
+            if not app_colophon_qs.exists():
+                return response.json(173)
+            app_colophon_qs.delete()
+            return response.json(0)
+        except Exception as e:
+            print(e)
+            return response.json(500, repr(e))