You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

134 lines
5.0 KiB

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@Date:2022/08/01 17:04:40
'''
import sys
from models.power_models import EntityModuleRelation
sys.path.append('.')
from sqlalchemy import or_
from db_logic.module import BllModule
from db_logic.role import BllRole
from Common.auth import token_auth
from flask import Blueprint, jsonify, request, g
from db_logic.module_relation import BllModuleRelation
from models.user_models import EntityRole
from Common.Utils import Utils
power_router = Blueprint('power', __name__)
@power_router.route("/user_power", methods=["GET", "POST"])
@token_auth.login_required
def get_user_power_list():
user_info = g.current_user
# user_id = '4cea74ee-0d8b-11ed-943e-f47b094925e1'
# user_info = BllUser().findEntity(user_id)
module_list = BllModuleRelation().get_user_module_list(user_id=user_info.user_id, role_id=user_info.role_id)
module_list = Utils.msyql_table_model(module_list)
return jsonify(Utils.true_return(data=module_list))
# 获取角色列表
@power_router.route("/get_list", methods=["GET", "POST"])
@token_auth.login_required
def get_power_list():
# 根据角色表进行关联查询,
# 思路角色表角色id->模块权限表object_id-> 终端权限表()
# | |
# role_id=object_id module_id=module_id
data_list = BllModuleRelation().get_role_module()
return jsonify(Utils.true_return(data=Utils.msyql_table_model(data_list)))
# 获取模块列表
@power_router.route("/get_module_list", methods=["GET", "POST"])
# @token_auth.login_required
def get_module_list():
data_list = BllModule().get_module_list()
return jsonify(Utils.true_return(data=data_list))
# 添加角色
@power_router.route("/add_update_role", methods=["GET", "POST"])
@token_auth.login_required
def add_role():
role_id = request.values.get("role_id")
role_code = request.values.get("role_code")
role_name = request.values.get("role_name")
sys_module_list = request.values.getlist("sys_module")
client_module_list = request.values.getlist("client_module")
description = request.values.get("description")
# 获取角色代码或者角色名的角色信息
obj = BllRole().findEntity(
or_(EntityRole.role_code == role_code, EntityRole.role_name == role_name))
# 判断是创建角色
if not role_id:
# 判断信息重复
if obj:
return jsonify(Utils.false_return(msg="角色代码或角色名重复,创建失败"))
else:
# 创建角色
role_max_obj = BllRole().execute("select max(sort_index) as sort_index from rms_role").fetchone()
role_id=Utils.UUID()
role_obj = EntityRole(
role_id=role_id,
role_code=role_code,
role_name=role_name,
role_level=1,
description=description,
sort_index=int(role_max_obj.sort_index or '0') + 1
)
BllRole().insert(role_obj)
else:
# 修改角色信息
role_obj = BllRole().findEntity(role_id)
# 判断修改的信息是否重复
if not obj or role_obj.role_id == role_id:
role_obj.role_code=role_code,
role_obj.role_name=role_name,
role_obj.description=description,
BllRole().update(role_obj)
else:
return jsonify(Utils.false_return(msg="角色代码或角色名重复,修改失败"))
# 删除原有的权限,每次重新创建
BllModuleRelation().delete(EntityModuleRelation.object_id==role_id)
inster_module_list = []
if sys_module_list:
sys_module_list = eval(sys_module_list)
for module_id in sys_module_list:
inster_module_list.append(
EntityModuleRelation(
object_type=1,
object_id=role_id,
module_id=module_id,
module_type=2,
create_date=Utils.get_str_datetime()
)
)
if client_module_list:
client_module_list = eval(client_module_list)
for module_id in client_module_list:
inster_module_list.append(
EntityModuleRelation(
object_type=1,
object_id=role_id,
module_id=module_id,
module_type=1,
create_date=Utils.get_str_datetime()
)
)
BllModuleRelation().insert_many(inster_module_list)
return jsonify(Utils.true_return())
# 删除角色
@power_router.route("/del_role", methods=["GET", "POST"])
@token_auth.login_required
def remove_role():
role_id = request.values.get("role_id")
if role_id:
BllRole().delete(EntityRole.role_id==role_id)
BllModuleRelation().delete(EntityModuleRelation.object_id==role_id)
return jsonify(Utils.true_return(msg="删除成功"))
return jsonify(Utils.false_return(msg="请选择角色"))