From 328458eda9848988412996aefa51d2cdc34ccfbc Mon Sep 17 00:00:00 2001 From: mkg <1650473152@qq.com> Date: Sat, 20 Mar 2021 22:41:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E8=A7=92=E8=89=B2=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=92=8C=E6=9D=83=E9=99=90=E7=BC=96=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- applications/service/admin/power.py | 20 +++++++++------ applications/service/admin/role.py | 38 +++++++++++++++++++++++------ applications/views/admin/power.py | 14 ++++++++--- applications/views/admin/role.py | 10 +++++++- templates/admin/power/edit.html | 20 +++++++-------- templates/admin/role/main.html | 4 +-- 6 files changed, 74 insertions(+), 32 deletions(-) diff --git a/applications/service/admin/power.py b/applications/service/admin/power.py index bd177b7..a078573 100644 --- a/applications/service/admin/power.py +++ b/applications/service/admin/power.py @@ -70,18 +70,22 @@ def get_power_by_id(id): # 更新角色 def update_power(req_json): - id = req_json.get("roleId") + id = req_json.get("powerId") data = { - "code": req_json.get("roleCode"), - "name": req_json.get("roleName"), - "sort": req_json.get("sort"), - "enable": req_json.get("enable"), - "details": req_json.get("details") + "icon": req_json.get("icon"), + "open_type": req_json.get("openType"), + "parent_id": req_json.get("parentId"), + "code": req_json.get("powerCode"), + "name": req_json.get("powerName"), + "type": req_json.get("powerType"), + "url": req_json.get("powerUrl"), + "sort": req_json.get("sort") } print(data) - role = Role.query.filter_by(id=id).update(data) + power = Power.query.filter_by(id=id).update(data) db.session.commit() - return role + print(power) + return power # 删除权限(目前没有判断父节点自动删除子节点) diff --git a/applications/service/admin/role.py b/applications/service/admin/role.py index af24b48..0a6446a 100644 --- a/applications/service/admin/role.py +++ b/applications/service/admin/role.py @@ -3,7 +3,7 @@ from marshmallow import fields from sqlalchemy import and_ from applications.models import db -from applications.models.admin import Role, Power +from applications.models.admin import Role, Power, User ma = Marshmallow() @@ -77,13 +77,13 @@ def get_role_by_id(id): # 更新角色 def update_role(req_json): - id =req_json.get("roleId") - data ={ - "code":req_json.get("roleCode"), - "name":req_json.get("roleName"), - "sort":req_json.get("sort"), - "enable":req_json.get("enable"), - "details":req_json.get("details") + id = req_json.get("roleId") + data = { + "code": req_json.get("roleCode"), + "name": req_json.get("roleName"), + "sort": req_json.get("sort"), + "enable": req_json.get("enable"), + "details": req_json.get("details") } print(data) role = Role.query.filter_by(id=id).update(data) @@ -124,3 +124,25 @@ def update_role_power(id, power_list): for p in powers: role.power.append(p) db.session.commit() + + +# 删除角色 +def remove_role(id): + role = Role.query.filter_by(id=id).first() + # 删除该角色的权限 + power_id_list = [] + for p in role.power: + power_id_list.append(p.id) + + powers = Power.query.filter(Power.id.in_(power_id_list)).all() + for p in powers: + role.power.remove(p) + user_id_list = [] + for u in role.user: + user_id_list.append(u.id) + users = User.query.filter(User.id.in_(user_id_list)).all() + for u in users: + role.user.remove(u) + r = Role.query.filter_by(id=id).delete() + db.session.commit() + return r diff --git a/applications/views/admin/power.py b/applications/views/admin/power.py index 326912b..dc99876 100644 --- a/applications/views/admin/power.py +++ b/applications/views/admin/power.py @@ -1,6 +1,8 @@ from flask import Blueprint, render_template, request, jsonify from flask_login import login_required -from applications.service.admin.power import get_power_dict, select_parent, save_power, remove_power, get_power_by_id +from applications.service.admin.power import get_power_dict, select_parent, save_power, remove_power, get_power_by_id, \ + update_power + admin_power = Blueprint('adminPower', __name__, url_prefix='/admin/power') @@ -53,17 +55,23 @@ def remove(id): else: return jsonify(success=False, msg="删除失败") + # 权限编辑 @admin_power.route('/edit/', methods=['GET', 'POST']) def edit(id): power = get_power_by_id(id) - return render_template('admin/power/edit.html',power=power) + icon = str(power.icon).split() + if len(icon) == 2: + icon = icon[1] + else: + icon = None + return render_template('admin/power/edit.html', power=power, icon=icon) # 权限更新 @admin_power.route('/update', methods=['PUT']) def update(): - res = update_role(request.json) + res = update_power(request.json) if not res: return jsonify(success=False, msg="更新角色失败") return jsonify(success=True, msg="更新角色成功") diff --git a/applications/views/admin/role.py b/applications/views/admin/role.py index 7ccd6ec..502c780 100644 --- a/applications/views/admin/role.py +++ b/applications/views/admin/role.py @@ -2,7 +2,7 @@ from flask import Blueprint, render_template, request, jsonify from flask_login import login_required from applications.service.admin.role import get_role_data_dict, add_role, get_role_power, update_role_power, \ - get_role_by_id, update_role + get_role_by_id, update_role, remove_role admin_role = Blueprint('adminRole', __name__, url_prefix='/admin/role') @@ -98,6 +98,14 @@ def update(): return jsonify(success=False, msg="更新角色失败") return jsonify(success=True, msg="更新角色成功") + +@admin_role.route('/remove/', methods=['DELETE']) +def remove(id): + res = remove_role(id) + if not res: + return jsonify(success=False, msg="角色删除失败") + return jsonify(success=True, msg="角色删除成功") + # 批量删除 # @admin_user.route('/batchRemove', methods=['GET', 'POST']) # @login_required diff --git a/templates/admin/power/edit.html b/templates/admin/power/edit.html index 2866771..6e0c9cf 100644 --- a/templates/admin/power/edit.html +++ b/templates/admin/power/edit.html @@ -1,5 +1,5 @@ - + 权限编辑
- - -
@@ -59,8 +59,8 @@
@@ -113,7 +113,7 @@ skin: "layui", dataFormat: "list", response: {treeId: "powerId", parentId: "parentId", title: "powerName"}, - selectInitVal: {{ power.parent_id }} + selectInitVal: "{{ power.parent_id }}" }); form.on("radio(powerType)", function (data) { @@ -140,7 +140,7 @@ form.on('submit(power-save)', function (data) { data.field.icon = "layui-icon " + data.field.icon; $.ajax({ - url: '/system/power/update', + url: '/admin/power/update', data: JSON.stringify(data.field), dataType: 'json', contentType: 'application/json', @@ -170,7 +170,7 @@ } }); - iconPicker.checkIcon("icon", [[${sysPower.icon}]]); + iconPicker.checkIcon("icon", "{{ icon }}"); window.init = function (type) { if (type == '0') { @@ -193,7 +193,7 @@ } } - window.init([[${sysPower.powerType}]]); + window.init("{{ power.type}}"); })