RuoYi
2020-09-19 a56704036837f6064417744a690acc2984df0a76
菜单&数据权限新增(展开/折叠 全选/全不选 父子联动)
已重命名1个文件
已修改8个文件
128 ■■■■ 文件已修改
sql/ry_20200919.sql 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/project/system/domain/SysRole.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/project/system/mapper/SysDeptMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/project/system/mapper/SysMenuMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/project/system/service/impl/SysDeptServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/project/system/service/impl/SysMenuServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mybatis/system/SysDeptMapper.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mybatis/system/SysMenuMapper.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mybatis/system/SysRoleMapper.xml 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sql/ry_20200919.sql
ÎļþÃû´Ó sql/ry_20200901.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正常 1停用)',
  del_flag          char(1)         default '0'                comment '删除标志(0代表存在 2代表删除)',
  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正常 1停用)',
  del_flag             char(1)         default '0'                comment '删除标志(0代表存在 2代表删除)',
  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', '普通角色');
-- ----------------------------
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正常 1停用) */
    @Excel(name = "角色状态", readConverterExp = "0=正常,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;
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查询信息
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查询信息
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());
    }
    /**
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());
    }
    /**
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>
    
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>
    
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>