From a56704036837f6064417744a690acc2984df0a76 Mon Sep 17 00:00:00 2001
From: RuoYi <yzz_ivy@163.com>
Date: 星期六, 19 九月 2020 13:26:02 +0800
Subject: [PATCH] 菜单&数据权限新增(展开/折叠 全选/全不选 父子联动)
---
src/main/java/com/ruoyi/project/system/domain/SysRole.java | 26 ++++++++
src/main/java/com/ruoyi/project/system/mapper/SysMenuMapper.java | 3
src/main/java/com/ruoyi/project/system/service/impl/SysMenuServiceImpl.java | 8 ++
src/main/java/com/ruoyi/project/system/service/impl/SysDeptServiceImpl.java | 8 ++
sql/ry_20200919.sql | 30 +++++----
src/main/java/com/ruoyi/project/system/mapper/SysDeptMapper.java | 3
src/main/resources/mybatis/system/SysMenuMapper.xml | 8 +-
src/main/resources/mybatis/system/SysRoleMapper.xml | 34 +++++++----
src/main/resources/mybatis/system/SysDeptMapper.xml | 8 +-
9 files changed, 91 insertions(+), 37 deletions(-)
diff --git a/sql/ry_20200901.sql b/sql/ry_20200919.sql
similarity index 96%
rename from sql/ry_20200901.sql
rename to sql/ry_20200919.sql
index 3a9be71..5dc972e 100644
--- a/sql/ry_20200901.sql
+++ b/sql/ry_20200919.sql
@@ -102,26 +102,28 @@
-- ----------------------------
drop table if exists sys_role;
create table sys_role (
- role_id bigint(20) not null auto_increment comment '瑙掕壊ID',
- role_name varchar(30) not null comment '瑙掕壊鍚嶇О',
- role_key varchar(100) not null comment '瑙掕壊鏉冮檺瀛楃涓�',
- role_sort int(4) not null comment '鏄剧ず椤哄簭',
- data_scope char(1) default '1' comment '鏁版嵁鑼冨洿锛�1锛氬叏閮ㄦ暟鎹潈闄� 2锛氳嚜瀹氭暟鎹潈闄� 3锛氭湰閮ㄩ棬鏁版嵁鏉冮檺 4锛氭湰閮ㄩ棬鍙婁互涓嬫暟鎹潈闄愶級',
- status char(1) not null comment '瑙掕壊鐘舵�侊紙0姝e父 1鍋滅敤锛�',
- del_flag char(1) default '0' comment '鍒犻櫎鏍囧織锛�0浠h〃瀛樺湪 2浠h〃鍒犻櫎锛�',
- create_by varchar(64) default '' comment '鍒涘缓鑰�',
- create_time datetime comment '鍒涘缓鏃堕棿',
- update_by varchar(64) default '' comment '鏇存柊鑰�',
- update_time datetime comment '鏇存柊鏃堕棿',
- remark varchar(500) default null comment '澶囨敞',
+ role_id bigint(20) not null auto_increment comment '瑙掕壊ID',
+ role_name varchar(30) not null comment '瑙掕壊鍚嶇О',
+ role_key varchar(100) not null comment '瑙掕壊鏉冮檺瀛楃涓�',
+ role_sort int(4) not null comment '鏄剧ず椤哄簭',
+ data_scope char(1) default '1' comment '鏁版嵁鑼冨洿锛�1锛氬叏閮ㄦ暟鎹潈闄� 2锛氳嚜瀹氭暟鎹潈闄� 3锛氭湰閮ㄩ棬鏁版嵁鏉冮檺 4锛氭湰閮ㄩ棬鍙婁互涓嬫暟鎹潈闄愶級',
+ menu_check_strictly tinyint(1) default 1 comment '鑿滃崟鏍戦�夋嫨椤规槸鍚﹀叧鑱旀樉绀�',
+ dept_check_strictly tinyint(1) default 1 comment '閮ㄩ棬鏍戦�夋嫨椤规槸鍚﹀叧鑱旀樉绀�',
+ status char(1) not null comment '瑙掕壊鐘舵�侊紙0姝e父 1鍋滅敤锛�',
+ del_flag char(1) default '0' comment '鍒犻櫎鏍囧織锛�0浠h〃瀛樺湪 2浠h〃鍒犻櫎锛�',
+ create_by varchar(64) default '' comment '鍒涘缓鑰�',
+ create_time datetime comment '鍒涘缓鏃堕棿',
+ update_by varchar(64) default '' comment '鏇存柊鑰�',
+ update_time datetime comment '鏇存柊鏃堕棿',
+ remark varchar(500) default null comment '澶囨敞',
primary key (role_id)
) engine=innodb auto_increment=100 comment = '瑙掕壊淇℃伅琛�';
-- ----------------------------
-- 鍒濆鍖�-瑙掕壊淇℃伅琛ㄦ暟鎹�
-- ----------------------------
-insert into sys_role values('1', '瓒呯骇绠$悊鍛�', 'admin', 1, 1, '0', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '瓒呯骇绠$悊鍛�');
-insert into sys_role values('2', '鏅�氳鑹�', 'common', 2, 2, '0', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '鏅�氳鑹�');
+insert into sys_role values('1', '瓒呯骇绠$悊鍛�', 'admin', 1, 1, 1, 1, '0', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '瓒呯骇绠$悊鍛�');
+insert into sys_role values('2', '鏅�氳鑹�', 'common', 2, 2, 1, 1, '0', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '鏅�氳鑹�');
-- ----------------------------
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..3c0407a 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 @@
@Excel(name = "鏁版嵁鑼冨洿", readConverterExp = "1=鎵�鏈夋暟鎹潈闄�,2=鑷畾涔夋暟鎹潈闄�,3=鏈儴闂ㄦ暟鎹潈闄�,4=鏈儴闂ㄥ強浠ヤ笅鏁版嵁鏉冮檺")
private String dataScope;
+ /** 鑿滃崟鏍戦�夋嫨椤规槸鍚﹀叧鑱旀樉绀猴紙0锛氱埗瀛愪簰鐩稿叧鑱旀樉绀� 1锛氱埗瀛愪笉浜掔浉鍏宠仈鏄剧ず锛� */
+ private boolean menuCheckStrictly;
+
+ /** 閮ㄩ棬鏍戦�夋嫨椤规槸鍚﹀叧鑱旀樉绀猴紙0锛氱埗瀛愪簰鐩稿叧鑱旀樉绀� 1锛氱埗瀛愪笉浜掔浉鍏宠仈鏄剧ず锛� */
+ private boolean deptCheckStrictly;
+
/** 瑙掕壊鐘舵�侊紙0姝e父 1鍋滅敤锛� */
@Excel(name = "瑙掕壊鐘舵��", readConverterExp = "0=姝e父,1=鍋滅敤")
private String status;
@@ -128,6 +134,26 @@
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;
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 @@
* 鏍规嵁瑙掕壊ID鏌ヨ閮ㄩ棬鏍戜俊鎭�
*
* @param roleId 瑙掕壊ID
+ * @param deptCheckStrictly 閮ㄩ棬鏍戦�夋嫨椤规槸鍚﹀叧鑱旀樉绀�
* @return 閫変腑閮ㄩ棬鍒楄〃
*/
- public List<Integer> selectDeptListByRoleId(Long roleId);
+ public List<Integer> 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 @@
* 鏍规嵁瑙掕壊ID鏌ヨ鑿滃崟鏍戜俊鎭�
*
* @param roleId 瑙掕壊ID
+ * @param menuCheckStrictly 鑿滃崟鏍戦�夋嫨椤规槸鍚﹀叧鑱旀樉绀�
* @return 閫変腑鑿滃崟鍒楄〃
*/
- public List<Integer> selectMenuListByRoleId(Long roleId);
+ public List<Integer> 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.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 @@
{
@Autowired
private SysDeptMapper deptMapper;
+
+ @Autowired
+ private SysRoleMapper roleMapper;
/**
* 鏌ヨ閮ㄩ棬绠$悊鏁版嵁
@@ -93,7 +98,8 @@
@Override
public List<Integer> 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.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 @@
@Autowired
private SysMenuMapper menuMapper;
+
+ @Autowired
+ private SysRoleMapper roleMapper;
@Autowired
private SysRoleMenuMapper roleMenuMapper;
@@ -124,7 +129,8 @@
@Override
public List<Integer> 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 28f5afe..18f52a0 100644
--- a/src/main/resources/mybatis/system/SysDeptMapper.xml
+++ b/src/main/resources/mybatis/system/SysDeptMapper.xml
@@ -44,12 +44,14 @@
order by d.parent_id, d.order_num
</select>
- <select id="selectDeptListByRoleId" parameterType="Long" resultType="Integer">
- select d.dept_id, d.parent_id
+ <select id="selectDeptListByRoleId" resultType="Integer">
+ 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})
+ <if test="deptCheckStrictly">
+ 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})
+ </if>
order by d.parent_id, d.order_num
</select>
diff --git a/src/main/resources/mybatis/system/SysMenuMapper.xml b/src/main/resources/mybatis/system/SysMenuMapper.xml
index 72522f8..e37f063 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>
- <select id="selectMenuListByRoleId" parameterType="Long" resultType="Integer">
- select m.menu_id, m.parent_id
+ <select id="selectMenuListByRoleId" resultType="Integer">
+ 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})
+ <if test="menuCheckStrictly">
+ 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})
+ </if>
order by m.parent_id, m.order_num
</select>
diff --git a/src/main/resources/mybatis/system/SysRoleMapper.xml b/src/main/resources/mybatis/system/SysRoleMapper.xml
index fc9d42e..f99d881 100644
--- a/src/main/resources/mybatis/system/SysRoleMapper.xml
+++ b/src/main/resources/mybatis/system/SysRoleMapper.xml
@@ -5,22 +5,24 @@
<mapper namespace="com.ruoyi.project.system.mapper.SysRoleMapper">
<resultMap type="SysRole" id="SysRoleResult">
- <id property="roleId" column="role_id" />
- <result property="roleName" column="role_name" />
- <result property="roleKey" column="role_key" />
- <result property="roleSort" column="role_sort" />
- <result property="dataScope" column="data_scope" />
- <result property="status" column="status" />
- <result property="delFlag" column="del_flag" />
- <result property="createBy" column="create_by" />
- <result property="createTime" column="create_time" />
- <result property="updateBy" column="update_by" />
- <result property="updateTime" column="update_time" />
- <result property="remark" column="remark" />
+ <id property="roleId" column="role_id" />
+ <result property="roleName" column="role_name" />
+ <result property="roleKey" column="role_key" />
+ <result property="roleSort" column="role_sort" />
+ <result property="dataScope" column="data_scope" />
+ <result property="menuCheckStrictly" column="menu_check_strictly" />
+ <result property="deptCheckStrictly" column="dept_check_strictly" />
+ <result property="status" column="status" />
+ <result property="delFlag" column="del_flag" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ <result property="remark" column="remark" />
</resultMap>
<sql id="selectRoleVo">
- 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
@@ -95,6 +97,8 @@
<if test="roleKey != null and roleKey != ''">role_key,</if>
<if test="roleSort != null and roleSort != ''">role_sort,</if>
<if test="dataScope != null and dataScope != ''">data_scope,</if>
+ <if test="menuCheckStrictly != null and menuCheckStrictly != ''">menu_check_strictly,</if>
+ <if test="deptCheckStrictly != null and deptCheckStrictly != ''">dept_check_strictly,</if>
<if test="status != null and status != ''">status,</if>
<if test="remark != null and remark != ''">remark,</if>
<if test="createBy != null and createBy != ''">create_by,</if>
@@ -105,6 +109,8 @@
<if test="roleKey != null and roleKey != ''">#{roleKey},</if>
<if test="roleSort != null and roleSort != ''">#{roleSort},</if>
<if test="dataScope != null and dataScope != ''">#{dataScope},</if>
+ <if test="menuCheckStrictly != null">#{menu_check_strictly},</if>
+ <if test="deptCheckStrictly != null">#{dept_check_strictly},</if>
<if test="status != null and status != ''">#{status},</if>
<if test="remark != null and remark != ''">#{remark},</if>
<if test="createBy != null and createBy != ''">#{createBy},</if>
@@ -119,6 +125,8 @@
<if test="roleKey != null and roleKey != ''">role_key = #{roleKey},</if>
<if test="roleSort != null and roleSort != ''">role_sort = #{roleSort},</if>
<if test="dataScope != null and dataScope != ''">data_scope = #{dataScope},</if>
+ <if test="menuCheckStrictly != null">menu_check_strictly = #{menuCheckStrictly},</if>
+ <if test="deptCheckStrictly != null">dept_check_strictly = #{deptCheckStrictly},</if>
<if test="status != null and status != ''">status = #{status},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
--
Gitblit v1.9.3