Commit 6ddc5256 authored by wanli's avatar wanli

feat(): 新增两个接口

parent 8ac587bd
''' '''
Author: your name Author: your name
Date: 2021-07-15 03:22:19 Date: 2021-07-15 03:22:19
LastEditTime: 2021-07-20 10:07:12 LastEditTime: 2021-07-22 18:51:05
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
...@@ -20,6 +20,7 @@ from . import login ...@@ -20,6 +20,7 @@ from . import login
from . import device from . import device
from . import annex from . import annex
from . import file from . import file
from . import menu
from . import monitorWatch from . import monitorWatch
from . import monitorSystem from . import monitorSystem
from . import monitorLvgl from . import monitorLvgl
...@@ -55,6 +56,9 @@ api.add_resource(user.UserResourceList, '/user') ...@@ -55,6 +56,9 @@ api.add_resource(user.UserResourceList, '/user')
api.add_resource(login.LoginResource, '/login/<string:uuid>') api.add_resource(login.LoginResource, '/login/<string:uuid>')
api.add_resource(login.LoginResourceList, '/login') api.add_resource(login.LoginResourceList, '/login')
api.add_resource(menu.MenuResource, '/menu/<string:uuid>')
api.add_resource(menu.MenuResourceList, '/menu')
api.add_resource(device.DeviceResource, '/device/<string:uuid>') api.add_resource(device.DeviceResource, '/device/<string:uuid>')
api.add_resource(device.DeviceResourceList, '/device') api.add_resource(device.DeviceResourceList, '/device')
......
'''
Author: your name
Date: 2021-07-15 09:33:39
LastEditTime: 2021-07-22 18:49:47
LastEditors: Please set LastEditors
Description: In User Settings Edit
FilePath: \evm-store\tools\build_out\views\package.20210715165358.py
'''
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 application.signal_manager import signalManager
from webcreator.log import logger
from webcreator.response import ResponseCode, response_result
class MenuResourceList(Resource):
def __init__(self):
pass
# 特殊参数,即不是从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)
return response_result(ResponseCode.HTTP_INVAILD_REQUEST)
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.HTTP_SERVER_ERROR)
def post(self):
result = [
{
"id": "1044886626813353984",
"parentId": "0",
"name": "dashboard",
"path": "/dashboard",
"icon": "dashboard",
"leaf": False,
"children": [
{
"id": "1044886629921333248",
"parentId": "1044886626813353984",
"name": "analysis",
"path": "/dashboard/analysis",
"leaf": True,
"children": []
},
{
"id": "1044886629921333248",
"parentId": "1044886626813353984",
"name": "workplace",
"path": "/dashboard/workplace",
"leaf": True,
"children": []
}
]
},
{
"id": "1044886626813353984",
"parentId": "0",
"name": "system",
"path": "/system",
"icon": "setting",
"leaf": False,
"children": [
{
"id": "1044886629921333248",
"parentId": "1044886626813353984",
"name": "setting",
"path": "/system/setting",
"leaf": False,
"children": [
{
"id": "1044886630026190848",
"parentId": "1044886629921333248",
"name": "menu",
"path": "/system/setting/menu",
"leaf": True,
"children": []
},
{
"id": "1044886630122659840",
"parentId": "1044886629921333248",
"name": "module",
"path": "/system/setting/module",
"leaf": True,
"children": []
},
{
"id": "1044886630122659841",
"parentId": "1044886629921333248",
"name": "file-manager",
"path": "/system/setting/file-manager",
"leaf": True,
"children": []
}
]
},
{
"id": "1044886629921333248",
"parentId": "1044886626813353984",
"name": "role",
"path": "/system/role",
"leaf": True
},
{
"id": "1044886629921333248",
"parentId": "1044886626813353984",
"name": "admin",
"path": "/system/admin",
"leaf": True
}
]
},
{
"id": "1044886626813353984",
"icon": "shop",
"parentId": "0",
"name": "application",
"path": "/application",
"leaf": False,
"children": [
{
"id": "1044886629921333248",
"parentId": "1044886626813353984",
"name": "index",
"path": "/application/index",
"leaf": True,
"children": []
},
{
"id": "1044886629921333248",
"parentId": "1044886626813353984",
"name": "manager",
"path": "/application/manager",
"leaf": True,
"children": []
}
]
},
{
"id": "1044886626813353984",
"icon": "usb",
"parentId": "0",
"name": "device",
"path": "/device",
"leaf": False,
"children": [
{
"id": "1044886629921333248",
"parentId": "1044886626813353984",
"name": "index",
"path": "/device/index",
"leaf": True,
"children": []
}
]
},
{
"id": "1044886626813353984",
"icon": "tool",
"parentId": "0",
"name": "tools",
"path": "/tools",
"leaf": False,
"children": [
{
"id": "1044886629921333248",
"parentId": "1044886626813353984",
"name": "monitor",
"path": "/tools/monitor",
"leaf": True,
"children": []
},
{
"id": "1044886629921333248",
"parentId": "1044886626813353984",
"name": "index",
"path": "/tools/index",
"leaf": True,
"children": []
}
]
}
]
return response_result(ResponseCode.HTTP_SUCCESS, data=result)
class MenuResource(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)
return response_result(ResponseCode.HTTP_NOT_FOUND)
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-19 14:29:33 Date: 2021-07-19 14:29:33
LastEditTime: 2021-07-22 17:51:55 LastEditTime: 2021-07-22 18:47:43
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\api.py FilePath: \evm-store\tools\build_out\views\api.py
...@@ -176,7 +176,8 @@ class BuildAppResource(Resource): ...@@ -176,7 +176,8 @@ class BuildAppResource(Resource):
# result = result_proxy.fetchall() # result = result_proxy.fetchall()
result = db.session.query(MyModel2).filter().all() result = db.session.query(MyModel2).filter().all()
for item in result: for item in result:
res = MonitorSystemModel.query.filter(MonitorSystemModel.id==item.id).first() res = MonitorSystemModel.query.filter(
MonitorSystemModel.id == item.id).first()
if not res: if not res:
continue continue
res.is_delete = 0 res.is_delete = 0
...@@ -195,19 +196,23 @@ class BuildAppResource(Resource): ...@@ -195,19 +196,23 @@ class BuildAppResource(Resource):
# print(item[3]) # print(item[3])
# 查找app,更新download_url # 查找app,更新download_url
# app = AppModel.query.filter(AppModel.create_at >= datetime.strptime(item[6], "%Y-%m-%d %H:%M:%S.%f"), AppModel.create_at <= datetime.strptime(item[6], "%Y-%m-%d %H:%M:%S.%f") - timedelta(secondsd=2)).all() # app = AppModel.query.filter(AppModel.create_at >= datetime.strptime(item[6], "%Y-%m-%d %H:%M:%S.%f"), AppModel.create_at <= datetime.strptime(item[6], "%Y-%m-%d %H:%M:%S.%f") - timedelta(secondsd=2)).all()
print("====>", item.create_at, (datetime.strptime(item.create_at, "%Y-%m-%d %H:%M:%S.%f") + timedelta(seconds=2)).strftime("%Y-%m-%d %H:%M:%S")) print("====>", item.create_at, (datetime.strptime(
app = AppModel.query.filter(AppModel.create_at >= item.create_at, AppModel.create_at <= (datetime.strptime(item.create_at, "%Y-%m-%d %H:%M:%S.%f") + timedelta(seconds=2)).strftime("%Y-%m-%d %H:%M:%S")).first() item.create_at, "%Y-%m-%d %H:%M:%S.%f") + timedelta(seconds=2)).strftime("%Y-%m-%d %H:%M:%S"))
app = AppModel.query.filter(AppModel.create_at >= item.create_at, AppModel.create_at <= (datetime.strptime(
item.create_at, "%Y-%m-%d %H:%M:%S.%f") + timedelta(seconds=2)).strftime("%Y-%m-%d %H:%M:%S")).first()
if not app: if not app:
continue continue
print(app) print(app)
# 再判断是否存在于package中,不存在则插入 # 再判断是否存在于package中,不存在则插入
res = db.session.query(PackageModel).filter(PackageModel.file_path==item.app_path).limit(1).one_or_none() res = db.session.query(PackageModel).filter(
PackageModel.file_path == item.app_path).limit(1).one_or_none()
if res: if res:
app.download_url = item.app_path app.download_url = item.app_path
res.app_version = item.app_version res.app_version = item.app_version
db.session.flush() db.session.flush()
else: else:
res = PackageModel(app=app.id, app_version=item.app_version, file_path=item.app_path, package_info=item.app_info, create_at=datetime.strptime(item.create_at, "%Y-%m-%d %H:%M:%S.%f"), create_by=item.create_by, update_at=datetime.strptime(item.create_at, "%Y-%m-%d %H:%M:%S.%f"), update_by=item.create_by) res = PackageModel(app=app.id, app_version=item.app_version, file_path=item.app_path, package_info=item.app_info, create_at=datetime.strptime(
item.create_at, "%Y-%m-%d %H:%M:%S.%f"), create_by=item.create_by, update_at=datetime.strptime(item.create_at, "%Y-%m-%d %H:%M:%S.%f"), update_by=item.create_by)
db.session.add(res) db.session.add(res)
db.session.flush() db.session.flush()
logger.info(res) logger.info(res)
...@@ -219,12 +224,18 @@ class BuildAppResource(Resource): ...@@ -219,12 +224,18 @@ class BuildAppResource(Resource):
return response_result(ResponseCode.HTTP_SERVER_ERROR) return response_result(ResponseCode.HTTP_SERVER_ERROR)
def post(self): def post(self):
self.parser.add_argument("access_key", type=str, location="form", required=True) self.parser.add_argument(
self.parser.add_argument("app_name", type=str, location="form", required=True) "access_key", type=str, location="form", required=True)
self.parser.add_argument("app_version", type=str, location="form", required=True) self.parser.add_argument("app_name", type=str,
self.parser.add_argument("category", type=str, location="form", required=True) location="form", required=True)
self.parser.add_argument("app_desc", type=str, location="form", required=False) self.parser.add_argument(
self.parser.add_argument("binfiles", type=FileStorage, location="files", required=True) "app_version", type=str, location="form", required=True)
self.parser.add_argument("category", type=str,
location="form", required=True)
self.parser.add_argument("app_desc", type=str,
location="form", required=False)
self.parser.add_argument(
"binfiles", type=FileStorage, location="files", required=True)
args = self.parser.parse_args() args = self.parser.parse_args()
try: try:
...@@ -252,9 +263,10 @@ class BuildAppResource(Resource): ...@@ -252,9 +263,10 @@ class BuildAppResource(Resource):
f.save(file_path.resolve().as_posix()) f.save(file_path.resolve().as_posix())
files.append(file_path.resolve().as_posix()) files.append(file_path.resolve().as_posix())
data.update({ 'host_url': request.host_url }) data.update({'host_url': request.host_url})
result, message = signalManager.actionApplicationBuild.emit(data, files) result, message = signalManager.actionApplicationBuild.emit(
data, files)
if result: if result:
return response_result(ResponseCode.HTTP_SUCCESS, data=result) return response_result(ResponseCode.HTTP_SUCCESS, data=result)
else: else:
...@@ -272,6 +284,75 @@ class CStringToolResource(Resource): ...@@ -272,6 +284,75 @@ class CStringToolResource(Resource):
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开 # 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
self.parser = RequestParser() self.parser = RequestParser()
def get(self):
result = {
"results": [
{
"gender": "female",
"name": {
"title": "Miss",
"first": "Candice",
"last": "Gonzales"
},
"location": {
"street": {
"number": 3007,
"name": "Northaven Rd"
},
"city": "Warragul",
"state": "Queensland",
"country": "Australia",
"postcode": 6657,
"coordinates": {
"latitude": "-87.1892",
"longitude": "91.2147"
},
"timezone": {
"offset": "-1:00",
"description": "Azores, Cape Verde Islands"
}
},
"email": "candice.gonzales@example.com",
"login": {
"uuid": "253648f6-1ba1-4196-aaf8-0b7a0a7f819b",
"username": "lazybear738",
"password": "wallet",
"salt": "TOehKzxN",
"md5": "01f4d04fbbdc7da7145c733e6d6fef77",
"sha1": "3c63e0f753b75c4bc141f49c4e8072d945beddc1",
"sha256": "102535a2f99c2dee933c1261bd3f70e042c628818a938e97a95391eabe0df252"
},
"dob": {
"date": "1970-03-01T16:04:10.320Z",
"age": 51
},
"registered": {
"date": "2013-07-27T18:45:18.202Z",
"age": 8
},
"phone": "06-4951-5747",
"cell": "0479-024-688",
"id": {
"name": "TFN",
"value": "046353523"
},
"picture": {
"large": "https://randomuser.me/api/portraits/women/3.jpg",
"medium": "https://randomuser.me/api/portraits/med/women/3.jpg",
"thumbnail": "https://randomuser.me/api/portraits/thumb/women/3.jpg"
},
"nat": "AU"
}
],
"info": {
"seed": "60ef4c21e9a77500",
"results": 1,
"page": 1,
"version": "1.3"
}
}
return response_result(ResponseCode.HTTP_SUCCESS, data=result)
@jwt_required(locations=["headers"]) @jwt_required(locations=["headers"])
def post(self): def post(self):
self.parser.add_argument( self.parser.add_argument(
...@@ -338,6 +419,8 @@ class ObfuscatedCode(Resource): ...@@ -338,6 +419,8 @@ class ObfuscatedCode(Resource):
return response_result(ResponseCode.HTTP_SERVER_ERROR, data=data) return response_result(ResponseCode.HTTP_SERVER_ERROR, data=data)
# 获取启动器接口 # 获取启动器接口
class LauncherResource(Resource): class LauncherResource(Resource):
def __init__(self) -> None: def __init__(self) -> None:
super().__init__() super().__init__()
...@@ -372,6 +455,8 @@ class LauncherResource(Resource): ...@@ -372,6 +455,8 @@ class LauncherResource(Resource):
return response_result(ResponseCode.HTTP_SERVER_ERROR, data=data) return response_result(ResponseCode.HTTP_SERVER_ERROR, data=data)
# 获取App列表接口 # 获取App列表接口
class AppListResource(Resource): class AppListResource(Resource):
def __init__(self) -> None: def __init__(self) -> None:
super().__init__() super().__init__()
...@@ -452,6 +537,8 @@ class AppListResource(Resource): ...@@ -452,6 +537,8 @@ class AppListResource(Resource):
return response_result(ResponseCode.HTTP_SERVER_ERROR, data=data) return response_result(ResponseCode.HTTP_SERVER_ERROR, data=data)
# 获取应用接口 # 获取应用接口
class App(Resource): class App(Resource):
def __init__(self) -> None: def __init__(self) -> None:
super().__init__() super().__init__()
...@@ -473,9 +560,9 @@ class App(Resource): ...@@ -473,9 +560,9 @@ class App(Resource):
if result: if result:
result = result.to_dict() result = result.to_dict()
result.update({'download': random.randint(1, 1000), result.update({'download': random.randint(1, 1000),
'like': random.randint(0, 100), 'like': random.randint(0, 100),
'timestamp': int(time.time()), 'timestamp': int(time.time()),
'meta_data': json.loads(result["meta_data"])}) 'meta_data': json.loads(result["meta_data"])})
return response_result(message, data=result) return response_result(message, data=result)
except ValidationError as e: except ValidationError as e:
return response_result(ResponseCode.HTTP_INVAILD_REQUEST, data=e.messages) return response_result(ResponseCode.HTTP_INVAILD_REQUEST, data=e.messages)
...@@ -488,6 +575,8 @@ class App(Resource): ...@@ -488,6 +575,8 @@ class App(Resource):
return response_result(ResponseCode.HTTP_SERVER_ERROR, data=data) return response_result(ResponseCode.HTTP_SERVER_ERROR, data=data)
# 获取应用信息接口 # 获取应用信息接口
class AppInfo(Resource): class AppInfo(Resource):
def __init__(self) -> None: def __init__(self) -> None:
super().__init__() super().__init__()
...@@ -495,8 +584,10 @@ class AppInfo(Resource): ...@@ -495,8 +584,10 @@ class AppInfo(Resource):
# 检查app是否为最新版本 # 检查app是否为最新版本
def get(self): def get(self):
self.parser.add_argument("uuid", type=str, location="args", required=True) self.parser.add_argument(
self.parser.add_argument("imei", type=str, location="args", required=True) "uuid", type=str, location="args", required=True)
self.parser.add_argument(
"imei", type=str, location="args", required=True)
args = self.parser.parse_args() args = self.parser.parse_args()
try: try:
...@@ -508,8 +599,8 @@ class AppInfo(Resource): ...@@ -508,8 +599,8 @@ class AppInfo(Resource):
result, message = signalManager.actionCheckVersion.emit(data) result, message = signalManager.actionCheckVersion.emit(data)
if result: if result:
return { 'data': { 'status': 1, 'time': int(time.time()) }, 'version': None, 'downloadUrl': None } return {'data': {'status': 1, 'time': int(time.time())}, 'version': None, 'downloadUrl': None}
return { 'data': { 'status': 0, 'time': int(time.time()) } } return {'data': {'status': 0, 'time': int(time.time())}}
except ValidationError as e: except ValidationError as e:
return response_result(ResponseCode.HTTP_INVAILD_REQUEST, data=e.messages) return response_result(ResponseCode.HTTP_INVAILD_REQUEST, data=e.messages)
except Exception as e: except Exception as e:
...@@ -520,6 +611,8 @@ class AppInfo(Resource): ...@@ -520,6 +611,8 @@ class AppInfo(Resource):
return response_result(ResponseCode.HTTP_SERVER_ERROR, data=data) return response_result(ResponseCode.HTTP_SERVER_ERROR, data=data)
# 下载EPK文件接口 # 下载EPK文件接口
class DownloadEpk(Resource): class DownloadEpk(Resource):
def __init__(self) -> None: def __init__(self) -> None:
super().__init__() super().__init__()
......
'''
Author: your name
Date: 2021-07-15 09:33:39
LastEditTime: 2021-07-16 19:27:36
LastEditors: your name
Description: In User Settings Edit
FilePath: \evm-store\tools\build_out\views\package.20210715165358.py
'''
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 application.signal_manager import signalManager
from models.package import getListPackageSchema, getListPackagesSchema, getPackageSchema
from webcreator.log import logger
from webcreator.response import ResponseCode, response_result
class PackageResourceList(Resource):
def __init__(self):
pass
# 特殊参数,即不是从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 = getListPackageSchema.load(json_payload)
result = signalManager.actionGetListPackage.emit(data)
json_dumps = getListPackageSchema.dump(result)
if result[0]:
json_dumps = getListPackagesSchema.dump(result[1])
logger.warn(json_dumps)
return response_result(ResponseCode.OK, data=json_dumps, count=result[2])
return response_result(ResponseCode.REQUEST_ERROR)
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
class PackageResource(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 = getPackageSchema.load(json_payload)
result = signalManager.actionGetPackage.emit(uuid, data)
if result[0]:
json_dumps = getPackageSchema.dump(result[1])
return response_result(ResponseCode.OK, data=json_dumps)
return response_result(ResponseCode.NO_DATA)
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
...@@ -112,7 +112,7 @@ ...@@ -112,7 +112,7 @@
src="https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png" src="https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png"
alt="avatar" alt="avatar"
/> />
<span class="name">EVM</span> <span class="name">{{ userinfo.name }}</span>
</span> </span>
<a-menu slot="overlay" class="menu"> <a-menu slot="overlay" class="menu">
...@@ -226,6 +226,9 @@ export default { ...@@ -226,6 +226,9 @@ export default {
} }
return className; return className;
}, },
userinfo() {
return this.$store.state.frontend.login.userinfo
}
}, },
}; };
</script> </script>
...@@ -167,9 +167,11 @@ const state = { ...@@ -167,9 +167,11 @@ const state = {
const actions = { const actions = {
["getMenuNav"]({ commit, state }, config) { ["getMenuNav"]({ commit, state }, config) {
state.loading = true; state.loading = true;
console.log(config)
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
menuNav() menuNav()
.then((response) => { .then((response) => {
console.log(response)
// console.log(mock); // console.log(mock);
commit("setMenuNav", mock); commit("setMenuNav", mock);
state.loading = false; state.loading = false;
......
...@@ -233,11 +233,11 @@ export default { ...@@ -233,11 +233,11 @@ export default {
methods: { methods: {
handleDownload(record) { handleDownload(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(() => {
message.success(res.msg); message.success("下载成功")
}) })
.catch((err) => { .catch(() => {
message.error(err.msg); message.error("下载失败")
}); });
}, },
hadnleEdit(record) { hadnleEdit(record) {
...@@ -261,7 +261,7 @@ export default { ...@@ -261,7 +261,7 @@ export default {
message.success(res.msg); message.success(res.msg);
if (res.code == 200) { if (res.code == 200) {
this.tableData.list = res.data.map(item => { this.tableData.list = res.data.map(item => {
if (item.source == 1) item.source_text = "Frontend" if (item.source == 0) item.source_text = "Frontend"
else item.source_text = "API" else item.source_text = "API"
return item; return item;
}); });
......
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