feat(新增): 动态菜单和bug解决
This commit is contained in:
parent
4b2141bb5a
commit
26eb9bd5fa
|
@ -50,4 +50,12 @@ public interface SysMenuMapper {
|
||||||
* @return 菜单列表
|
* @return 菜单列表
|
||||||
*/
|
*/
|
||||||
List<SysMenu> selectListByUserId(Long userId);
|
List<SysMenu> selectListByUserId(Long userId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据父级ID查询菜单
|
||||||
|
*
|
||||||
|
* @param id 父级ID
|
||||||
|
* @return 系统菜单实体类
|
||||||
|
*/
|
||||||
|
SysMenu selectParentMenu(Long id);
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,4 +12,11 @@ public interface SysRoleMenuMapper {
|
||||||
void doAssign(AssginMenuDto assginMenuDto);
|
void doAssign(AssginMenuDto assginMenuDto);
|
||||||
|
|
||||||
void deleteByRoleId(Long roleId);
|
void deleteByRoleId(Long roleId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将该id的菜单设置为半开
|
||||||
|
*
|
||||||
|
* @param parentId 父级ID
|
||||||
|
*/
|
||||||
|
void updateSysRoleMenuIsHalf(Long parentId);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ import com.atguigu.context.BaseContext;
|
||||||
import com.atguigu.exception.BunnyException;
|
import com.atguigu.exception.BunnyException;
|
||||||
import com.atguigu.spzx.manger.mapper.SysMenuMapper;
|
import com.atguigu.spzx.manger.mapper.SysMenuMapper;
|
||||||
import com.atguigu.spzx.manger.service.SysMenuService;
|
import com.atguigu.spzx.manger.service.SysMenuService;
|
||||||
|
import com.atguigu.spzx.manger.service.module.SysMenuServiceImplModule;
|
||||||
import com.atguigu.spzx.model.entity.system.SysMenu;
|
import com.atguigu.spzx.model.entity.system.SysMenu;
|
||||||
import com.atguigu.spzx.model.vo.system.SysMenuVo;
|
import com.atguigu.spzx.model.vo.system.SysMenuVo;
|
||||||
import com.atguigu.utils.MenuHelper;
|
import com.atguigu.utils.MenuHelper;
|
||||||
|
@ -20,6 +21,8 @@ public class SysMenuServiceImpl implements SysMenuService {
|
||||||
private SysMenuMapper sysMenuMapper;
|
private SysMenuMapper sysMenuMapper;
|
||||||
@Autowired
|
@Autowired
|
||||||
private StringEmptyUtil emptyUtil;
|
private StringEmptyUtil emptyUtil;
|
||||||
|
@Autowired
|
||||||
|
private SysMenuServiceImplModule sysMenuServiceImplModule;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询菜单
|
* 查询菜单
|
||||||
|
@ -39,6 +42,8 @@ public class SysMenuServiceImpl implements SysMenuService {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void save(SysMenu sysMenu) {
|
public void save(SysMenu sysMenu) {
|
||||||
|
// 如果添加子菜单,把父菜单isHalf改为半开状态1
|
||||||
|
sysMenuServiceImplModule.updateSysRoleMenu(sysMenu);
|
||||||
sysMenuMapper.insert(sysMenu);
|
sysMenuMapper.insert(sysMenu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
package com.atguigu.spzx.manger.service.module;
|
||||||
|
|
||||||
|
import com.atguigu.spzx.manger.mapper.SysMenuMapper;
|
||||||
|
import com.atguigu.spzx.manger.mapper.SysRoleMenuMapper;
|
||||||
|
import com.atguigu.spzx.manger.service.impl.SysMenuServiceImpl;
|
||||||
|
import com.atguigu.spzx.model.entity.system.SysMenu;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class SysMenuServiceImplModule extends SysMenuServiceImpl {
|
||||||
|
@Autowired
|
||||||
|
private SysMenuMapper sysMenuMapper;
|
||||||
|
@Autowired
|
||||||
|
private SysRoleMenuMapper sysRoleMenuMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加子菜单,把父菜单半开状态改为1
|
||||||
|
*
|
||||||
|
* @param sysMenu 系统菜单实体类
|
||||||
|
*/
|
||||||
|
public void updateSysRoleMenu(SysMenu sysMenu) {
|
||||||
|
// 查询是否存在父节点
|
||||||
|
SysMenu parentMenu = sysMenuMapper.selectParentMenu(sysMenu.getParentId());
|
||||||
|
if (parentMenu != null) {
|
||||||
|
// 将该id的菜单设置为半开
|
||||||
|
sysRoleMenuMapper.updateSysRoleMenuIsHalf(parentMenu.getParentId());
|
||||||
|
// 递归调用
|
||||||
|
updateSysRoleMenu(parentMenu);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -62,6 +62,18 @@
|
||||||
|
|
||||||
<!-- 根据用户ID查找 -->
|
<!-- 根据用户ID查找 -->
|
||||||
<select id="selectListByUserId" resultType="com.atguigu.spzx.model.entity.system.SysMenu">
|
<select id="selectListByUserId" resultType="com.atguigu.spzx.model.entity.system.SysMenu">
|
||||||
|
SELECT distinct sm.*
|
||||||
|
FROM sys_menu sm
|
||||||
|
INNER JOIN sys_role_menu srm ON sm.id = srm.menu_id
|
||||||
|
INNER JOIN sys_user_role sur ON srm.role_id = sur.role_id
|
||||||
|
AND sur.user_id = #{userId}
|
||||||
|
WHERE sm.is_deleted = 0
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<!-- 根据父级ID查询菜单 -->
|
||||||
|
<select id="selectParentMenu" resultType="com.atguigu.spzx.model.entity.system.SysMenu">
|
||||||
|
select
|
||||||
|
<include refid="columns"/>
|
||||||
|
from sys_menu where id = #{id}
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
@ -2,6 +2,13 @@
|
||||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||||
<mapper namespace="com.atguigu.spzx.manger.mapper.SysRoleMenuMapper">
|
<mapper namespace="com.atguigu.spzx.manger.mapper.SysRoleMenuMapper">
|
||||||
|
|
||||||
|
<!-- 将该id的菜单设置为半开 -->
|
||||||
|
<update id="updateSysRoleMenuIsHalf">
|
||||||
|
update sys_role_menu srm
|
||||||
|
set srm.is_half = 1
|
||||||
|
where menu_id = #{parentId}
|
||||||
|
</update>
|
||||||
|
|
||||||
<delete id="deleteByRoleId">
|
<delete id="deleteByRoleId">
|
||||||
delete
|
delete
|
||||||
from sys_role_menu
|
from sys_role_menu
|
||||||
|
@ -17,11 +24,7 @@
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<insert id="doAssign">
|
<insert id="doAssign">
|
||||||
insert into sys_role_menu (
|
insert into sys_role_menu ( role_id, menu_id, create_time , update_time , is_deleted , is_half ) values
|
||||||
role_id,
|
|
||||||
menu_id,
|
|
||||||
create_time , update_time , is_deleted , is_half
|
|
||||||
) values
|
|
||||||
<foreach collection="menuIdList" item="menuInfo" separator=",">
|
<foreach collection="menuIdList" item="menuInfo" separator=",">
|
||||||
(#{roleId} , #{menuInfo.id} , now() , now() , 0 , #{menuInfo.isHalf})
|
(#{roleId} , #{menuInfo.id} , now() , now() , 0 , #{menuInfo.isHalf})
|
||||||
</foreach>
|
</foreach>
|
||||||
|
|
Loading…
Reference in New Issue