diff --git a/README.md b/README.md index b2388d6b595a3c08ac3297f87dc73970ebb603d6..fd3aa8ddc41c7697f3ba3076f395af15ae56fdd9 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ quick-node-express基于node和express框架实现的后端框架。 #### 软件架构 -软件架构说明 +软件架构说明; #### 安装教程 diff --git a/controllers/menuController.js b/controllers/menuController.js index c9438c26eca7b91969a6cff486a215937cb2919b..aa5335efd4fd3a83d69d3139057057499270d08a 100644 --- a/controllers/menuController.js +++ b/controllers/menuController.js @@ -4,10 +4,16 @@ const { updateMenu, deleteMenu, getPermissionMenuListByUserId, + getPermissionMenuListByRoleId, + assignPermission, } = require("../services/menuServices"); class MenuController { constructor() {} + getRoleMenuLsit(body){ + const {id:roleId}=body + return getPermissionMenuListByRoleId(roleId) + } getPermission(body){ const {id:userId}=body return getPermissionMenuListByUserId(userId) @@ -27,5 +33,9 @@ class MenuController { const { id } = body; return deleteMenu(id); } + assign(body) { + const { roleId,menuIds } = body; + return assignPermission(roleId,menuIds); + } } module.exports = new MenuController(); diff --git a/model/roleMenuModel.js b/model/roleMenuModel.js index bae3b426a710de4b55857f1ae36b2f6554926922..2e904a0fa61adc8b295a24ce8ddfbf575c559410 100644 --- a/model/roleMenuModel.js +++ b/model/roleMenuModel.js @@ -2,38 +2,23 @@ const db = require("../config/dbPool"); class RoleModel { - select() { - const sql = "select * from per_role_menus"; - const sqlArr = []; - return db.queryAsync(sql, sqlArr); - } selectWhere(roleIds){ const sql = `select * from per_role_menus where role_id in(${roleIds})`; const sqlArr = []; return db.queryAsync(sql, sqlArr); } - insert(dic) { - const sql = - "insert into per_role_menus(role_id,role_name) values(?,?)"; - const sqlArr = [ - dic.roleId, - dic.roleName, - ]; - return db.queryAsync(sql, sqlArr); - } - update(dic) { + insert(roleMenu) { const sql = - "update per_role_menus set role_name=? where id=?"; + "insert into per_role_menus(role_id,menu_id) values(?,?)"; const sqlArr = [ - dic.roleId, - dic.roleName, - dic.id, + roleMenu.roleId, + roleMenu.menuId, ]; return db.queryAsync(sql, sqlArr); } - remove(id) { - const sql = "delete from per_role_menus where id=?"; - const sqlArr = [id]; + removeWhere(roleId) { + const sql = "delete from per_role_menus where role_id=?"; + const sqlArr = [roleId]; return db.queryAsync(sql, sqlArr); } } diff --git a/router/menu.js b/router/menu.js index 3a2bd86508081e12eaa4108d48d13c009fb54c26..1f004a6fd81ee1321f7022339eaf25222fe4591d 100644 --- a/router/menu.js +++ b/router/menu.js @@ -1,13 +1,21 @@ const express = require("express"); const router = express.Router(); const { + getRoleMenuLsit, getPermission, getList, add, update, remove, + assign, } = require("../controllers/menuController"); +router.get("/api/menu/getRoleMenuLsit", (req, res) => { + const { query } = req; + getRoleMenuLsit(query).then((data) => { + res.send(data); + }); +}); router.get("/api/menu/getPermission", (req, res) => { const { query } = req; getPermission(query).then((data) => { @@ -39,5 +47,12 @@ router.post("/api/menu/delete", (req, res) => { res.send(data); }); }); +router.post("/api/menu/assignPermission", (req, res) => { + const { body } = req; + assign(body).then((data) => { + res.send(data); + }); +}); + module.exports = router; diff --git a/services/menuServices.js b/services/menuServices.js index 857d7d199e9dd64319fd1c1e6553880c521f342a..2a33b30d3618e7f1ac05f49a2ba46ca8836bb2af 100644 --- a/services/menuServices.js +++ b/services/menuServices.js @@ -6,10 +6,40 @@ const { remove } = require("../model/menuModel"); const {getUserRoleListByUserId} =require('./userRoleServices') -const {getRoleMenuListByIds} =require('./roleMenuServices') +const { + getRoleMenuListByIds, + bindMenuForRole +} =require('./roleMenuServices') class MenuServices { constructor() {} + async getPermissionMenuListByRoleId(roleId){ + const menuIdArr=[] + const roleMenuList=await getRoleMenuListByIds(roleId) + roleMenuList.forEach(element => { + const menuId=element.menu_id + const index=menuIdArr.indexOf(menuId) + if(index==-1){ + menuIdArr.push(menuId) + } + }); + if(menuIdArr.length<=0){ + return { + status: 0, + msg: "授权菜单列表", + data:[] + }; + } + const menuIds= menuIdArr.join(',') + const menuListResult = await selectWhere(menuIds); + const menuList = menuListResult.results && menuListResult.results; + const jsonObj = { + status: 0, + msg: "授权菜单列表", + data:menuList + }; + return jsonObj; + } async getPermissionMenuListByUserId(userId){ const userRoleList=await getUserRoleListByUserId(userId) @@ -89,5 +119,10 @@ class MenuServices { }; return jsonObj; } + + async assignPermission(roleId,menuIds) { + const jsonObj =await bindMenuForRole(roleId,menuIds); + return jsonObj; + } } module.exports = new MenuServices(); diff --git a/services/roleMenuServices.js b/services/roleMenuServices.js index 52aaa2d5ce1945a29c0154d4cebde658e8d332e1..3205a476a271a33bfa4b1d05655c6892c1c809b0 100644 --- a/services/roleMenuServices.js +++ b/services/roleMenuServices.js @@ -1,5 +1,7 @@ const { - selectWhere + selectWhere, + removeWhere, + insert } = require("../model/roleMenuModel"); class RoleMenuServices { @@ -19,24 +21,29 @@ class RoleMenuServices { }; return jsonObj; } - async allotUser(userRole) { - await insert(userRole); + async bindMenuForRole(roleId,menuIds) { + await removeWhere(roleId) + const menuIdArr=menuIds.split(',') + menuIdArr.forEach(async (menuId)=>{ + const roleMenu={roleId,menuId} + await insert(roleMenu); + }) const jsonObj = { status: 0, - msg: "分配用户成功", + msg: "角色权限分配成功", data: null, }; return jsonObj; } - async unassignUser(id) { - await remove(id); - const jsonObj = { - status: 0, - msg: "取消分配用户成功", - data: null, - }; - return jsonObj; - } + // async unassignUser(id) { + // await remove(id); + // const jsonObj = { + // status: 0, + // msg: "取消分配用户成功", + // data: null, + // }; + // return jsonObj; + // } } module.exports = new RoleMenuServices();