feat(新增): 动态菜单和bug解决
This commit is contained in:
parent
4b2141bb5a
commit
26eb9bd5fa
|
@ -50,4 +50,12 @@ public interface SysMenuMapper {
|
|||
* @return 菜单列表
|
||||
*/
|
||||
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 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.spzx.manger.mapper.SysMenuMapper;
|
||||
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.vo.system.SysMenuVo;
|
||||
import com.atguigu.utils.MenuHelper;
|
||||
|
@ -20,6 +21,8 @@ public class SysMenuServiceImpl implements SysMenuService {
|
|||
private SysMenuMapper sysMenuMapper;
|
||||
@Autowired
|
||||
private StringEmptyUtil emptyUtil;
|
||||
@Autowired
|
||||
private SysMenuServiceImplModule sysMenuServiceImplModule;
|
||||
|
||||
/**
|
||||
* 查询菜单
|
||||
|
@ -39,6 +42,8 @@ public class SysMenuServiceImpl implements SysMenuService {
|
|||
*/
|
||||
@Override
|
||||
public void save(SysMenu sysMenu) {
|
||||
// 如果添加子菜单,把父菜单isHalf改为半开状态1
|
||||
sysMenuServiceImplModule.updateSysRoleMenu(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查找 -->
|
||||
<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>
|
||||
</mapper>
|
||||
|
|
|
@ -2,6 +2,13 @@
|
|||
<!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">
|
||||
|
||||
<!-- 将该id的菜单设置为半开 -->
|
||||
<update id="updateSysRoleMenuIsHalf">
|
||||
update sys_role_menu srm
|
||||
set srm.is_half = 1
|
||||
where menu_id = #{parentId}
|
||||
</update>
|
||||
|
||||
<delete id="deleteByRoleId">
|
||||
delete
|
||||
from sys_role_menu
|
||||
|
@ -17,11 +24,7 @@
|
|||
</select>
|
||||
|
||||
<insert id="doAssign">
|
||||
insert into sys_role_menu (
|
||||
role_id,
|
||||
menu_id,
|
||||
create_time , update_time , is_deleted , is_half
|
||||
) values
|
||||
insert into sys_role_menu ( role_id, menu_id, create_time , update_time , is_deleted , is_half ) values
|
||||
<foreach collection="menuIdList" item="menuInfo" separator=",">
|
||||
(#{roleId} , #{menuInfo.id} , now() , now() , 0 , #{menuInfo.isHalf})
|
||||
</foreach>
|
||||
|
|
Loading…
Reference in New Issue