wip:(重构接口实现方式5)

This commit is contained in:
zhengxinonly
2022-05-20 23:56:11 +08:00
parent 246ce3b3b7
commit d54eb4dc3e
10 changed files with 162 additions and 162 deletions
+17 -20
View File
@@ -62,17 +62,15 @@ class DepartmentsApi(MethodView):
@validate() @validate()
def post(self, body: DeptModel): def post(self, body: DeptModel):
res = body
dept = DepartmentModel( dept = DepartmentModel(
parent_id=res.parent_id, parent_id=body.parent_id,
dept_name=res.dept_name, dept_name=body.dept_name,
sort=res.sort, sort=body.sort,
leader=res.leader, leader=body.leader,
phone=res.phone, phone=body.phone,
email=res.email, email=body.email,
status=res.status, status=body.status,
address=res.address address=body.address
) )
db.session.add(dept) db.session.add(dept)
db.session.commit() db.session.commit()
@@ -81,18 +79,17 @@ class DepartmentsApi(MethodView):
@validate() @validate()
def put(self, _id, body: DeptModel): def put(self, _id, body: DeptModel):
res = body
data = { data = {
"dept_name": res.dept_name, "dept_name": body.dept_name,
"sort": res.sort, "sort": body.sort,
"leader": res.leader, "leader": body.leader,
"phone": res.phone, "phone": body.phone,
"email": res.email, "email": body.email,
"status": res.status, "status": body.status,
"address": res.address "address": body.address
} }
res = DepartmentModel.query.filter_by(id=_id).update(data) body = DepartmentModel.query.filter_by(id=_id).update(data)
if not res: if not body:
return fail_api(message="更新失败") return fail_api(message="更新失败")
db.session.commit() db.session.commit()
return success_api(message="更新成功") return success_api(message="更新成功")
+28 -24
View File
@@ -64,22 +64,28 @@ def get_render_config():
# 是否允许用户切换主题,false 时关闭自定义主题面板 # 是否允许用户切换主题,false 时关闭自定义主题面板
"allowCustom": True "allowCustom": True
}, },
'colors': [{ 'colors': [
{
"id": "1", "id": "1",
"color": "#2d8cf0" "color": "#2d8cf0"
}, { },
{
"id": "2", "id": "2",
"color": "#5FB878" "color": "#5FB878"
}, { },
{
"id": "3", "id": "3",
"color": "#1E9FFF" "color": "#1E9FFF"
}, { },
{
"id": "4", "id": "4",
"color": "#FFB800" "color": "#FFB800"
}, { },
{
"id": "5", "id": "5",
"color": "darkgray" "color": "darkgray"
}], },
],
'links': current_app.config.get("SYSTEM_PANEL_LINKS"), 'links': current_app.config.get("SYSTEM_PANEL_LINKS"),
'other': { 'other': {
# 主页动画时长 # 主页动画时长
@@ -209,16 +215,15 @@ class RightsApi(MethodView):
class PowerApi(MethodView): class PowerApi(MethodView):
@validate() @validate()
def post(self, body: PowerModel): def post(self, body: PowerModel):
res = body
power = RightModel( power = RightModel(
icon=res.icon, icon=body.icon,
open_type=res.open_type, open_type=body.open_type,
parent_id=res.parent_id, parent_id=body.parent_id,
code=res.power_code, code=body.power_code,
name=res.power_name, name=body.power_name,
type=res.power_type, type=body.power_type,
url=res.power_url, url=body.power_url,
sort=res.sort, sort=body.sort,
enable=1 enable=1
) )
try: try:
@@ -250,16 +255,15 @@ class PowerApi(MethodView):
@validate() @validate()
def put(self, _id, body: PowerModel): def put(self, _id, body: PowerModel):
res = body
data = { data = {
"icon": res.icon, "icon": body.icon,
"open_type": res.open_type, "open_type": body.open_type,
"parent_id": res.parent_id, "parent_id": body.parent_id,
"code": res.power_code, "code": body.power_code,
"name": res.power_name, "name": body.power_name,
"type": res.power_type, "type": body.power_type,
"url": res.power_url, "url": body.power_url,
"sort": res.sort "sort": body.sort
} }
power = RightModel.query.filter_by(id=_id).update(data) power = RightModel.query.filter_by(id=_id).update(data)
db.session.commit() db.session.commit()
+39 -46
View File
@@ -1,3 +1,4 @@
from flask import request
from flask.views import MethodView from flask.views import MethodView
from flask_restful import reqparse from flask_restful import reqparse
@@ -49,23 +50,22 @@ class RoleRoleApi(MethodView):
def get(self, _id): def get(self, _id):
if not _id: if not _id:
parser = reqparse.RequestParser(bundle_errors=True) page = request.args.get('page', default=1, type=int)
parser.add_argument('page', type=int, default=1) limit = request.args.get('limit', default=10, type=int)
parser.add_argument('limit', type=int, default=10) role_name = request.args.get('roleName', default="", type=str)
parser.add_argument('roleName', type=str, dest='role_name', default="") role_code = request.args.get('roleCode', default="", type=str)
parser.add_argument('roleCode', type=str, dest='role_code', default="")
res = parser.parse_args()
filters = [] filters = []
if res.role_name: if role_name:
filters.append(RoleModel.name.like('%' + res.role_name + '%')) filters.append(RoleModel.name.like('%' + role_name + '%'))
if res.role_code: if role_code:
filters.append(RoleModel.code.like('%' + res.role_code + '%')) filters.append(RoleModel.code.like('%' + role_code + '%'))
paginate = RoleModel.query.filter(*filters).paginate(page=res.page, per_page=res.limit, error_out=False) paginate = RoleModel.query.filter(*filters).paginate(page=page, per_page=limit, error_out=False)
return table_api(result={'items': [{'id': item.id, return table_api(
result={
'items': [{'id': item.id,
'roleName': item.name, 'roleName': item.name,
'roleCode': item.code, 'roleCode': item.code,
'enable': item.enable, 'enable': item.enable,
@@ -77,21 +77,19 @@ class RoleRoleApi(MethodView):
, code=0) , code=0)
def post(self): def post(self):
parser = reqparse.RequestParser() # TODO 添加校验
parser.add_argument('details', type=str) details = request.json.get('details', '')
parser.add_argument('enable', type=int) enable = request.json.get('enable', 0)
parser.add_argument('roleCode', type=str, dest='role_code') role_code = request.json.get('roleCode', '')
parser.add_argument('roleName', type=str, dest='role_name') role_name = request.json.get('roleName', '')
parser.add_argument('sort', type=int) sort = request.json.get('sort', 0)
res = parser.parse_args()
role = RoleModel( role = RoleModel(
details=res.details, details=details,
enable=res.enable, enable=int(enable),
code=res.role_code, code=role_code,
name=res.role_name, name=role_name,
sort=res.sort sort=int(sort)
) )
db.session.add(role) db.session.add(role)
db.session.commit() db.session.commit()
@@ -99,22 +97,19 @@ class RoleRoleApi(MethodView):
# 更新角色 # 更新角色
def put(self, _id): def put(self, _id):
parser = reqparse.RequestParser() # TODO 添加校验
parser.add_argument('roleId', dest='role_id', type=int) role_code = request.json.get('roleCode', 0)
parser.add_argument('roleCode', dest='role_code', type=str) role_name = request.json.get('roleName', '')
parser.add_argument('roleName', dest='role_name', type=str) sort = request.json.get('sort', 0) # int
parser.add_argument('sort', type=int) enable = request.json.get('enable', 0) # int
parser.add_argument('enable', type=int) details = request.json.get('details', '')
parser.add_argument('details', type=str)
res = parser.parse_args()
data = { data = {
"code": res.role_code, "code": role_code,
"name": res.role_name, "name": role_name,
"sort": res.sort, "sort": sort,
"enable": res.enable, "enable": enable,
"details": res.details "details": details
} }
role = RoleModel.query.filter_by(id=_id).update(data) role = RoleModel.query.filter_by(id=_id).update(data)
@@ -144,7 +139,8 @@ class RolePowerApi(MethodView):
# 获取权限列表的 id # 获取权限列表的 id
check_powers_list = [rp.id for rp in role.power] check_powers_list = [rp.id for rp in role.power]
powers = RightModel.query.all() # 获取所有的权限 powers = RightModel.query.all() # 获取所有的权限
powers = [{ powers = [
{
'powerId': item.id, 'powerId': item.id,
'powerName': item.name, 'powerName': item.name,
'powerType': item.type, 'powerType': item.type,
@@ -167,12 +163,9 @@ class RolePowerApi(MethodView):
# 保存角色权限 # 保存角色权限
def put(self, _id): def put(self, _id):
parser = reqparse.RequestParser() power_ids = request.json.get('powerIds', '')
parser.add_argument('powerIds', dest='power_ids')
parser.add_argument('roleId', dest='role_id')
res = parser.parse_args() power_list = power_ids.split(',')
power_list = res.power_ids.split(',')
""" 更新角色权限 """ """ 更新角色权限 """
role = RoleModel.query.filter_by(id=_id).first() role = RoleModel.query.filter_by(id=_id).first()
+16 -11
View File
@@ -13,10 +13,9 @@ class FilePhotoAPI(MethodView):
if photo_id is None: if photo_id is None:
page = request.args.get('page', type=int, default=1) page = request.args.get('page', type=int, default=1)
limit = request.args.get('limit', type=int, default=10) limit = request.args.get('limit', type=int, default=10)
photo_paginate = PhotoModel.query.order_by(desc(PhotoModel.create_at) photo_paginate = PhotoModel.query.order_by(
).paginate(page=page, desc(PhotoModel.create_at)).paginate(
per_page=limit, page=page, per_page=limit, error_out=False)
error_out=False)
data = [ data = [
{ {
'id': item.id, 'id': item.id,
@@ -28,13 +27,18 @@ class FilePhotoAPI(MethodView):
'create_at': str(item.create_at), 'create_at': str(item.create_at),
} for item in photo_paginate.items } for item in photo_paginate.items
] ]
return table_api(result={'items': data, return table_api(
'total': photo_paginate.total, }, result={
'items': data,
'total': photo_paginate.total,
},
code=0) code=0)
else: else:
# 显示一张图片 # 显示一张图片
item = PhotoModel.query.get(photo_id) item = PhotoModel.query.get(photo_id)
return table_api(result={'items': { return table_api(
result={
'items': {
'id': item.id, 'id': item.id,
'name': item.name, 'name': item.name,
'href': item.href, 'href': item.href,
@@ -43,8 +47,10 @@ class FilePhotoAPI(MethodView):
'ext': item.ext if hasattr(item, 'ext') else "", 'ext': item.ext if hasattr(item, 'ext') else "",
'create_at': str(item.create_at), 'create_at': str(item.create_at),
}, },
'total': 1, }, 'total': 1,
code=0) },
code=0
)
def post(self): def post(self):
if 'file' in request.files: if 'file' in request.files:
@@ -56,8 +62,7 @@ class FilePhotoAPI(MethodView):
"message": "上传成功", "message": "上传成功",
"code": 0, "code": 0,
"success": True, "success": True,
"data": "data": {"src": file_url},
{"src": file_url}
} }
return jsonify(res) return jsonify(res)
return fail_api() return fail_api()
+17 -13
View File
@@ -90,20 +90,20 @@ class UserApi(MethodView):
"""修改用户数据""" """修改用户数据"""
@validate() @validate()
def get(self, _id, body: QueryModel): def get(self, _id, query: QueryModel):
filters = [] filters = []
if body.real_name: if query.real_name:
filters.append(UserModel.realname.like('%' + body.real_name + '%')) filters.append(UserModel.realname.like('%' + query.real_name + '%'))
if body.username: if query.username:
filters.append(UserModel.username.like('%' + body.username + '%')) filters.append(UserModel.username.like('%' + query.username + '%'))
if body.dept_id: if query.dept_id:
filters.append(UserModel.dept_id == body.dept_id) filters.append(UserModel.dept_id == query.dept_id)
paginate = UserModel.query.filter(*filters).paginate(page=body.page, paginate = UserModel.query.filter(
per_page=body.limit, *filters).paginate(
error_out=False) page=query.page, per_page=query.limit, error_out=False)
dept_name = lambda _id: DepartmentModel.query.filter_by(id=_id).first().dept_name if _id else "" dept_name = lambda _id: DepartmentModel.query.filter_by(id=_id).first().dept_name if _id else ""
user_data = [{ user_data = [{
@@ -115,9 +115,13 @@ class UserApi(MethodView):
'update_at': str(item.update_at), 'update_at': str(item.update_at),
'dept': dept_name(item.dept_id), 'dept': dept_name(item.dept_id),
} for item in paginate.items] } for item in paginate.items]
return table_api(result={'items': user_data, return table_api(
'total': paginate.total} result={
, code=0) 'items': user_data,
'total': paginate.total,
}
, code=0
)
@validate() @validate()
def post(self, body: PersonModel): def post(self, body: PersonModel):
+3 -4
View File
@@ -3,12 +3,12 @@ import typing as t
def success_api(message: str = "成功", code: int = 200) -> t.Dict: def success_api(message: str = "成功", code: int = 200) -> t.Dict:
""" 成功响应 默认值”成功“ """ """ 成功响应 默认值”成功“ """
return dict(success=True, message=message, code=code) return {'success': True, 'message': message, 'code': code}
def fail_api(message: str = "失败", code: int = 404) -> t.Dict: def fail_api(message: str = "失败", code: int = 404) -> t.Dict:
""" 失败响应 默认值“失败” """ """ 失败响应 默认值“失败” """
return dict(success=False, message=message, code=code) return {'success': False, 'message': message, 'code': code}
def table_api(success: bool = True, def table_api(success: bool = True,
@@ -27,10 +27,9 @@ def table_api(success: bool = True,
注:lay_ui 表格数据需要指定 code=0 注:lay_ui 表格数据需要指定 code=0
""" """
ret = { return {
'success': success, 'success': success,
'message': message, 'message': message,
'code': code, 'code': code,
'result': result, 'result': result,
} }
return ret
+1 -1
View File
@@ -182,7 +182,7 @@
layer.close(index) layer.close(index)
let loading = layer.load() let loading = layer.load()
$.ajax({ $.ajax({
url: '/api/v1/roles/roles/role_power/' + obj.data['id'], url: '/api/v1/roles/role_power/' + obj.data['id'],
dataType: 'json', dataType: 'json',
type: 'delete', type: 'delete',
success: function (result) { success: function (result) {
+1 -1
View File
@@ -68,7 +68,7 @@
form.on('submit(role-save)', function (data) { form.on('submit(role-save)', function (data) {
$.ajax({ $.ajax({
url: '/api/v1/roles/role/0', url: '/api/v1/roles/role/',
data: JSON.stringify(data.field), data: JSON.stringify(data.field),
dataType: 'json', dataType: 'json',
contentType: 'application/json', contentType: 'application/json',
+1 -4
View File
@@ -75,9 +75,6 @@
{% block models_script %} {% block models_script %}
<script type="module"> <script type="module">
import { ROLE_API } from '/static/api/http.js'
layui.use(['form', 'jquery'], function () { layui.use(['form', 'jquery'], function () {
let form = layui.form let form = layui.form
let $ = layui.jquery let $ = layui.jquery
@@ -93,7 +90,7 @@
if (result.success) { if (result.success) {
layer.msg(result.message, { icon: 1, time: 1000 }, function () { layer.msg(result.message, { icon: 1, time: 1000 }, function () {
parent.layer.close(parent.layer.getFrameIndex(window.name))//关闭当前页 parent.layer.close(parent.layer.getFrameIndex(window.name))//关闭当前页
parent.layui.table.reload('role-table') parent.layui.table.reload('tables')
}) })
} else { } else {
layer.msg(result.message, { icon: 2, time: 1000 }) layer.msg(result.message, { icon: 2, time: 1000 })
+1
View File
@@ -284,6 +284,7 @@
$.ajax({ $.ajax({
url: '/api/v1/users/user/' + obj.data['id'], url: '/api/v1/users/user/' + obj.data['id'],
dataType: 'json', dataType: 'json',
contentType: 'application/json',
type: 'delete', type: 'delete',
success: function (result) { success: function (result) {
layer.close(loading) layer.close(loading)