wip:(重构接口实现方式5)
This commit is contained in:
@@ -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="更新成功")
|
||||||
|
|||||||
@@ -64,22 +64,28 @@ def get_render_config():
|
|||||||
# 是否允许用户切换主题,false 时关闭自定义主题面板
|
# 是否允许用户切换主题,false 时关闭自定义主题面板
|
||||||
"allowCustom": True
|
"allowCustom": True
|
||||||
},
|
},
|
||||||
'colors': [{
|
'colors': [
|
||||||
"id": "1",
|
{
|
||||||
"color": "#2d8cf0"
|
"id": "1",
|
||||||
}, {
|
"color": "#2d8cf0"
|
||||||
"id": "2",
|
},
|
||||||
"color": "#5FB878"
|
{
|
||||||
}, {
|
"id": "2",
|
||||||
"id": "3",
|
"color": "#5FB878"
|
||||||
"color": "#1E9FFF"
|
},
|
||||||
}, {
|
{
|
||||||
"id": "4",
|
"id": "3",
|
||||||
"color": "#FFB800"
|
"color": "#1E9FFF"
|
||||||
}, {
|
},
|
||||||
"id": "5",
|
{
|
||||||
"color": "darkgray"
|
"id": "4",
|
||||||
}],
|
"color": "#FFB800"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5",
|
||||||
|
"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()
|
||||||
|
|||||||
@@ -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,49 +50,46 @@ 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(
|
||||||
'roleName': item.name,
|
result={
|
||||||
'roleCode': item.code,
|
'items': [{'id': item.id,
|
||||||
'enable': item.enable,
|
'roleName': item.name,
|
||||||
'comment': item.comment,
|
'roleCode': item.code,
|
||||||
'details': item.details,
|
'enable': item.enable,
|
||||||
'sort': item.sort,
|
'comment': item.comment,
|
||||||
} for item in paginate.items],
|
'details': item.details,
|
||||||
'total': paginate.total}
|
'sort': item.sort,
|
||||||
, code=0)
|
} for item in paginate.items],
|
||||||
|
'total': paginate.total}
|
||||||
|
, 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,17 +139,18 @@ 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,
|
{
|
||||||
'powerName': item.name,
|
'powerId': item.id,
|
||||||
'powerType': item.type,
|
'powerName': item.name,
|
||||||
'powerUrl': item.url,
|
'powerType': item.type,
|
||||||
'openType': item.open_type,
|
'powerUrl': item.url,
|
||||||
'parentId': item.parent_id,
|
'openType': item.open_type,
|
||||||
'icon': item.icon,
|
'parentId': item.parent_id,
|
||||||
'sort': item.sort,
|
'icon': item.icon,
|
||||||
'enable': item.enable,
|
'sort': item.sort,
|
||||||
} for item in powers]
|
'enable': item.enable,
|
||||||
|
} for item in powers]
|
||||||
for i in powers:
|
for i in powers:
|
||||||
if int(i.get("powerId")) in check_powers_list:
|
if int(i.get("powerId")) in check_powers_list:
|
||||||
i["checkArr"] = "1"
|
i["checkArr"] = "1"
|
||||||
@@ -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()
|
||||||
|
|||||||
+25
-20
@@ -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,23 +27,30 @@ 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={
|
||||||
code=0)
|
'items': data,
|
||||||
|
'total': photo_paginate.total,
|
||||||
|
},
|
||||||
|
code=0)
|
||||||
else:
|
else:
|
||||||
# 显示一张图片
|
# 显示一张图片
|
||||||
item = PhotoModel.query.get(photo_id)
|
item = PhotoModel.query.get(photo_id)
|
||||||
return table_api(result={'items': {
|
return table_api(
|
||||||
'id': item.id,
|
result={
|
||||||
'name': item.name,
|
'items': {
|
||||||
'href': item.href,
|
'id': item.id,
|
||||||
'mime': item.mime,
|
'name': item.name,
|
||||||
'size': item.size,
|
'href': item.href,
|
||||||
'ext': item.ext if hasattr(item, 'ext') else "",
|
'mime': item.mime,
|
||||||
'create_at': str(item.create_at),
|
'size': item.size,
|
||||||
},
|
'ext': item.ext if hasattr(item, 'ext') else "",
|
||||||
'total': 1, },
|
'create_at': str(item.create_at),
|
||||||
code=0)
|
},
|
||||||
|
'total': 1,
|
||||||
|
},
|
||||||
|
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
@@ -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,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
|
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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',
|
||||||
|
|||||||
@@ -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 })
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user