Commit b9b8ad2e authored by wanli's avatar wanli

update

parent 31c45ef7
......@@ -196,6 +196,12 @@ class AppsManager(object):
for item in result:
temp.append(item.to_dict(only=["uuid", "app_name"]))
return temp, len(temp), "get app {}.".format("success" if temp else "fail")
elif "scope_type" in data and data.get("scope_type") == "distinct":
result = select(p.category for p in Apps)
temp = []
for item in result:
temp.append(item)
return temp, len(temp), "success"
result = Apps.select().where(**temp).order_by(Apps.sort).sort_by(desc(Apps.create_at)).page(data.get("pagenum", 1), pagesize=data.get("pagesize", 10))
count = Apps.select().where(**temp).count()
......
......@@ -31,6 +31,7 @@ class DeleteSchema(BaseSchema):
class QuerySchema(BaseSchema):
uuid = fields.UUID(required=False)
app_name = fields.String(required=False)
category = fields.String(required=False)
scope_type = fields.String(required=False)
pagenum = fields.Int(required=False)
pagesize = fields.Int(required=False, max=50) # 防止用户传特别大的数,导致数据库查询阻塞
......
......@@ -5,6 +5,7 @@ import json
import logging
import traceback
import uuid
import sqlite3
from datetime import datetime
from flask import Blueprint, request, redirect, url_for, json, Response, send_file, make_response, send_from_directory
......@@ -98,6 +99,18 @@ def update_db():
print(index)
result.append(str(uuid.uuid1()))
# conn = sqlite3.connect('./app-store.db')
# cur = conn.cursor()
# update_sql = """update test set name = 'noname' where id = ?"""
# x = (1, )
# cur.execute(update_sql, x)
# # commit()提交事务
# conn.commit()
# # 关闭游标
# cur.close()
# # 关闭连接
# conn.close()
return response_result(ResponseCode.OK, data=result)
@api.route("/system/convertString", methods=['POST'])
......
......@@ -11,6 +11,16 @@
></el-option>
</el-select>
</el-form-item>
<el-form-item label="应用分类">
<el-select v-model="form.category" filterable placeholder="请选择分类">
<el-option
v-for="(item, index) in categoryList"
:key="index"
:label="item"
:value="item"
></el-option>
</el-select>
</el-form-item>
<el-form-item
><el-button type="primary" @click="onSubmit"
>查询</el-button
......@@ -236,10 +246,12 @@ export default {
total: 0,
list: [],
selectList: [],
categoryList: [],
isLoading: false,
form: {
uuid: null,
name: null,
category: null,
pagesize: 15,
pagenum: 1,
},
......@@ -292,6 +304,13 @@ export default {
this.isLoading = false;
});
},
fetchCategory() {
getAppsList({ scope_type: "distinct" }).then(res => {
this.categoryList = res.data
}).catch(err => {
console.log(err.message)
})
},
handleSizeChange(e) {
this.form.pagesize = e;
this.fetchData(mapTrim(this.form));
......@@ -466,6 +485,7 @@ export default {
created() {
this.fetchData(mapTrim(this.form));
this.fetchSelectData();
this.fetchCategory();
},
};
</script>
......
......@@ -31,7 +31,7 @@ module.exports = {
// change xxx-api/login => mock/login
// detail: https://cli.vuejs.org/config/#devserver-proxy
"/api/v1": {
target: "http://127.0.0.1:5000/",
target: "http://127.0.0.1:5001/",
changeOrigin: true,
pathRewrite: {},
},
......
......@@ -9,6 +9,20 @@ class SignalManager(object):
actionGetListArea = PySignal()
actionGetArea = PySignal()
actionPutArea = PySignal()
actionPostApp = PySignal()
actionDeleteApp = PySignal()
actionGetListApp = PySignal()
actionGetApp = PySignal()
actionPutApp = PySignal()
actionGetListPackage = PySignal()
actionGetPackage = PySignal()
actionPostUser = PySignal()
actionDeleteUser = PySignal()
actionGetListUser = PySignal()
actionGetUser = PySignal()
actionPutUser = PySignal()
actionGetListLogin = PySignal()
actionGetLogin = PySignal()
def __init__(self):
super().__init__()
......
......@@ -3,6 +3,10 @@
from application.app import signalManager
from .area import areaManager
from .app import appManager
from .package import packageManager
from .user import userManager
from .login import loginManager
def initConnect():
signalManager.actionPostArea.connect(areaManager.post)
......@@ -10,5 +14,19 @@ def initConnect():
signalManager.actionGetListArea.connect(areaManager.getList)
signalManager.actionGetArea.connect(areaManager.get)
signalManager.actionPutArea.connect(areaManager.put)
signalManager.actionPostApp.connect(appManager.post)
signalManager.actionDeleteApp.connect(appManager.delete)
signalManager.actionGetListApp.connect(appManager.getList)
signalManager.actionGetApp.connect(appManager.get)
signalManager.actionPutApp.connect(appManager.put)
signalManager.actionGetListPackage.connect(packageManager.getList)
signalManager.actionGetPackage.connect(packageManager.get)
signalManager.actionPostUser.connect(userManager.post)
signalManager.actionDeleteUser.connect(userManager.delete)
signalManager.actionGetListUser.connect(userManager.getList)
signalManager.actionGetUser.connect(userManager.get)
signalManager.actionPutUser.connect(userManager.put)
signalManager.actionGetListLogin.connect(loginManager.getList)
signalManager.actionGetLogin.connect(loginManager.get)
initConnect()
\ No newline at end of file
from datetime import datetime
from application.app import db
from models.app import AppModel
from webcreator.utils import ResponseCode, response_result
class AppResource(object):
def __init__(self):
super().__init__()
def get(self, params):
# handle business
filters = []
result = AppModel.query.filter(*filters).order_by(AppModel.areaId).paginate(params.get('page', 1), params.get('pageSize', 10), error_out=False)
return result
def post(self, params, jwt=None):
# handle business
result = AppModel.query.filter(AppModel.areaName == params.get('areaName')).first()
if result and result.is_delete:
result.is_delete = False
result.update_by = jwt['id']
result.update_date = datetime.now()
db.session.commit()
return response_result(ResponseCode.OK)
elif result and result.is_delete == False:
return response_result(ResponseCode.EXISTS_ERROR)
result = AppModel(**params)
db.session.add(result)
db.session.commit()
return response_result(ResponseCode.OK)
def put(self, id, params, jwt=None):
# handle business
result = AppModel.query.get(id)
if not result: return response_result(ResponseCode.NO_DATA)
if params:
for key, value in params.items():
if value != None: setattr(result, key, value)
result.update_by = jwt['id']
result.update_date = datetime.now()
db.session.commit()
else:
return response_result(ResponseCode.PARAM_NULL)
def delete(self, id, jwt=None):
# handle business
result = AppModel.query.get(id)
if not result: return response_result(ResponseCode.NO_DATA_FOUND)
else:
result.update_by = jwt['id']
result.update_date = datetime.now()
result.is_delete = True
db.session.delete(result)
db.session.commit()
appManager = AppResource()
\ No newline at end of file
from datetime import datetime
from application.app import db
from models.login import LoginModel
from webcreator.utils import ResponseCode, response_result
class LoginResource(object):
def __init__(self):
super().__init__()
def get(self, params):
# handle business
filters = []
result = LoginModel.query.filter(*filters).order_by(LoginModel.areaId).paginate(params.get('page', 1), params.get('pageSize', 10), error_out=False)
return result
def post(self, params, jwt=None):
# handle business
result = LoginModel.query.filter(LoginModel.areaName == params.get('areaName')).first()
if result and result.is_delete:
result.is_delete = False
result.update_by = jwt['id']
result.update_date = datetime.now()
db.session.commit()
return response_result(ResponseCode.OK)
elif result and result.is_delete == False:
return response_result(ResponseCode.EXISTS_ERROR)
result = LoginModel(**params)
db.session.add(result)
db.session.commit()
return response_result(ResponseCode.OK)
def put(self, id, params, jwt=None):
# handle business
result = LoginModel.query.get(id)
if not result: return response_result(ResponseCode.NO_DATA)
if params:
for key, value in params.items():
if value != None: setattr(result, key, value)
result.update_by = jwt['id']
result.update_date = datetime.now()
db.session.commit()
else:
return response_result(ResponseCode.PARAM_NULL)
def delete(self, id, jwt=None):
# handle business
result = LoginModel.query.get(id)
if not result: return response_result(ResponseCode.NO_DATA_FOUND)
else:
result.update_by = jwt['id']
result.update_date = datetime.now()
result.is_delete = True
db.session.delete(result)
db.session.commit()
loginManager = LoginResource()
\ No newline at end of file
from datetime import datetime
from application.app import db
from models.package import PackageModel
from webcreator.utils import ResponseCode, response_result
class PackageResource(object):
def __init__(self):
super().__init__()
def get(self, params):
# handle business
filters = []
result = PackageModel.query.filter(*filters).order_by(PackageModel.areaId).paginate(params.get('page', 1), params.get('pageSize', 10), error_out=False)
return result
def post(self, params, jwt=None):
# handle business
result = PackageModel.query.filter(PackageModel.areaName == params.get('areaName')).first()
if result and result.is_delete:
result.is_delete = False
result.update_by = jwt['id']
result.update_date = datetime.now()
db.session.commit()
return response_result(ResponseCode.OK)
elif result and result.is_delete == False:
return response_result(ResponseCode.EXISTS_ERROR)
result = PackageModel(**params)
db.session.add(result)
db.session.commit()
return response_result(ResponseCode.OK)
def put(self, id, params, jwt=None):
# handle business
result = PackageModel.query.get(id)
if not result: return response_result(ResponseCode.NO_DATA)
if params:
for key, value in params.items():
if value != None: setattr(result, key, value)
result.update_by = jwt['id']
result.update_date = datetime.now()
db.session.commit()
else:
return response_result(ResponseCode.PARAM_NULL)
def delete(self, id, jwt=None):
# handle business
result = PackageModel.query.get(id)
if not result: return response_result(ResponseCode.NO_DATA_FOUND)
else:
result.update_by = jwt['id']
result.update_date = datetime.now()
result.is_delete = True
db.session.delete(result)
db.session.commit()
packageManager = PackageResource()
\ No newline at end of file
from datetime import datetime
from application.app import db
from models.user import UserModel
from webcreator.utils import ResponseCode, response_result
class UserResource(object):
def __init__(self):
super().__init__()
def get(self, params):
# handle business
filters = []
result = UserModel.query.filter(*filters).order_by(UserModel.areaId).paginate(params.get('page', 1), params.get('pageSize', 10), error_out=False)
return result
def post(self, params, jwt=None):
# handle business
result = UserModel.query.filter(UserModel.areaName == params.get('areaName')).first()
if result and result.is_delete:
result.is_delete = False
result.update_by = jwt['id']
result.update_date = datetime.now()
db.session.commit()
return response_result(ResponseCode.OK)
elif result and result.is_delete == False:
return response_result(ResponseCode.EXISTS_ERROR)
result = UserModel(**params)
db.session.add(result)
db.session.commit()
return response_result(ResponseCode.OK)
def put(self, id, params, jwt=None):
# handle business
result = UserModel.query.get(id)
if not result: return response_result(ResponseCode.NO_DATA)
if params:
for key, value in params.items():
if value != None: setattr(result, key, value)
result.update_by = jwt['id']
result.update_date = datetime.now()
db.session.commit()
else:
return response_result(ResponseCode.PARAM_NULL)
def delete(self, id, jwt=None):
# handle business
result = UserModel.query.get(id)
if not result: return response_result(ResponseCode.NO_DATA_FOUND)
else:
result.update_by = jwt['id']
result.update_date = datetime.now()
result.is_delete = True
db.session.delete(result)
db.session.commit()
userManager = UserResource()
\ No newline at end of file
......@@ -555,3 +555,15 @@
[2021-06-15 10:51:14,114][ INFO] [ _internal.py _log 225] * Restarting with stat
[2021-06-15 10:51:15,218][WARNING] [ _internal.py _log 225] * Debugger is active!
[2021-06-15 10:51:15,280][ INFO] [ _internal.py _log 225] * Debugger PIN: 182-666-074
[2021-06-15 10:51:15,507][ INFO] [ _internal.py _log 225] * Running on http://127.0.0.1:3000/ (Press CTRL+C to quit)
[2021-06-15 11:10:06,108][ INFO] [ _internal.py _log 225] * Detected change in 'D:\\projects\\scriptiot\\evm-store\\tools\\build_out\\manager.py', reloading
[2021-06-15 11:10:06,221][ INFO] [ _internal.py _log 225] * Restarting with stat
[2021-06-15 14:08:51,000][ INFO] [ _internal.py _log 225] * Restarting with stat
[2021-06-15 14:08:52,172][WARNING] [ _internal.py _log 225] * Debugger is active!
[2021-06-15 14:08:52,216][ INFO] [ _internal.py _log 225] * Debugger PIN: 182-666-074
[2021-06-15 14:08:52,454][ INFO] [ _internal.py _log 225] * Running on http://127.0.0.1:3000/ (Press CTRL+C to quit)
[2021-06-15 15:31:27,665][ INFO] [ _internal.py _log 225] * Detected change in 'D:\\projects\\scriptiot\\evm-store\\tools\\build_out\\webcreator\\__init__.py', reloading
[2021-06-15 15:31:27,792][ INFO] [ _internal.py _log 225] * Restarting with stat
[2021-06-15 16:06:30,317][ INFO] [ _internal.py _log 225] * Restarting with stat
[2021-06-15 16:06:31,585][WARNING] [ _internal.py _log 225] * Debugger is active!
[2021-06-15 16:06:31,633][ INFO] [ _internal.py _log 225] * Debugger PIN: 182-666-074
# -*- coding: utf-8 -*-
from application.app import db, ma
from .base import PrimaryModel
from marshmallow import Schema, fields, INCLUDE, EXCLUDE
class AppModel(PrimaryModel):
__tablename__ = 'evm_app'
app_name = db.Column(db.String(70), index = True)
app_icon = db.Column(db.String(200))
app_version = db.Column(db.String(20))
category = db.Column(db.Integer)
category_2th = db.Column(db.Integer)
developer = db.Column(db.Integer)
download_url = db.Column(db.String(20))
app_file_size = db.Column(db.Integer)
app_screen_size = db.Column(db.Integer)
app_arch = db.Column(db.String(20))
app_review = db.Column(db.String(100))
# __table_args__ = (
# db.Index('idx_xxx', 'xxx', mysql_using='btree'),
# )
def __init__(self, app_name, app_icon, app_version, category, category_2th, developer, download_url, app_file_size, app_screen_size, app_arch, app_review):
self.app_name = app_name
self.app_icon = app_icon
self.app_version = app_version
self.category = category
self.category_2th = category_2th
self.developer = developer
self.download_url = download_url
self.app_file_size = app_file_size
self.app_screen_size = app_screen_size
self.app_arch = app_arch
self.app_review = app_review
def __repr__(self):
return '<AppModel %r>' % (self.app_name)
def to_json(self):
return {
'app_name': self.app_name,
'app_icon': self.app_icon,
'app_version': self.app_version,
'category': self.category,
'category_2th': self.category_2th,
'developer': self.developer,
'download_url': self.download_url,
'app_file_size': self.app_file_size,
'app_screen_size': self.app_screen_size,
'app_arch': self.app_arch,
'app_review': self.app_review,
}
class PostAppSchema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = AppModel
app_name = ma.auto_field()
app_icon = ma.auto_field()
app_version = ma.auto_field()
category = ma.auto_field()
category_2th = ma.auto_field()
developer = ma.auto_field()
app_screen_size = ma.auto_field()
app_arch = ma.auto_field()
app_review = ma.auto_field()
postAppSchema = PostAppSchema()
postAppsSchema = PostAppSchema(many=True)
class DeleteAppSchema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = AppModel
deleteAppSchema = DeleteAppSchema()
class GetListAppSchema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = AppModel
page = fields.Integer(required=False)
pageSize = fields.Integer(required=False)
app_name = ma.auto_field()
app_version = ma.auto_field()
category = ma.auto_field()
category_2th = ma.auto_field()
app_arch = ma.auto_field()
getListAppSchema = GetListAppSchema()
class GetAppSchema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = AppModel
app_name = ma.auto_field()
app_version = ma.auto_field()
category = ma.auto_field()
category_2th = ma.auto_field()
app_arch = ma.auto_field()
getAppSchema = GetAppSchema()
class PutAppSchema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = AppModel
app_name = ma.auto_field()
app_icon = ma.auto_field()
app_version = ma.auto_field()
app_screen_size = ma.auto_field()
app_arch = ma.auto_field()
app_review = ma.auto_field()
category = ma.auto_field()
category_2th = ma.auto_field()
putAppSchema = PutAppSchema()
# -*- coding: utf-8 -*-
from application.app import db, ma
from datetime import datetime
from .base import PrimaryModel
from marshmallow import Schema, fields, INCLUDE, EXCLUDE
class AreaModel(PrimaryModel):
__tablename__ = 'area'
__tablename__ = 'evm_area'
areaCode = db.Column(db.String(20), index = True)
areaName = db.Column(db.String(20), index = True)
......@@ -32,6 +31,17 @@ class AreaModel(PrimaryModel):
def __repr__(self):
return '<AreaModel %r>' % (self.areaCode)
def to_json(self):
return {
'areaCode': self.areaCode,
'areaName': self.areaName,
'level': self.level,
'cityCode': self.cityCode,
'center': self.center,
'parentId': self.parentId,
'hasChildren': self.hasChildren,
}
class PostAreaSchema(ma.SQLAlchemySchema):
class Meta:
......
# -*- coding: utf-8 -*-
from application.app import db, ma
from .base import PrimaryModel
from marshmallow import Schema, fields, INCLUDE, EXCLUDE
class LoginModel(PrimaryModel):
__tablename__ = 'evm_login'
user = db.Column(db.Integer)
login_at = db.Column(db.String(200))
user_agent = db.Column(db.String(200))
ip = db.Column(db.String(128))
geo_location = db.Column(db.String(200))
operator = db.Column(db.String(50))
# __table_args__ = (
# db.Index('idx_xxx', 'xxx', mysql_using='btree'),
# )
def __init__(self, user, login_at, user_agent, ip, geo_location, operator):
self.user = user
self.login_at = login_at
self.user_agent = user_agent
self.ip = ip
self.geo_location = geo_location
self.operator = operator
def __repr__(self):
return '<LoginModel %r>' % (self.user)
def to_json(self):
return {
'login_at': self.login_at,
'user_agent': self.user_agent,
'ip': self.ip,
'geo_location': self.geo_location,
'operator': self.operator,
}
class GetListLoginSchema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = LoginModel
page = fields.Integer(required=False)
pageSize = fields.Integer(required=False)
user = ma.auto_field()
login_at = ma.auto_field()
user_agent = ma.auto_field()
ip = ma.auto_field()
geo_location = ma.auto_field()
operator = ma.auto_field()
getListLoginSchema = GetListLoginSchema()
class GetLoginSchema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = LoginModel
user = ma.auto_field()
login_at = ma.auto_field()
user_agent = ma.auto_field()
ip = ma.auto_field()
geo_location = ma.auto_field()
operator = ma.auto_field()
getLoginSchema = GetLoginSchema()
# -*- coding: utf-8 -*-
from application.app import db, ma
from .base import PrimaryModel
from marshmallow import Schema, fields, INCLUDE, EXCLUDE
class PackageModel(PrimaryModel):
__tablename__ = 'evm_package'
app = db.Column(db.Integer)
app_version = db.Column(db.String(200))
package_info = db.Column(db.String(20))
file_path = db.Column(db.String(200))
source = db.Column(db.Integer)
user_agent = db.Column(db.String(200))
download_url = db.Column(db.String(200))
ip = db.Column(db.String(128))
geo_location = db.Column(db.String(200))
operator = db.Column(db.String(50))
# __table_args__ = (
# db.Index('idx_xxx', 'xxx', mysql_using='btree'),
# )
def __init__(self, app, app_version, package_info, file_path, source, user_agent, download_url, ip, geo_location, operator):
self.app = app
self.app_version = app_version
self.package_info = package_info
self.file_path = file_path
self.source = source
self.user_agent = user_agent
self.download_url = download_url
self.ip = ip
self.geo_location = geo_location
self.operator = operator
def __repr__(self):
return '<PackageModel %r>' % (self.app)
def to_json(self):
return {
'app_version': self.app_version,
'package_info': self.package_info,
'file_path': self.file_path,
'source': self.source,
'user_agent': self.user_agent,
'download_url': self.download_url,
'ip': self.ip,
'geo_location': self.geo_location,
'operator': self.operator,
}
class GetListPackageSchema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = PackageModel
page = fields.Integer(required=False)
pageSize = fields.Integer(required=False)
app = ma.auto_field()
app_version = ma.auto_field()
package_info = ma.auto_field()
file_path = ma.auto_field()
source = ma.auto_field()
user_agent = ma.auto_field()
download_url = ma.auto_field()
ip = ma.auto_field()
geo_location = ma.auto_field()
operator = ma.auto_field()
getListPackageSchema = GetListPackageSchema()
class GetPackageSchema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = PackageModel
app = ma.auto_field()
app_version = ma.auto_field()
package_info = ma.auto_field()
file_path = ma.auto_field()
source = ma.auto_field()
user_agent = ma.auto_field()
download_url = ma.auto_field()
ip = ma.auto_field()
geo_location = ma.auto_field()
operator = ma.auto_field()
getPackageSchema = GetPackageSchema()
# -*- coding: utf-8 -*-
from application.app import db, ma
from .base import PrimaryModel
from marshmallow import Schema, fields, INCLUDE, EXCLUDE
class UserModel(PrimaryModel):
__tablename__ = 'evm_user'
app_name = db.Column(db.String(70), index = True)
app_icon = db.Column(db.String(200))
app_version = db.Column(db.String(20))
category = db.Column(db.Integer)
category_2th = db.Column(db.Integer)
developer = db.Column(db.Integer)
download_url = db.Column(db.String(20))
app_file_size = db.Column(db.Integer)
app_screen_size = db.Column(db.Integer)
app_arch = db.Column(db.String(20))
app_review = db.Column(db.String(100))
# __table_args__ = (
# db.Index('idx_xxx', 'xxx', mysql_using='btree'),
# )
def __init__(self, app_name, app_icon, app_version, category, category_2th, developer, download_url, app_file_size, app_screen_size, app_arch, app_review):
self.app_name = app_name
self.app_icon = app_icon
self.app_version = app_version
self.category = category
self.category_2th = category_2th
self.developer = developer
self.download_url = download_url
self.app_file_size = app_file_size
self.app_screen_size = app_screen_size
self.app_arch = app_arch
self.app_review = app_review
def __repr__(self):
return '<UserModel %r>' % (self.app_name)
def to_json(self):
return {
'app_name': self.app_name,
'app_icon': self.app_icon,
'app_version': self.app_version,
'category': self.category,
'category_2th': self.category_2th,
'developer': self.developer,
'download_url': self.download_url,
'app_file_size': self.app_file_size,
'app_screen_size': self.app_screen_size,
'app_arch': self.app_arch,
'app_review': self.app_review,
}
class PostUserSchema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = UserModel
app_name = ma.auto_field()
app_icon = ma.auto_field()
app_version = ma.auto_field()
category = ma.auto_field()
category_2th = ma.auto_field()
developer = ma.auto_field()
app_screen_size = ma.auto_field()
app_arch = ma.auto_field()
app_review = ma.auto_field()
postUserSchema = PostUserSchema()
postUsersSchema = PostUserSchema(many=True)
class DeleteUserSchema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = UserModel
deleteUserSchema = DeleteUserSchema()
class GetListUserSchema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = UserModel
page = fields.Integer(required=False)
pageSize = fields.Integer(required=False)
app_name = ma.auto_field()
app_version = ma.auto_field()
category = ma.auto_field()
category_2th = ma.auto_field()
app_arch = ma.auto_field()
getListUserSchema = GetListUserSchema()
class GetUserSchema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = UserModel
app_name = ma.auto_field()
app_version = ma.auto_field()
category = ma.auto_field()
category_2th = ma.auto_field()
app_arch = ma.auto_field()
getUserSchema = GetUserSchema()
class PutUserSchema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = UserModel
app_name = ma.auto_field()
app_icon = ma.auto_field()
app_version = ma.auto_field()
app_screen_size = ma.auto_field()
app_arch = ma.auto_field()
app_review = ma.auto_field()
category = ma.auto_field()
category_2th = ma.auto_field()
putUserSchema = PutUserSchema()
......@@ -2,10 +2,11 @@
from flask import Blueprint
from flask_restful import Api
from . import area
from . import app
from . import package
from . import user
from . import login
api_v1 = Blueprint('api_v1', __name__)
......@@ -13,4 +14,16 @@ api = Api(api_v1)
api.add_resource(area.AreaResource, '/area/<string:uuid>')
api.add_resource(area.AreaResourceList, '/area', endpoint='/')
api.add_resource(area.AreaResourceList, '/area')
api.add_resource(app.AppResource, '/app/<string:uuid>')
api.add_resource(app.AppResourceList, '/app')
api.add_resource(package.PackageResource, '/package/<string:uuid>')
api.add_resource(package.PackageResourceList, '/package')
api.add_resource(user.UserResource, '/user/<string:uuid>')
api.add_resource(user.UserResourceList, '/user')
api.add_resource(login.LoginResource, '/login/<string:uuid>')
api.add_resource(login.LoginResourceList, '/login')
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.app import postAppSchema,deleteAppSchema,getListAppSchema,getAppSchema,putAppSchema
from webcreator.response import ResponseCode, response_result
class AppResource(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
print("========>", json_payload)
data = getListAppSchema.load(json_payload)
result = signalManager.actionGetApp.emit(**data)
json_dumps = getListAppSchema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
@jwt_required
def post(self):
try:
json_payload = request.json
data = postAppSchema.load(json_payload)
result = signalManager.actionPostApp.emit(**data)
json_dumps = postAppSchema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
class AppResourceList(Resource):
def __init__(self):
pass
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser = RequestParser()
@jwt_required
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
print("========>", json_payload)
data = getAppSchema.load(json_payload)
result = signalManager.actionGetApp.emit(**data)
json_dumps = getAppSchema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
@jwt_required
def put(self):
try:
json_payload = request.json
data = putAppSchema.load(json_payload)
result = signalManager.actionPutApp.emit(**data)
json_dumps = putAppSchema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
@jwt_required
def delete(self):
try:
json_payload = request.json
data = deleteAppSchema.load(json_payload)
result = signalManager.actionDeleteApp.emit(**data)
json_dumps = deleteAppSchema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
......@@ -12,8 +12,6 @@ class AreaResource(Resource):
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser = RequestParser()
@jwt_required
def get(self):
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser.add_argument("page", type=int, location="args", default=1)
......@@ -31,7 +29,6 @@ class AreaResource(Resource):
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
@jwt_required
def post(self):
try:
......@@ -44,13 +41,13 @@ class AreaResource(Resource):
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
class AreaResourceList(Resource):
def __init__(self):
pass
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser = RequestParser()
@jwt_required
def get(self):
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
......
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.login import getListLoginSchema,getLoginSchema
from webcreator.response import ResponseCode, response_result
class LoginResource(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
print("========>", json_payload)
data = getListLoginSchema.load(json_payload)
result = signalManager.actionGetLogin.emit(**data)
json_dumps = getListLoginSchema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
class LoginResourceList(Resource):
def __init__(self):
pass
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser = RequestParser()
@jwt_required
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
print("========>", json_payload)
data = getLoginSchema.load(json_payload)
result = signalManager.actionGetLogin.emit(**data)
json_dumps = getLoginSchema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
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,getPackageSchema
from webcreator.response import ResponseCode, response_result
class PackageResource(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
print("========>", json_payload)
data = getListPackageSchema.load(json_payload)
result = signalManager.actionGetPackage.emit(**data)
json_dumps = getListPackageSchema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
class PackageResourceList(Resource):
def __init__(self):
pass
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser = RequestParser()
@jwt_required
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
print("========>", json_payload)
data = getPackageSchema.load(json_payload)
result = signalManager.actionGetPackage.emit(**data)
json_dumps = getPackageSchema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
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.user import postUserSchema,deleteUserSchema,getListUserSchema,getUserSchema,putUserSchema
from webcreator.response import ResponseCode, response_result
class UserResource(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
print("========>", json_payload)
data = getListUserSchema.load(json_payload)
result = signalManager.actionGetUser.emit(**data)
json_dumps = getListUserSchema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
@jwt_required
def post(self):
try:
json_payload = request.json
data = postUserSchema.load(json_payload)
result = signalManager.actionPostUser.emit(**data)
json_dumps = postUserSchema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
class UserResourceList(Resource):
def __init__(self):
pass
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser = RequestParser()
@jwt_required
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
print("========>", json_payload)
data = getUserSchema.load(json_payload)
result = signalManager.actionGetUser.emit(**data)
json_dumps = getUserSchema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
@jwt_required
def put(self):
try:
json_payload = request.json
data = putUserSchema.load(json_payload)
result = signalManager.actionPutUser.emit(**data)
json_dumps = putUserSchema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
@jwt_required
def delete(self):
try:
json_payload = request.json
data = deleteUserSchema.load(json_payload)
result = signalManager.actionDeleteUser.emit(**data)
json_dumps = deleteUserSchema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
......@@ -17,16 +17,30 @@
"file": "test.db"
}
},
"modules": [
{
"file": "modules/user.json",
"enable": false
},
{
"file": "modules/permission.json",
"enable": false
},
{
"file": "modules/menu.json",
"enable": false
}
],
"apis": [
{
"name": "area",
"controller": {
"className": "AreaResource"
"className": "Resource"
},
"model": {
"className": "AreaModel",
"className": "Model",
"foreignKey": false,
"tableName": "area",
"tableName": "name",
"fields": [
{
"name": "areaCode",
......@@ -34,7 +48,8 @@
"default": "",
"length": 20,
"index": true,
"required": true
"required": true,
"toJson": true
},
{
"name": "areaName",
......@@ -42,19 +57,22 @@
"default": "",
"length": 20,
"index": true,
"required": true
"required": true,
"toJson": true
},
{
"name": "level",
"dataType": "Integer",
"default": 1,
"length": 20,
"required": true
"required": true,
"toJson": true
},
{
"name": "cityCode",
"dataType": "Integer",
"default": 0
"default": 0,
"toJson": true
},
{
"name": "center",
......@@ -62,7 +80,8 @@
"default": "",
"length": 20,
"index": true,
"required": true
"required": true,
"toJson": true
},
{
"name": "parentId",
......@@ -70,19 +89,21 @@
"default": "",
"length": 20,
"index": false,
"required": true
"required": true,
"toJson": true
},
{
"name": "hasChildren",
"dataType": "Boolean",
"default": false
"default": false,
"toJson": true
}
]
},
"view": {
"post": {
"auth": true,
"path": "/area",
"path": "",
"endpoint": "/",
"params": [
{
......@@ -124,13 +145,13 @@
},
"delete": {
"auth": true,
"path": "/area/<string:uuid>",
"path": "/<string:uuid>",
"endpoint": "",
"params": []
},
"getList": {
"auth": false,
"path": "/area",
"path": "",
"endpoint": "",
"params": [
{
......@@ -186,7 +207,7 @@
},
"get": {
"auth": true,
"path": "/area/<string:uuid>",
"path": "/<string:uuid>",
"endpoint": "",
"params": [
{
......@@ -228,7 +249,7 @@
},
"put": {
"auth": true,
"path": "/area/<string:uuid>",
"path": "/<string:uuid>",
"endpoint": "",
"params": [
{
......@@ -269,6 +290,773 @@
]
}
}
},
{
"name": "app",
"controller": {
"className": "Resource"
},
"model": {
"className": "Model",
"foreignKey": false,
"tableName": "name",
"fields": [
{
"name": "app_name",
"dataType": "String",
"default": "",
"length": 70,
"index": true,
"required": true,
"toJson": true
},
{
"name": "app_icon",
"dataType": "String",
"default": "",
"length": 200,
"index": false,
"required": true,
"toJson": true
},
{
"name": "app_version",
"dataType": "String",
"default": "",
"length": 20,
"required": true,
"toJson": true
},
{
"name": "category",
"dataType": "Integer",
"default": 0,
"required": true,
"toJson": true
},
{
"name": "category_2th",
"dataType": "Integer",
"default": 0,
"required": true,
"toJson": true
},
{
"name": "developer",
"dataType": "Integer",
"default": 0,
"required": true,
"toJson": true
},
{
"name": "download_url",
"dataType": "String",
"length": 20,
"required": true,
"default": "",
"toJson": true
},
{
"name": "app_file_size",
"dataType": "Integer",
"default": 0,
"required": true,
"toJson": true
},
{
"name": "app_screen_size",
"dataType": "Integer",
"default": 0,
"required": true,
"toJson": true
},
{
"name": "app_arch",
"dataType": "String",
"length": 20,
"required": true,
"default": "",
"toJson": true
},
{
"name": "app_review",
"dataType": "String",
"length": 100,
"required": true,
"default": "",
"toJson": true
}
]
},
"view": {
"post": {
"auth": true,
"path": "",
"endpoint": "/",
"params": [
{
"name": "app_name"
},
{
"name": "app_icon"
},
{
"name": "app_version"
},
{
"name": "category"
},
{
"name": "category_2th"
},
{
"name": "developer"
},
{
"name": "app_screen_size"
},
{
"name": "app_arch"
},
{
"name": "app_review"
}
]
},
"delete": {
"auth": true,
"path": "/<string:uuid>",
"endpoint": "",
"params": []
},
"getList": {
"auth": false,
"path": "",
"endpoint": "",
"params": [
{
"name": "page",
"dataType": "Integer",
"location": "args",
"default": 1,
"required": false
},
{
"name": "pageSize",
"dataType": "Integer",
"location": "args",
"default": 10,
"required": false
},
{
"name": "app_name"
},
{
"name": "app_version"
},
{
"name": "category"
},
{
"name": "category_2th"
},
{
"name": "app_arch"
}
]
},
"get": {
"auth": true,
"path": "/<string:uuid>",
"endpoint": "",
"params": [
{
"name": "app_name"
},
{
"name": "app_version"
},
{
"name": "category"
},
{
"name": "category_2th"
},
{
"name": "app_arch"
}
]
},
"put": {
"auth": true,
"path": "/<string:uuid>",
"endpoint": "",
"params": [
{
"name": "app_name"
},
{
"name": "app_icon"
},
{
"name": "app_version"
},
{
"name": "app_screen_size"
},
{
"name": "app_arch"
},
{
"name": "app_review"
},
{
"name": "category"
},
{
"name": "category_2th"
}
]
}
}
},
{
"name": "package",
"controller": {
"className": "Resource"
},
"model": {
"className": "Model",
"foreignKey": false,
"tableName": "name",
"fields": [
{
"name": "app",
"dataType": "Integer",
"default": null,
"required": true,
"toJson": false
},
{
"name": "app_version",
"dataType": "String",
"default": "",
"length": 200,
"index": false,
"required": true,
"toJson": true
},
{
"name": "package_info",
"dataType": "String",
"default": "",
"length": 20,
"required": true,
"toJson": true
},
{
"name": "file_path",
"dataType": "String",
"default": "",
"length": 200,
"required": true,
"toJson": true
},
{
"name": "source",
"dataType": "Integer",
"default": 0,
"required": true,
"toJson": true
},
{
"name": "user_agent",
"dataType": "String",
"default": "",
"length": 200,
"required": true,
"toJson": true
},
{
"name": "download_url",
"dataType": "String",
"length": 200,
"required": true,
"default": "",
"toJson": true
},
{
"name": "ip",
"dataType": "String",
"default": "",
"length": 128,
"required": true,
"toJson": true
},
{
"name": "geo_location",
"dataType": "String",
"default": "",
"length": 200,
"required": true,
"toJson": true
},
{
"name": "operator",
"dataType": "String",
"length": 50,
"required": true,
"default": "",
"toJson": true
}
]
},
"view": {
"getList": {
"auth": false,
"path": "",
"endpoint": "",
"params": [
{
"name": "page",
"dataType": "Integer",
"location": "args",
"default": 1,
"required": false
},
{
"name": "pageSize",
"dataType": "Integer",
"location": "args",
"default": 10,
"required": false
},
{
"name": "app"
},
{
"name": "app_version"
},
{
"name": "package_info"
},
{
"name": "file_path"
},
{
"name": "source"
},
{
"name": "user_agent"
},
{
"name": "download_url"
},
{
"name": "ip"
},
{
"name": "geo_location"
},
{
"name": "operator"
}
]
},
"get": {
"auth": true,
"path": "/<string:uuid>",
"endpoint": "",
"params": [
{
"name": "app"
},
{
"name": "app_version"
},
{
"name": "package_info"
},
{
"name": "file_path"
},
{
"name": "source"
},
{
"name": "user_agent"
},
{
"name": "download_url"
},
{
"name": "ip"
},
{
"name": "geo_location"
},
{
"name": "operator"
}
]
}
}
},
{
"name": "user",
"controller": {
"className": "Resource"
},
"model": {
"className": "Model",
"foreignKey": false,
"tableName": "name",
"fields": [
{
"name": "app_name",
"dataType": "String",
"default": "",
"length": 70,
"index": true,
"required": true,
"toJson": true
},
{
"name": "app_icon",
"dataType": "String",
"default": "",
"length": 200,
"index": false,
"required": true,
"toJson": true
},
{
"name": "app_version",
"dataType": "String",
"default": "",
"length": 20,
"required": true,
"toJson": true
},
{
"name": "category",
"dataType": "Integer",
"default": 0,
"required": true,
"toJson": true
},
{
"name": "category_2th",
"dataType": "Integer",
"default": 0,
"required": true,
"toJson": true
},
{
"name": "developer",
"dataType": "Integer",
"default": 0,
"required": true,
"toJson": true
},
{
"name": "download_url",
"dataType": "String",
"length": 20,
"required": true,
"default": "",
"toJson": true
},
{
"name": "app_file_size",
"dataType": "Integer",
"default": 0,
"required": true,
"toJson": true
},
{
"name": "app_screen_size",
"dataType": "Integer",
"default": 0,
"required": true,
"toJson": true
},
{
"name": "app_arch",
"dataType": "String",
"length": 20,
"required": true,
"default": "",
"toJson": true
},
{
"name": "app_review",
"dataType": "String",
"length": 100,
"required": true,
"default": "",
"toJson": true
}
]
},
"view": {
"post": {
"auth": true,
"path": "",
"endpoint": "/",
"params": [
{
"name": "app_name"
},
{
"name": "app_icon"
},
{
"name": "app_version"
},
{
"name": "category"
},
{
"name": "category_2th"
},
{
"name": "developer"
},
{
"name": "app_screen_size"
},
{
"name": "app_arch"
},
{
"name": "app_review"
}
]
},
"delete": {
"auth": true,
"path": "/<string:uuid>",
"endpoint": "",
"params": []
},
"getList": {
"auth": false,
"path": "",
"endpoint": "",
"params": [
{
"name": "page",
"dataType": "Integer",
"location": "args",
"default": 1,
"required": false
},
{
"name": "pageSize",
"dataType": "Integer",
"location": "args",
"default": 10,
"required": false
},
{
"name": "app_name"
},
{
"name": "app_version"
},
{
"name": "category"
},
{
"name": "category_2th"
},
{
"name": "app_arch"
}
]
},
"get": {
"auth": true,
"path": "/<string:uuid>",
"endpoint": "",
"params": [
{
"name": "app_name"
},
{
"name": "app_version"
},
{
"name": "category"
},
{
"name": "category_2th"
},
{
"name": "app_arch"
}
]
},
"put": {
"auth": true,
"path": "/<string:uuid>",
"endpoint": "",
"params": [
{
"name": "app_name"
},
{
"name": "app_icon"
},
{
"name": "app_version"
},
{
"name": "app_screen_size"
},
{
"name": "app_arch"
},
{
"name": "app_review"
},
{
"name": "category"
},
{
"name": "category_2th"
}
]
}
}
},
{
"name": "login",
"controller": {
"className": "Resource"
},
"model": {
"className": "Model",
"foreignKey": false,
"tableName": "name",
"fields": [
{
"name": "user",
"dataType": "Integer",
"default": null,
"required": true,
"toJson": false
},
{
"name": "login_at",
"dataType": "String",
"default": "",
"length": 200,
"index": false,
"required": true,
"toJson": true
},
{
"name": "user_agent",
"dataType": "String",
"default": "",
"length": 200,
"required": true,
"toJson": true
},
{
"name": "ip",
"dataType": "String",
"default": "",
"length": 128,
"required": true,
"toJson": true
},
{
"name": "geo_location",
"dataType": "String",
"default": "",
"length": 200,
"required": true,
"toJson": true
},
{
"name": "operator",
"dataType": "String",
"length": 50,
"required": true,
"default": "",
"toJson": true
}
]
},
"view": {
"getList": {
"auth": false,
"path": "",
"endpoint": "",
"params": [
{
"name": "page",
"dataType": "Integer",
"location": "args",
"default": 1,
"required": false
},
{
"name": "pageSize",
"dataType": "Integer",
"location": "args",
"default": 10,
"required": false
},
{
"name": "user"
},
{
"name": "login_at"
},
{
"name": "user_agent"
},
{
"name": "ip"
},
{
"name": "geo_location"
},
{
"name": "operator"
}
]
},
"get": {
"auth": true,
"path": "/<string:uuid>",
"endpoint": "",
"params": [
{
"name": "user"
},
{
"name": "login_at"
},
{
"name": "user_agent"
},
{
"name": "ip"
},
{
"name": "geo_location"
},
{
"name": "operator"
}
]
}
}
}
]
}
\ No newline at end of file
......@@ -41,7 +41,7 @@ def handleSignal(config):
target_file = os.sep.join(["controllers", "__init__.py"])
handleRender(config, 'signal_manager_init.tpl', target_file)
def handleModel(config):
def handleModel(config, application):
# 将所有有默认值的字段分为一组,没有默认值的字段分为另一组
# 生成模板代码时,无默认值的字段在前,有默认值的字段字在后
# 收集表字段信息
......@@ -53,7 +53,7 @@ def handleModel(config):
print(m)
target_file = os.sep.join(["models", "{}.py".format(config.get("name"))])
handleRender(config, 'model.tpl', target_file, fields=fields, extend=extend)
handleRender(config, 'model.tpl', target_file, fields=fields, extend=extend, application=application)
def handleView(config):
target_file = os.sep.join(["views", "{}.py".format(config.get("name"))])
......@@ -80,7 +80,7 @@ def handleRender(result, tpl, target_file, **kwargs):
def parseConfig(config):
# 解析配置文件
for cfg in config.get("apis"):
handleModel(cfg)
handleModel(cfg, config.get("application"))
handleView(cfg)
handleController(cfg)
handleResources(config.get("apis"))
......
from datetime import datetime
from application.app import db
from models.{{ config['model']['tableName'] }} import {{ config['model']['className'] }}
from models.{{ config['name'] }} import {{ config['name'] | letterUpper }}Model
from webcreator.utils import ResponseCode, response_result
class {{ config['controller']['className'] }}(object):
class {{ config['name'] | letterUpper }}Resource(object):
def __init__(self):
super().__init__()
def get(self, params):
# handle business
filters = []
result = {{ config['model']['className'] }}.query.filter(*filters).order_by({{ config['model']['className'] }}.areaId).paginate(params.get('page', 1), params.get('pageSize', 10), error_out=False)
result = {{ config['name'] | letterUpper }}Model.query.filter(*filters).order_by({{ config['name'] | letterUpper }}Model.areaId).paginate(params.get('page', 1), params.get('pageSize', 10), error_out=False)
return result
def post(self, params, jwt=None):
# handle business
result = {{ config['model']['className'] }}.query.filter({{ config['model']['className'] }}.areaName == params.get('areaName')).first()
result = {{ config['name'] | letterUpper }}Model.query.filter({{ config['name'] | letterUpper }}Model.areaName == params.get('areaName')).first()
if result and result.is_delete:
result.is_delete = False
result.update_by = jwt['id']
......@@ -26,14 +26,14 @@ class {{ config['controller']['className'] }}(object):
elif result and result.is_delete == False:
return response_result(ResponseCode.EXISTS_ERROR)
result = {{ config['model']['className'] }}(**params)
result = {{ config['name'] | letterUpper }}Model(**params)
db.session.add(result)
db.session.commit()
return response_result(ResponseCode.OK)
def put(self, id, params, jwt=None):
# handle business
result = {{ config['model']['className'] }}.query.get(id)
result = {{ config['name'] | letterUpper }}Model.query.get(id)
if not result: return response_result(ResponseCode.NO_DATA)
if params:
for key, value in params.items():
......@@ -46,7 +46,7 @@ class {{ config['controller']['className'] }}(object):
def delete(self, id, jwt=None):
# handle business
result = {{ config['model']['className'] }}.query.get(id)
result = {{ config['name'] | letterUpper }}Model.query.get(id)
if not result: return response_result(ResponseCode.NO_DATA_FOUND)
else:
result.update_by = jwt['id']
......@@ -55,4 +55,4 @@ class {{ config['controller']['className'] }}(object):
db.session.delete(result)
db.session.commit()
{{ config["name"] }}Manager = {{ config['controller']['className'] }}()
\ No newline at end of file
{{ config["name"] }}Manager = {{ config['name'] | letterUpper }}Resource()
\ No newline at end of file
# -*- coding: utf-8 -*-
from application.app import db, ma
from datetime import datetime
from .base import PrimaryModel
{%- if extend %} {# 判断是否有扩展字段,也就是model对象不包含的字段,因为查询里面还有pagepageSize等这两种字段 #}
from marshmallow import Schema, fields, INCLUDE, EXCLUDE
{%- endif %}
class {{ config['model']['className'] }}(PrimaryModel):
__tablename__ = '{{ config['model']['tableName'] }}'
class {{ config['name'] | letterUpper }}Model(PrimaryModel):
__tablename__ = '{{ application["tablePrefix"] }}{{ config['name'] }}'
{% for value in config['model']['fields'] %}
{%- if value.get('primaryKey', None) %}
{{ value.get('name') }} = db.Column(db.{{ value.get('dataType') }}, primary_key = True, {% if value.get('autoIncrement') %}autoincrement = True{% endif %})
......@@ -29,14 +28,23 @@ class {{ config['model']['className'] }}(PrimaryModel):
{%- endfor %}
def __repr__(self):
return '<{{ config['model']['className'] }} %r>' % (self.{{ config['model']['fields'][0]["name"] }})
return '<{{ config['name'] | letterUpper }}Model %r>' % (self.{{ config['model']['fields'][0]["name"] }})
def to_json(self):
return {
{%- for item in config['model']['fields'] %}
{%- if item.get("toJson") %}
'{{ item.get("name") }}': self.{{ item.get("name") }},
{%- endif %}
{%- endfor %}
}
{% for key, value in config["view"].items() %}
class {{ key |letterUpper }}{{ config['name'] | letterUpper }}Schema(ma.SQLAlchemySchema):
class {{ key | letterUpper }}{{ config['name'] | letterUpper }}Schema(ma.SQLAlchemySchema):
class Meta:
# unknown = INCLUDE # 未知字段默认包含
# unknown = EXCLUDE # 未知字段默认排除
model = {{ config['model']['className'] }}
model = {{ config['name'] | letterUpper }}Model
{%- if config['model']['foreignKey'] %}
include_fk = {{ config['model']['foreignKey'] }}
{% endif %}
......
......@@ -2,16 +2,15 @@
from flask import Blueprint
from flask_restful import Api
{% for item in config %}
{%- for item in config %}
from . import {{item["name"]}}
{% endfor %}
{%- endfor %}
api_v1 = Blueprint('api_v1', __name__)
api = Api(api_v1)
{% for item in config %}
api.add_resource({{ item['name'] }}.{{ item['controller']['className'] }}, '{{ item['view']['put']['path'] }}'{% if item['view']['put']['endpoint'] %}, endpoint={{ item['view']['put']['endpoint'] }}{% endif %})
api.add_resource({{ item['name'] }}.{{ item['controller']['className'] }}List, '{{ item['view']['post']['path'] }}'{% if item['view']['post']['endpoint'] %}, endpoint='{{ item['view']['post']['endpoint'] }}'{% endif %})
api.add_resource({{ item['name'] }}.{{ item['name'] | letterUpper }}Resource, '/{{ item['name'] }}{{ item['view']['get']['path'] }}'{% if item['view']['get']['endpoint'] %}, endpoint={{ item['view']['get']['endpoint'] }}{% endif %})
api.add_resource({{ item['name'] }}.{{ item['name'] | letterUpper }}ResourceList, '/{{ item['name'] }}{{ item['view']['getList']['path'] }}'{% if item['view']['getList']['endpoint'] %}, endpoint='{{ item['view']['getList']['endpoint'] }}'{% endif %})
{% endfor %}
......@@ -9,13 +9,14 @@ from models.{{ config['name'] }} import {% for k, v in config["view"].items() -%
{%- endfor %}
from webcreator.response import ResponseCode, response_result
class {{ config['controller']['className'] | letterUpper }}(Resource):
class {{ config['name'] | letterUpper }}Resource(Resource):
def __init__(self):
pass
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser = RequestParser()
{% if config["view"]["getList"] %}
{%- if config["view"]["getList"] %}
{% if config["view"]["getList"]["auth"] %}
@jwt_required
{%- endif %}
def get(self):
......@@ -34,8 +35,10 @@ class {{ config['controller']['className'] | letterUpper }}(Resource):
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
{%- endif %}
{% if config["view"]["post"] %}
{%- if config["view"]["post"] %}
{% if config["view"]["post"]["auth"] %}
@jwt_required
{%- endif %}
def post(self):
......@@ -43,19 +46,21 @@ class {{ config['controller']['className'] | letterUpper }}(Resource):
json_payload = request.json
data = post{{ config['name'] | letterUpper }}Schema.load(json_payload)
result = signalManager.actionPost{{ config["name"] | letterUpper }}.emit(**data)
json_dumps = post{{ config['name'] |letterUpper }}Schema.dump(result)
json_dumps = post{{ config['name'] | letterUpper }}Schema.dump(result)
return jsonify(json_dumps), 200
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
{% endif %}
class {{ config['controller']['className'] | letterUpper }}List(Resource):
class {{ config['name'] | letterUpper }}ResourceList(Resource):
def __init__(self):
pass
# 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
# self.parser = RequestParser()
{% if config["view"]["get"] %}
{%- if config["view"]["get"] %}
{% if config["view"]["get"]["auth"] %}
@jwt_required
{%- endif %}
def get(self):
......@@ -74,8 +79,10 @@ class {{ config['controller']['className'] | letterUpper }}List(Resource):
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
{% endif %}
{% if config["view"]["put"] %}
{%- if config["view"]["put"] %}
{% if config["view"]["put"]["auth"] %}
@jwt_required
{%- endif %}
def put(self):
......@@ -88,8 +95,10 @@ class {{ config['controller']['className'] | letterUpper }}List(Resource):
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
{% endif %}
{% if config["view"]["delete"] %}
{%- if config["view"]["delete"] %}
{% if config["view"]["delete"]["auth"] %}
@jwt_required
{%- endif %}
def delete(self):
......@@ -102,3 +111,4 @@ class {{ config['controller']['className'] | letterUpper }}List(Resource):
except Exception as e:
current_app.logger.error(e)
return response_result(ResponseCode.DB_ERROR)
{% endif %}
\ No newline at end of file
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