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