diff --git a/sql/ry_20180709.sql b/sql/ry_20180709.sql index 9bb2c6359..4f055d9ec 100644 --- a/sql/ry_20180709.sql +++ b/sql/ry_20180709.sql @@ -594,4 +594,14 @@ create table sys_notice ( -- 初始化-公告信息表数据 -- ---------------------------- insert into sys_notice values('1', '温馨提醒:2018-07-01 若依新版本发布啦', '2', '新版本内容', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '管理员'); -insert into sys_notice values('2', '维护通知:2018-07-01 若依系统凌晨维护', '1', '维护内容', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '管理员'); \ No newline at end of file +insert into sys_notice values('2', '维护通知:2018-07-01 若依系统凌晨维护', '1', '维护内容', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '管理员'); + +-- ---------------------------- +-- 18、角色和部门关联表 角色1-N部门(用于数据权限) +-- ---------------------------- +drop table if exists sys_role_dept; +create table sys_role_dept ( + role_id int(11) not null comment '角色ID', + dept_id int(11) not null comment '部门ID', + primary key(role_id, dept_id) +) engine=innodb default charset=utf8 comment = '角色和部门关联表,用于数据权限'; \ No newline at end of file diff --git a/src/main/java/com/ruoyi/project/system/role/domain/RoleDept.java b/src/main/java/com/ruoyi/project/system/role/domain/RoleDept.java new file mode 100644 index 000000000..46744a0e0 --- /dev/null +++ b/src/main/java/com/ruoyi/project/system/role/domain/RoleDept.java @@ -0,0 +1,32 @@ +package com.ruoyi.project.system.role.domain; + +/** + * 角色和部门关联 sys_role_dept + */ +public class RoleDept { + /** 角色ID */ + private Long roleId; + /** 部门ID */ + private Long deptId; + + public Long getRoleId() { + return roleId; + } + + public void setRoleId(Long roleId) { + this.roleId = roleId; + } + + public Long getDeptId() { + return deptId; + } + + public void setDeptId(Long deptId) { + this.deptId = deptId; + } + @Override + public String toString() + { + return "RoleDept [roleId=" + roleId + ", deptId=" + deptId + "]"; + } +} diff --git a/src/main/java/com/ruoyi/project/system/role/mapper/RoleDeptMapper.java b/src/main/java/com/ruoyi/project/system/role/mapper/RoleDeptMapper.java new file mode 100644 index 000000000..811bdf3c4 --- /dev/null +++ b/src/main/java/com/ruoyi/project/system/role/mapper/RoleDeptMapper.java @@ -0,0 +1,43 @@ +package com.ruoyi.project.system.role.mapper; + +import com.ruoyi.project.system.role.domain.RoleDept; + +import java.util.List; + +/** + * 角色与部门关联表(用于数据权限) 数据层 + */ +public interface RoleDeptMapper { + /** + * 通过角色ID删除角色和部门关联 + * + * @param roleId 角色ID + * @return 结果 + */ + public int deleteRoleDeptByRoleId(Long roleId); + + /** + * 批量删除角色部门关联信息 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteRoleDept(Long[] ids); + + /** + * 查询部门使用数量 + * + * @param detpId 部门ID + * @return 结果 + */ + public int selectCountRoleDeptByDetpId(Long detpId); + + /** + * 批量新增角色部门信息(数据权限) + * + * @param roleDeptList 角色菜单列表 + * @return 结果 + */ + public int batchRoleDept(List roleDeptList); + +} diff --git a/src/main/resources/mybatis/system/RoleDeptMapper.xml b/src/main/resources/mybatis/system/RoleDeptMapper.xml new file mode 100644 index 000000000..db7827d13 --- /dev/null +++ b/src/main/resources/mybatis/system/RoleDeptMapper.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + delete from sys_role_dept where role_id=#{roleId} + + + + + + delete from sys_role_dept where role_id in + + #{roleId} + + + + + insert into sys_role_dept(role_id, dept_id) values + + (#{item.roleId},#{item.deptId}) + + + + \ No newline at end of file diff --git a/src/main/resources/templates/system/role/add.html b/src/main/resources/templates/system/role/add.html index 6276e7251..087a16672 100644 --- a/src/main/resources/templates/system/role/add.html +++ b/src/main/resources/templates/system/role/add.html @@ -48,6 +48,12 @@ +
+ +
+
+
+
@@ -76,6 +82,24 @@ menuTrees = $.fn.zTree.init($("#menuTrees"), setting, data); //.expandAll(true); }, null, null, "正在加载,请稍后..."); };loadTree(); + + // 权限树结构初始化加载 + var deptsetting = { + check:{enable:true,nocheckInherit:true,chkboxType:{"Y":"ps","N":"ps"}}, + view:{selectedMulti:false,nameIsHTML: true}, + data:{simpleData:{enable:true},key:{title:"title"}}, + callback:{ + beforeClick: function (treeId, treeNode, clickFlag) { + var deptTrees = $.fn.zTree.getZTreeObj(treeId); + deptTrees.checkNode(treeNode, !treeNode.checked, true, true); + return false; + } + } + }, deptTrees, loadTree = function(){ + $.get(ctx + "system/dept/treeData", function(data) { + deptTrees = $.fn.zTree.init($("#deptTrees"), deptsetting, data); //.expandAll(true); + }, null, null, "正在加载,请稍后..."); + };loadTree(); $("#form-role-add").validate({ rules:{ @@ -115,17 +139,29 @@ }); function selectCheckeds() { - var menuIds = ""; - var treeNodes = menuTrees.getCheckedNodes(true); - for (var i = 0; i < treeNodes.length; i++) { - if (0 == i) { - menuIds = treeNodes[i].id; - } else { - menuIds += ("," + treeNodes[i].id); - } - } - return menuIds; - } + var menuIds = ""; + var treeNodes = menuTrees.getCheckedNodes(true); + for (var i = 0; i < treeNodes.length; i++) { + if (0 == i) { + menuIds = treeNodes[i].id; + } else { + menuIds += ("," + treeNodes[i].id); + } + } + return menuIds; + } + function selectDeptCheckeds() { + var deptIds = ""; + var treeNodes = deptTrees.getCheckedNodes(true); + for (var i = 0; i < treeNodes.length; i++) { + if (0 == i) { + deptIds = treeNodes[i].id; + } else { + deptIds += ("," + treeNodes[i].id); + } + } + return deptIds; + } function add() { var roleName = $("input[name='roleName']").val(); @@ -134,6 +170,7 @@ var status = $("input[name='status']").is(':checked') == true ? 0 : 1; var remark = $("input[name='remark']").val(); var menuIds = selectCheckeds(); + var deptIds = selectDeptCheckeds(); $.ajax({ cache : true, type : "POST", @@ -144,7 +181,8 @@ "roleSort": roleSort, "status": status, "remark": remark, - "menuIds": menuIds + "menuIds": menuIds, + "deptIds":deptIds }, async : false, error : function(request) {