|
@@ -1,27 +1,46 @@
|
|
-from flask import request
|
|
|
|
|
|
+import json
|
|
|
|
+
|
|
|
|
+from flask import request, jsonify, current_app
|
|
from flask_restx import Resource, Namespace, reqparse
|
|
from flask_restx import Resource, Namespace, reqparse
|
|
|
|
+from sqlalchemy import select, insert, update, delete
|
|
|
|
+from sqlalchemy.orm import Session
|
|
|
|
+from sqlalchemy import func
|
|
|
|
|
|
|
|
+from app.database import engine
|
|
from app.defines import StatesCode
|
|
from app.defines import StatesCode
|
|
|
|
+from app.modle.role import Role
|
|
|
|
+from app.modle.users import User
|
|
|
|
+from app.utils.to_dict import to_dict
|
|
|
|
|
|
ns = Namespace('role', description='角色管理接口')
|
|
ns = Namespace('role', description='角色管理接口')
|
|
|
|
|
|
|
|
+role_list = reqparse.RequestParser(bundle_errors=True)
|
|
|
|
+role_list.add_argument(name='page_size', type=int, location='args', required=False, help='每页记录数量,默认:20')
|
|
|
|
+role_list.add_argument(name='page', type=int, location='args', required=False, help='页数')
|
|
|
|
+
|
|
|
|
|
|
@ns.route('/role_list')
|
|
@ns.route('/role_list')
|
|
class GetUserListApi(Resource):
|
|
class GetUserListApi(Resource):
|
|
@ns.doc(id='get_role_list', description='获取角色列表')
|
|
@ns.doc(id='get_role_list', description='获取角色列表')
|
|
- @ns.expect()
|
|
|
|
|
|
+ @ns.expect(role_list)
|
|
def get(self):
|
|
def get(self):
|
|
"""获取角色列表"""
|
|
"""获取角色列表"""
|
|
- status = request.args.get('status')
|
|
|
|
|
|
+
|
|
page_size = int(request.args.get('page_size', 20))
|
|
page_size = int(request.args.get('page_size', 20))
|
|
page = int(request.args.get('page', 1))
|
|
page = int(request.args.get('page', 1))
|
|
- data = [
|
|
|
|
- {"name": "admin", "message": "1111", "member": 100, "relationship_groups": 1},
|
|
|
|
- {"name": "admin1", "message": "2222", "member": 200, "relationship_groups": 2},
|
|
|
|
- {"name": "admin1", "message": "3333", "member": 300, "relationship_groups": 3},
|
|
|
|
|
|
|
|
- ]
|
|
|
|
- return {"code": StatesCode.SUCCESS, "message": "成功", "data": data}
|
|
|
|
|
|
+ with Session(engine) as session:
|
|
|
|
+ stmt = select(Role).offset(page_size * (page - 1)).limit(page_size)
|
|
|
|
+ results = session.execute(stmt).scalars().all()
|
|
|
|
+
|
|
|
|
+ return jsonify(code=StatesCode.SUCCESS, message='成功', data=to_dict(results))
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+role = reqparse.RequestParser(bundle_errors=True)
|
|
|
|
+role.add_argument(name='role_id', type=int, location='form', required=False, help='角色id')
|
|
|
|
+role.add_argument(name='role_name', type=str, location='form', required=False, help='角色名称')
|
|
|
|
+role.add_argument(name='role_describe', type=str, location='form', required=False, help='角色描述')
|
|
|
|
+role.add_argument(name='role_permission', type=str, location='form', required=False, help='角色权限')
|
|
|
|
|
|
|
|
|
|
@ns.route('/role')
|
|
@ns.route('/role')
|
|
@@ -32,36 +51,87 @@ class RoleApi(Resource):
|
|
"""搜索角色"""
|
|
"""搜索角色"""
|
|
data = {
|
|
data = {
|
|
"name": "决策组",
|
|
"name": "决策组",
|
|
- # "describe":"xxxxx",
|
|
|
|
- # "移动端":{
|
|
|
|
- #
|
|
|
|
- # },
|
|
|
|
- # "pc端":{
|
|
|
|
- # "前段":[],
|
|
|
|
- # "后段":[]
|
|
|
|
- # },
|
|
|
|
- # "member":[]
|
|
|
|
|
|
|
|
}
|
|
}
|
|
return {"code": StatesCode.SUCCESS, "message": "成功", "data": data}
|
|
return {"code": StatesCode.SUCCESS, "message": "成功", "data": data}
|
|
|
|
|
|
@ns.doc(id='add_role', description='添加角色')
|
|
@ns.doc(id='add_role', description='添加角色')
|
|
- @ns.expect()
|
|
|
|
|
|
+ @ns.expect(role)
|
|
def post(self):
|
|
def post(self):
|
|
"""添加角色"""
|
|
"""添加角色"""
|
|
- return {"code": StatesCode.SUCCESS, "message": "成功", "data": "添加成功"}
|
|
|
|
|
|
+
|
|
|
|
+ role_name = request.form.get('role_name')
|
|
|
|
+ role_describe = request.form.get('role_describe')
|
|
|
|
+ role_permission = request.form.get('role_permission')
|
|
|
|
+
|
|
|
|
+ if role_name is None:
|
|
|
|
+ return jsonify(code=StatesCode.UNKNOWN_ERROR, message="角色名不能为空")
|
|
|
|
+
|
|
|
|
+ if role_permission:
|
|
|
|
+ role_permission = json.loads(role_permission)
|
|
|
|
+
|
|
|
|
+ with Session(engine) as session:
|
|
|
|
+
|
|
|
|
+ stmt = insert(Role).values(
|
|
|
|
+ role_name=role_name,
|
|
|
|
+ role_describe=role_describe,
|
|
|
|
+ role_permission=role_permission
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+ session.execute(stmt)
|
|
|
|
+ session.commit()
|
|
|
|
+
|
|
|
|
+ return jsonify(code=StatesCode.SUCCESS, message='成功')
|
|
|
|
|
|
@ns.doc(id='modify_role', description='修改角色')
|
|
@ns.doc(id='modify_role', description='修改角色')
|
|
- @ns.expect()
|
|
|
|
|
|
+ @ns.expect(role)
|
|
def put(self):
|
|
def put(self):
|
|
"""修改角色"""
|
|
"""修改角色"""
|
|
- return {"code": StatesCode.SUCCESS, "message": "成功", "data": "修改成功"}
|
|
|
|
|
|
+ role_id = request.form.get('role_id')
|
|
|
|
+ role_name = request.form.get('role_name')
|
|
|
|
+ role_describe = request.form.get('role_describe')
|
|
|
|
+ role_permission = request.form.get('role_permission')
|
|
|
|
+
|
|
|
|
+ if role_name is None or role_id is None:
|
|
|
|
+ return jsonify(code=StatesCode.UNKNOWN_ERROR, message="角色名和角色id不能为空")
|
|
|
|
+
|
|
|
|
+ if role_permission:
|
|
|
|
+ role_permission = json.loads(role_permission)
|
|
|
|
+
|
|
|
|
+ with Session(engine) as session:
|
|
|
|
+
|
|
|
|
+ stmt = update(Role).where(Role.id == role_id).values(
|
|
|
|
+ role_name=role_name,
|
|
|
|
+ role_describe=role_describe,
|
|
|
|
+ role_permission=role_permission
|
|
|
|
+ )
|
|
|
|
+ session.execute(stmt)
|
|
|
|
+ session.commit()
|
|
|
|
+
|
|
|
|
+ return jsonify(code=StatesCode.SUCCESS, message="添加角色成功")
|
|
|
|
|
|
@ns.doc(id='delete_role', description='删除角色')
|
|
@ns.doc(id='delete_role', description='删除角色')
|
|
- @ns.expect()
|
|
|
|
|
|
+ @ns.expect(role)
|
|
def delete(self):
|
|
def delete(self):
|
|
"""删除角色"""
|
|
"""删除角色"""
|
|
- return {"code": StatesCode.SUCCESS, "message": "成功", "data": "删除成功"}
|
|
|
|
|
|
+ role_id = request.form.get('role_id')
|
|
|
|
+
|
|
|
|
+ if role_id is None:
|
|
|
|
+ return jsonify(code=StatesCode.UNKNOWN_ERROR, message="角色名和角色id不能为空")
|
|
|
|
+
|
|
|
|
+ # 查询用户,用户的角色为当前角色,无法删除角色
|
|
|
|
+ with Session(engine) as session:
|
|
|
|
+ stmt = select(func.count(User.role)).where(User.role == role_id)
|
|
|
|
+ results = session.execute(stmt).scalars().first()
|
|
|
|
+
|
|
|
|
+ if results > 0:
|
|
|
|
+ return jsonify(code=StatesCode.UNKNOWN_ERROR, message="该角色组存在用户,无法删除")
|
|
|
|
+ else:
|
|
|
|
+ stmt = delete(Role).where(Role.id == role_id)
|
|
|
|
+ session.execute(stmt)
|
|
|
|
+ session.commit()
|
|
|
|
+
|
|
|
|
+ return jsonify(code=StatesCode.SUCCESS, message="删除角色成功")
|
|
|
|
|
|
|
|
|
|
@ns.route('/member')
|
|
@ns.route('/member')
|
|
@@ -97,17 +167,11 @@ class RoleMemberApi(Resource):
|
|
|
|
|
|
@ns.route('/role_permission')
|
|
@ns.route('/role_permission')
|
|
class RolePermissionApi(Resource):
|
|
class RolePermissionApi(Resource):
|
|
- @ns.doc(id='get_role_permission', description='获取角色权限')
|
|
|
|
|
|
+ @ns.doc(id='get_role_permission', description='获取权限配置信息')
|
|
@ns.expect()
|
|
@ns.expect()
|
|
def get(self):
|
|
def get(self):
|
|
- """获取权限列表"""
|
|
|
|
- data = {
|
|
|
|
- "前端": {
|
|
|
|
|
|
+ """获取权限信息"""
|
|
|
|
|
|
- },
|
|
|
|
- "后端": {
|
|
|
|
|
|
+ permission = current_app.config['permission']
|
|
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
- return {"code": StatesCode.SUCCESS, "message": "成功", "data": data}
|
|
|
|
|
|
+ return {"code": StatesCode.SUCCESS, "message": "成功", "data": permission}
|