From c11e1a5a2bdfa6d9a76ef8cdfdf008f51ee094b2 Mon Sep 17 00:00:00 2001 From: RuoYi Date: Sat, 19 Sep 2020 14:10:45 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8F=9C=E5=8D=95&=E6=95=B0=E6=8D=AE=E6=9D=83?= =?UTF-8?q?=E9=99=90=E6=96=B0=E5=A2=9E=EF=BC=88=E5=B1=95=E5=BC=80/?= =?UTF-8?q?=E6=8A=98=E5=8F=A0=20=E5=85=A8=E9=80=89/=E5=85=A8=E4=B8=8D?= =?UTF-8?q?=E9=80=89=20=E7=88=B6=E5=AD=90=E8=81=94=E5=8A=A8=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sql/{ry_20200822.sql => ry_20200919.sql} | 60 ++++++++++--------- .../ruoyi/project/system/domain/SysRole.java | 28 +++++++++ .../project/system/mapper/SysDeptMapper.java | 3 +- .../project/system/mapper/SysMenuMapper.java | 3 +- .../service/impl/SysDeptServiceImpl.java | 8 ++- .../service/impl/SysMenuServiceImpl.java | 8 ++- .../mybatis/system/SysDeptMapper.xml | 8 ++- .../mybatis/system/SysMenuMapper.xml | 8 ++- .../mybatis/system/SysRoleMapper.xml | 34 +++++++---- 9 files changed, 109 insertions(+), 51 deletions(-) rename sql/{ry_20200822.sql => ry_20200919.sql} (95%) diff --git a/sql/ry_20200822.sql b/sql/ry_20200919.sql similarity index 95% rename from sql/ry_20200822.sql rename to sql/ry_20200919.sql index 5978a45..9a8d3ac 100644 --- a/sql/ry_20200822.sql +++ b/sql/ry_20200919.sql @@ -177,41 +177,45 @@ create sequence seq_sys_role cache 20; create table sys_role ( - role_id number(20) not null, - role_name varchar2(30) not null, - role_key varchar2(100) not null, - role_sort number(4) not null, - data_scope char(1) default '1', - status char(1) not null, - del_flag char(1) default '0', - create_by varchar2(64) default '', - create_time date, - update_by varchar2(64) default '', - update_time date, - remark varchar2(500) default null + role_id number(20) not null, + role_name varchar2(30) not null, + role_key varchar2(100) not null, + role_sort number(4) not null, + data_scope char(1) default '1', + menu_check_strictly number(1) default 1, + dept_check_strictly number(1) default 1, + status char(1) not null, + del_flag char(1) default '0', + create_by varchar2(64) default '', + create_time date, + update_by varchar2(64) default '', + update_time date, + remark varchar2(500) default null ); alter table sys_role add constraint pk_sys_role primary key (role_id); -comment on table sys_role is '角色信息表'; -comment on column sys_role.role_id is '角色主键seq_sys_post.nextval'; -comment on column sys_role.role_name is '角色名称'; -comment on column sys_role.role_key is '角色权限字符串'; -comment on column sys_role.role_sort is '显示顺序'; -comment on column sys_role.data_scope is '数据范围(1:全部数据权限 2:自定数据权限)'; -comment on column sys_role.status is '角色状态(0正常 1停用)'; -comment on column sys_role.del_flag is '删除标志(0代表存在 2代表删除)'; -comment on column sys_role.create_by is '创建者'; -comment on column sys_role.create_time is '创建时间'; -comment on column sys_role.update_by is '更新者'; -comment on column sys_role.update_time is '更新时间'; -comment on column sys_role.remark is '备注'; +comment on table sys_role is '角色信息表'; +comment on column sys_role.role_id is '角色主键seq_sys_post.nextval'; +comment on column sys_role.role_name is '角色名称'; +comment on column sys_role.role_key is '角色权限字符串'; +comment on column sys_role.role_sort is '显示顺序'; +comment on column sys_role.data_scope is '数据范围(1:全部数据权限 2:自定数据权限)'; +comment on column sys_role.menu_check_strictly is '菜单树选择项是否关联显示'; +comment on column sys_role.dept_check_strictly is '部门树选择项是否关联显示'; +comment on column sys_role.status is '角色状态(0正常 1停用)'; +comment on column sys_role.del_flag is '删除标志(0代表存在 2代表删除)'; +comment on column sys_role.create_by is '创建者'; +comment on column sys_role.create_time is '创建时间'; +comment on column sys_role.update_by is '更新者'; +comment on column sys_role.update_time is '更新时间'; +comment on column sys_role.remark is '备注'; -- ---------------------------- -- 初始化-角色信息表数据 -- ---------------------------- -insert into sys_role values('1', '超级管理员', 'admin', 1, 1, '0', '0', 'admin', TO_DATE('2018-03-16 11-33-00', 'YYYY-MM-DD HH24:MI:SS'), 'ry', TO_DATE('2018-03-16 11-33-00', 'YYYY-MM-DD HH24:MI:SS'), '超级管理员'); -insert into sys_role values('2', '普通角色', 'common', 2, 2, '0', '0', 'admin', TO_DATE('2018-03-16 11-33-00', 'YYYY-MM-DD HH24:MI:SS'), 'ry', TO_DATE('2018-03-16 11-33-00', 'YYYY-MM-DD HH24:MI:SS'), '普通角色'); +insert into sys_role values('1', '超级管理员', 'admin', 1, 1, 1, 1, '0', '0', 'admin', TO_DATE('2018-03-16 11-33-00', 'YYYY-MM-DD HH24:MI:SS'), 'ry', TO_DATE('2018-03-16 11-33-00', 'YYYY-MM-DD HH24:MI:SS'), '超级管理员'); +insert into sys_role values('2', '普通角色', 'common', 2, 2, 1, 1, '0', '0', 'admin', TO_DATE('2018-03-16 11-33-00', 'YYYY-MM-DD HH24:MI:SS'), 'ry', TO_DATE('2018-03-16 11-33-00', 'YYYY-MM-DD HH24:MI:SS'), '普通角色'); -- ---------------------------- @@ -883,7 +887,7 @@ create table sys_notice ( notice_id number(20) not null, notice_title varchar2(50) not null, notice_type char(1) not null, - notice_content blob default null, + notice_content clob default null, status char(1) default '0', create_by varchar2(64) default '', create_time date, diff --git a/src/main/java/com/ruoyi/project/system/domain/SysRole.java b/src/main/java/com/ruoyi/project/system/domain/SysRole.java index 677c2e4..8cdd66f 100644 --- a/src/main/java/com/ruoyi/project/system/domain/SysRole.java +++ b/src/main/java/com/ruoyi/project/system/domain/SysRole.java @@ -37,6 +37,12 @@ public class SysRole extends BaseEntity @Excel(name = "数据范围", readConverterExp = "1=所有数据权限,2=自定义数据权限,3=本部门数据权限,4=本部门及以下数据权限") private String dataScope; + /** 菜单树选择项是否关联显示( 0:父子不互相关联显示 1:父子互相关联显示) */ + private boolean menuCheckStrictly; + + /** 部门树选择项是否关联显示(0:父子不互相关联显示 1:父子互相关联显示 ) */ + private boolean deptCheckStrictly; + /** 角色状态(0正常 1停用) */ @Excel(name = "角色状态", readConverterExp = "0=正常,1=停用") private String status; @@ -128,6 +134,26 @@ public class SysRole extends BaseEntity this.dataScope = dataScope; } + public boolean isMenuCheckStrictly() + { + return menuCheckStrictly; + } + + public void setMenuCheckStrictly(boolean menuCheckStrictly) + { + this.menuCheckStrictly = menuCheckStrictly; + } + + public boolean isDeptCheckStrictly() + { + return deptCheckStrictly; + } + + public void setDeptCheckStrictly(boolean deptCheckStrictly) + { + this.deptCheckStrictly = deptCheckStrictly; + } + public String getStatus() { return status; @@ -186,6 +212,8 @@ public class SysRole extends BaseEntity .append("roleKey", getRoleKey()) .append("roleSort", getRoleSort()) .append("dataScope", getDataScope()) + .append("menuCheckStrictly", isMenuCheckStrictly()) + .append("deptCheckStrictly", isDeptCheckStrictly()) .append("status", getStatus()) .append("delFlag", getDelFlag()) .append("createBy", getCreateBy()) diff --git a/src/main/java/com/ruoyi/project/system/mapper/SysDeptMapper.java b/src/main/java/com/ruoyi/project/system/mapper/SysDeptMapper.java index 113db29..b16a7fa 100644 --- a/src/main/java/com/ruoyi/project/system/mapper/SysDeptMapper.java +++ b/src/main/java/com/ruoyi/project/system/mapper/SysDeptMapper.java @@ -23,9 +23,10 @@ public interface SysDeptMapper * 根据角色ID查询部门树信息 * * @param roleId 角色ID + * @param deptCheckStrictly 部门树选择项是否关联显示 * @return 选中部门列表 */ - public List selectDeptListByRoleId(Long roleId); + public List selectDeptListByRoleId(@Param("roleId") Long roleId, @Param("deptCheckStrictly") boolean deptCheckStrictly); /** * 根据部门ID查询信息 diff --git a/src/main/java/com/ruoyi/project/system/mapper/SysMenuMapper.java b/src/main/java/com/ruoyi/project/system/mapper/SysMenuMapper.java index fc46085..3d3c8ac 100644 --- a/src/main/java/com/ruoyi/project/system/mapper/SysMenuMapper.java +++ b/src/main/java/com/ruoyi/project/system/mapper/SysMenuMapper.java @@ -61,9 +61,10 @@ public interface SysMenuMapper * 根据角色ID查询菜单树信息 * * @param roleId 角色ID + * @param menuCheckStrictly 菜单树选择项是否关联显示 * @return 选中菜单列表 */ - public List selectMenuListByRoleId(Long roleId); + public List selectMenuListByRoleId(@Param("roleId") Long roleId, @Param("menuCheckStrictly") boolean menuCheckStrictly); /** * 根据菜单ID查询信息 diff --git a/src/main/java/com/ruoyi/project/system/service/impl/SysDeptServiceImpl.java b/src/main/java/com/ruoyi/project/system/service/impl/SysDeptServiceImpl.java index 6acea9e..6dee354 100644 --- a/src/main/java/com/ruoyi/project/system/service/impl/SysDeptServiceImpl.java +++ b/src/main/java/com/ruoyi/project/system/service/impl/SysDeptServiceImpl.java @@ -12,7 +12,9 @@ import com.ruoyi.common.utils.StringUtils; import com.ruoyi.framework.aspectj.lang.annotation.DataScope; import com.ruoyi.framework.web.domain.TreeSelect; import com.ruoyi.project.system.domain.SysDept; +import com.ruoyi.project.system.domain.SysRole; import com.ruoyi.project.system.mapper.SysDeptMapper; +import com.ruoyi.project.system.mapper.SysRoleMapper; import com.ruoyi.project.system.service.ISysDeptService; /** @@ -25,6 +27,9 @@ public class SysDeptServiceImpl implements ISysDeptService { @Autowired private SysDeptMapper deptMapper; + + @Autowired + private SysRoleMapper roleMapper; /** * 查询部门管理数据 @@ -93,7 +98,8 @@ public class SysDeptServiceImpl implements ISysDeptService @Override public List selectDeptListByRoleId(Long roleId) { - return deptMapper.selectDeptListByRoleId(roleId); + SysRole role = roleMapper.selectRoleById(roleId); + return deptMapper.selectDeptListByRoleId(roleId, role.isDeptCheckStrictly()); } /** diff --git a/src/main/java/com/ruoyi/project/system/service/impl/SysMenuServiceImpl.java b/src/main/java/com/ruoyi/project/system/service/impl/SysMenuServiceImpl.java index fb1c830..b473b44 100644 --- a/src/main/java/com/ruoyi/project/system/service/impl/SysMenuServiceImpl.java +++ b/src/main/java/com/ruoyi/project/system/service/impl/SysMenuServiceImpl.java @@ -15,10 +15,12 @@ import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.framework.web.domain.TreeSelect; import com.ruoyi.project.system.domain.SysMenu; +import com.ruoyi.project.system.domain.SysRole; import com.ruoyi.project.system.domain.SysUser; import com.ruoyi.project.system.domain.vo.MetaVo; import com.ruoyi.project.system.domain.vo.RouterVo; import com.ruoyi.project.system.mapper.SysMenuMapper; +import com.ruoyi.project.system.mapper.SysRoleMapper; import com.ruoyi.project.system.mapper.SysRoleMenuMapper; import com.ruoyi.project.system.service.ISysMenuService; @@ -34,6 +36,9 @@ public class SysMenuServiceImpl implements ISysMenuService @Autowired private SysMenuMapper menuMapper; + + @Autowired + private SysRoleMapper roleMapper; @Autowired private SysRoleMenuMapper roleMenuMapper; @@ -124,7 +129,8 @@ public class SysMenuServiceImpl implements ISysMenuService @Override public List selectMenuListByRoleId(Long roleId) { - return menuMapper.selectMenuListByRoleId(roleId); + SysRole role = roleMapper.selectRoleById(roleId); + return menuMapper.selectMenuListByRoleId(roleId, role.isMenuCheckStrictly()); } /** diff --git a/src/main/resources/mybatis/system/SysDeptMapper.xml b/src/main/resources/mybatis/system/SysDeptMapper.xml index 8d840b0..a32ea58 100644 --- a/src/main/resources/mybatis/system/SysDeptMapper.xml +++ b/src/main/resources/mybatis/system/SysDeptMapper.xml @@ -44,12 +44,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" order by d.parent_id, d.order_num - + select d.dept_id from sys_dept d left join sys_role_dept rd on d.dept_id = rd.dept_id where rd.role_id = #{roleId} - and d.dept_id not in (select d.parent_id from sys_dept d inner join sys_role_dept rd on d.dept_id = rd.dept_id and rd.role_id = #{roleId}) + + and d.dept_id not in (select d.parent_id from sys_dept d inner join sys_role_dept rd on d.dept_id = rd.dept_id and rd.role_id = #{roleId}) + order by d.parent_id, d.order_num diff --git a/src/main/resources/mybatis/system/SysMenuMapper.xml b/src/main/resources/mybatis/system/SysMenuMapper.xml index 75ad4bc..94b019f 100644 --- a/src/main/resources/mybatis/system/SysMenuMapper.xml +++ b/src/main/resources/mybatis/system/SysMenuMapper.xml @@ -82,12 +82,14 @@ order by m.parent_id, m.order_num - + select m.menu_id from sys_menu m left join sys_role_menu rm on m.menu_id = rm.menu_id where rm.role_id = #{roleId} - and m.menu_id not in (select m.parent_id from sys_menu m inner join sys_role_menu rm on m.menu_id = rm.menu_id and rm.role_id = #{roleId}) + + and m.menu_id not in (select m.parent_id from sys_menu m inner join sys_role_menu rm on m.menu_id = rm.menu_id and rm.role_id = #{roleId}) + order by m.parent_id, m.order_num diff --git a/src/main/resources/mybatis/system/SysRoleMapper.xml b/src/main/resources/mybatis/system/SysRoleMapper.xml index 9d16041..52c549e 100644 --- a/src/main/resources/mybatis/system/SysRoleMapper.xml +++ b/src/main/resources/mybatis/system/SysRoleMapper.xml @@ -5,22 +5,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - - - - - - - - - - - + + + + + + + + + + + + + + - select distinct r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, + select distinct r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.menu_check_strictly, r.dept_check_strictly, r.status, r.del_flag, r.create_time, r.remark from sys_role r left join sys_user_role ur on ur.role_id = r.role_id @@ -98,6 +100,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" role_key, role_sort, data_scope, + menu_check_strictly, + dept_check_strictly, status, remark, create_by, @@ -108,6 +112,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{roleKey}, #{roleSort}, #{dataScope}, + #{menu_check_strictly}, + #{dept_check_strictly}, #{status}, #{remark}, #{createBy}, @@ -122,6 +128,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" role_key = #{roleKey}, role_sort = #{roleSort}, data_scope = #{dataScope}, + menu_check_strictly = #{menuCheckStrictly}, + dept_check_strictly = #{deptCheckStrictly}, status = #{status}, remark = #{remark}, update_by = #{updateBy},