Commit b8947a5e authored by wanli's avatar wanli

feat(应用管理模块): 增加上架、下架按钮,源码编辑

应用管理增加上架下架功能,同时提供在线源码编辑
parent a61e7b5f
''' '''
Author: your name Author: your name
Date: 2021-06-30 18:03:41 Date: 2021-06-30 18:03:41
LastEditTime: 2021-07-17 21:24:19 LastEditTime: 2021-07-19 14:28:10
LastEditors: Please set LastEditors LastEditors: Please set LastEditors
Description: In User Settings Edit Description: In User Settings Edit
FilePath: \evm-store\tools\build_out\application\signal_manager.py FilePath: \evm-store\tools\build_out\application\signal_manager.py
...@@ -63,6 +63,8 @@ class SignalManager(object): ...@@ -63,6 +63,8 @@ class SignalManager(object):
actionPostFileCreate = PySignal() actionPostFileCreate = PySignal()
actionPostFileCreateDir = PySignal() actionPostFileCreateDir = PySignal()
actionPostFilePaste = PySignal() actionPostFilePaste = PySignal()
# api
actionPostAppReview = PySignal()
def __init__(self): def __init__(self):
super().__init__() super().__init__()
......
''' '''
Author: your name Author: your name
Date: 2021-06-30 17:43:46 Date: 2021-06-30 17:43:46
LastEditTime: 2021-07-17 21:25:21 LastEditTime: 2021-07-19 14:29:10
LastEditors: Please set LastEditors LastEditors: Please set LastEditors
Description: In User Settings Edit Description: In User Settings Edit
FilePath: \evm-store\tools\build_out\controllers\__init__.py FilePath: \evm-store\tools\build_out\controllers\__init__.py
...@@ -11,6 +11,7 @@ FilePath: \evm-store\tools\build_out\controllers\__init__.py ...@@ -11,6 +11,7 @@ FilePath: \evm-store\tools\build_out\controllers\__init__.py
from application.signal_manager import signalManager from application.signal_manager import signalManager
from .area import areaManager from .area import areaManager
from .api import appReview
from .app import appManager from .app import appManager
from .package import packageManager from .package import packageManager
from .user import userManager from .user import userManager
...@@ -76,3 +77,5 @@ def initConnect(): ...@@ -76,3 +77,5 @@ def initConnect():
signalManager.actionPostFileCreate.connect(fileManager.create_file) signalManager.actionPostFileCreate.connect(fileManager.create_file)
signalManager.actionPostFileCreateDir.connect(fileManager.create_dir) signalManager.actionPostFileCreateDir.connect(fileManager.create_dir)
signalManager.actionPostFilePaste.connect(fileManager.paste) signalManager.actionPostFilePaste.connect(fileManager.paste)
# api
signalManager.actionPostAppReview.connect(appReview.post)
''' '''
Author: your name Author: your name
Date: 2021-07-12 11:14:48 Date: 2021-07-12 11:14:48
LastEditTime: 2021-07-15 17:43:48 LastEditTime: 2021-07-19 15:19:26
LastEditors: Please set LastEditors LastEditors: Please set LastEditors
Description: In User Settings Edit Description: In User Settings Edit
FilePath: \evm-store\tools\build_out\controllers\appi.py FilePath: \evm-store\tools\build_out\controllers\appi.py
...@@ -98,4 +98,23 @@ class BuildAppResource(object): ...@@ -98,4 +98,23 @@ class BuildAppResource(object):
buildAppResource = BuildAppResource() buildAppResource = BuildAppResource()
class AppReview(object):
def __init__(self):
super().__init__()
def post(self, app, review, jwt={}):
user = UserModel.query.filter(UserModel.uuid==jwt.get("uuid")).one_or_none()
if not user:
return None, ResponseCode.USER_NOT_EXISTS
app = AppModel.query.filter(AppModel.uuid==app).one_or_none()
if not app:
return None, ResponseCode.APPLICATION_NOT_EXISTS
app.app_review = review
app.update_at = datetime.now()
app.update_by = user.id
db.session.commit()
return True, ResponseCode.HTTP_SUCCESS
appReview = AppReview()
\ No newline at end of file
...@@ -122,7 +122,7 @@ class AppResource(object): ...@@ -122,7 +122,7 @@ class AppResource(object):
else: else:
filters.append(AppModel.create_by==user.id) filters.append(AppModel.create_by==user.id)
temp.update({ "create_by": user.id, "is_delete": False }) temp.update({ "create_by": user.id, "is_delete": False })
logger.info(params)
if "scope" in params and params.get("scope") == "list": if "scope" in params and params.get("scope") == "list":
result = AppModel.query.filter_by(**temp).order_by(AppModel.create_at.desc()) result = AppModel.query.filter_by(**temp).order_by(AppModel.create_at.desc())
temp = [] temp = []
...@@ -148,7 +148,6 @@ class AppResource(object): ...@@ -148,7 +148,6 @@ class AppResource(object):
if result.total and len(result.items): if result.total and len(result.items):
return result, ResponseCode.HTTP_SUCCESS return result, ResponseCode.HTTP_SUCCESS
return None, ResponseCode.HTTP_NOT_FOUND return None, ResponseCode.HTTP_NOT_FOUND
def post(self, params, jwt={}): def post(self, params, jwt={}):
......
{"directories": [{"basename": "\u6d4b\u8bd59-1.0.9-6-20210717135613", "dirname": ".", "path": "\u6d4b\u8bd59-1.0.9-6-20210717135613", "timestamp": 1626501373, "type": "dir"}], "files": []} {"directories": [{"basename": "src", "dirname": "\u6d4b\u8bd58-1.0.8-6-20210717140706", "path": "\u6d4b\u8bd58-1.0.8-6-20210717140706/src", "timestamp": 1626502026, "type": "dir"}], "files": [{"basename": "epk.json", "dirname": "\u6d4b\u8bd58-1.0.8-6-20210717140706", "extension": "json", "filename": "epk", "path": "\u6d4b\u8bd58-1.0.8-6-20210717140706/epk.json", "size": 437, "timestamp": 1626502026, "type": "file"}, {"basename": "\u6d4b\u8bd58.epk", "dirname": "\u6d4b\u8bd58-1.0.8-6-20210717140706", "extension": "epk", "filename": "\u6d4b\u8bd58", "path": "\u6d4b\u8bd58-1.0.8-6-20210717140706/\u6d4b\u8bd58.epk", "size": 2848, "timestamp": 1626502026, "type": "file"}]}
\ No newline at end of file \ No newline at end of file
''' '''
Author: your name Author: your name
Date: 2021-07-15 03:22:19 Date: 2021-07-15 03:22:19
LastEditTime: 2021-07-17 21:49:04 LastEditTime: 2021-07-19 14:39:33
LastEditors: Please set LastEditors LastEditors: Please set LastEditors
Description: In User Settings Edit Description: In User Settings Edit
FilePath: \evm-store\tools\build_out\views\__init__.py FilePath: \evm-store\tools\build_out\views\__init__.py
...@@ -12,6 +12,7 @@ FilePath: \evm-store\tools\build_out\views\__init__.py ...@@ -12,6 +12,7 @@ FilePath: \evm-store\tools\build_out\views\__init__.py
from flask import Blueprint from flask import Blueprint
from flask_restful import Api from flask_restful import Api
from . import area from . import area
from . import openapi
from . import app from . import app
from . import package from . import package
from . import user from . import user
...@@ -36,6 +37,8 @@ api.add_resource(area.AreaResourceList, '/area') ...@@ -36,6 +37,8 @@ api.add_resource(area.AreaResourceList, '/area')
api.add_resource(app.AppResource, '/app/<string:uuid>') api.add_resource(app.AppResource, '/app/<string:uuid>')
api.add_resource(app.AppResourceList, '/app') api.add_resource(app.AppResourceList, '/app')
api.add_resource(openapi.AppReviewResource, '/api/app-review')
api.add_resource(package.PackageResource, '/package/<string:uuid>') api.add_resource(package.PackageResource, '/package/<string:uuid>')
api.add_resource(package.PackageResourceList, '/package') api.add_resource(package.PackageResourceList, '/package')
......
...@@ -49,6 +49,8 @@ class AppResourceList(Resource): ...@@ -49,6 +49,8 @@ class AppResourceList(Resource):
return response_result(ResponseCode.HTTP_SUCCESS, data=json_dumps) return response_result(ResponseCode.HTTP_SUCCESS, data=json_dumps)
else: else:
json_dumps = getListAppsSchema.dump(result.items) json_dumps = getListAppsSchema.dump(result.items)
for item in json_dumps:
item['file_dir'] = os.path.dirname(item['download_url'])
return response_result(ResponseCode.HTTP_SUCCESS, data=json_dumps, total=result.total, pageSize=args.pageSize) return response_result(ResponseCode.HTTP_SUCCESS, data=json_dumps, total=result.total, pageSize=args.pageSize)
return response_result(message) return response_result(message)
except Exception as e: except Exception as e:
......
'''
Author: your name
Date: 2021-07-19 14:29:33
LastEditTime: 2021-07-19 15:31:33
LastEditors: Please set LastEditors
Description: In User Settings Edit
FilePath: \evm-store\tools\build_out\views\api.py
'''
#!/usr/bin/env python
# -*- coding: utf_8 -*-
import os
from flask import current_app, jsonify, request
from flask_restful import Resource
from flask_restful.reqparse import RequestParser
from flask_jwt_extended import ( jwt_required, get_jwt_identity )
from marshmallow.exceptions import ValidationError
from application.signal_manager import signalManager
from models.login import postLoginSchema, getListLoginSchema, getListLoginsSchema, getLoginSchema
from webcreator.log import logger
from webcreator.response import ResponseCode, response_result
class AppReviewResource(Resource):
def __init__(self):
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
self.parser = RequestParser()
def get(self):
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser.add_argument("page", type=int, location="args", default=1)
# self.parser.add_argument("pageSize", type=int, location="args", default=15)
# args = self.parser.parse_args()
try:
json_payload = request.json
logger.warn(json_payload)
data = getListLoginSchema.load(json_payload)
result, message = signalManager.actionGetListLogin.emit(data)
json_dumps = getListLoginSchema.dump(result)
if result:
json_dumps = getListLoginsSchema.dump(result.items)
return response_result(message, data=json_dumps, count=result.total)
return response_result(message)
except ValidationError as e:
return response_result(ResponseCode.HTTP_INVAILD_REQUEST, data=e.messages)
except Exception as e:
data = None
if hasattr(e, 'args'):
data = e.args
current_app.logger.error(e)
return response_result(ResponseCode.HTTP_SERVER_ERROR, data=data)
@jwt_required(locations=["headers"])
def post(self):
self.parser.add_argument("review", type=int, location="json", default=0, required=True)
self.parser.add_argument("app", type=str, location="json", required=False)
args = self.parser.parse_args()
try:
jwt = get_jwt_identity()
result, message = signalManager.actionPostAppReview.emit(args.app, args.review, jwt)
if result:
return response_result(message, data=result)
return response_result(message)
except ValidationError as e:
return response_result(ResponseCode.HTTP_INVAILD_REQUEST, data=e.messages)
except Exception as e:
data = None
if hasattr(e, 'args'):
data = e.args
current_app.logger.error(e)
return response_result(ResponseCode.HTTP_SERVER_ERROR, data=data)
class BuildAppResource(Resource):
def __init__(self):
pass
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser = RequestParser()
@jwt_required(locations=["headers"])
def get(self, uuid):
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser.add_argument("page", type=int, location="args", default=1)
# self.parser.add_argument("pageSize", type=int, location="args", default=15)
# args = self.parser.parse_args()
try:
json_payload = request.json
print("========>", uuid, json_payload)
data = getLoginSchema.load(json_payload)
result, message = signalManager.actionGetLogin.emit(uuid, data)
if result:
json_dumps = getLoginSchema.dump(result)
return response_result(message, data=json_dumps)
return response_result(message)
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.HTTP_SERVER_ERROR)
/* /*
* @Author: your name * @Author: your name
* @Date: 2021-07-15 09:33:39 * @Date: 2021-07-15 09:33:39
* @LastEditTime: 2021-07-16 20:19:01 * @LastEditTime: 2021-07-19 14:58:18
* @LastEditors: Please set LastEditors * @LastEditors: Please set LastEditors
* @Description: In User Settings Edit * @Description: In User Settings Edit
* @FilePath: \evm-store\tools\frontend\src\api\openapi.js * @FilePath: \evm-store\tools\frontend\src\api\openapi.js
...@@ -61,3 +61,12 @@ export function getPackageList(params) { ...@@ -61,3 +61,12 @@ export function getPackageList(params) {
params params
}) })
} }
export function updateReview(params) {
return request({
url: "/api/v1/api/app-review",
method: "post",
data: params
})
}
...@@ -103,9 +103,9 @@ ...@@ -103,9 +103,9 @@
</a-row> </a-row>
</template> </template>
<template slot="action" slot-scope="text, record"> <template slot="action" slot-scope="text, record">
<a href="javascript:;" @click="edit(record)">编辑源文件</a> <a href="javascript:;" @click="hadnleEdit(record)">编辑源文件</a>
<a-divider type="vertical" /> <a-divider type="vertical" />
<a href="javascript:;" @click="download(record)">下载EPK</a> <a href="javascript:;" @click="handleDownload(record)">下载EPK</a>
</template> </template>
</a-table> </a-table>
</div> </div>
...@@ -230,8 +230,7 @@ export default { ...@@ -230,8 +230,7 @@ export default {
ARangePicker: DatePicker.RangePicker, ARangePicker: DatePicker.RangePicker,
}, },
methods: { methods: {
download(record) { handleDownload(record) {
console.log(record);
download(`${record.app_name}_${record.app_version}.epk`, record.file_path) download(`${record.app_name}_${record.app_version}.epk`, record.file_path)
.then((res) => { .then((res) => {
message.success(res.msg); message.success(res.msg);
...@@ -240,8 +239,8 @@ export default { ...@@ -240,8 +239,8 @@ export default {
message.error(err.msg); message.error(err.msg);
}); });
}, },
edit(record) { hadnleEdit(record) {
this.$router.push({ name: "FileManager", params: { directory: record.file_dir, disk: "uploads" } }) this.$router.push({ name: "FileManager", params: { directory: record.file_dir, disk: "epks" } })
}, },
resetForm() { resetForm() {
this.query = { this.query = {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment