diff --git a/spzx-manager/src/main/java/com/atguigu/spzx/manger/mapper/SysMenuMapper.java b/spzx-manager/src/main/java/com/atguigu/spzx/manger/mapper/SysMenuMapper.java index e44fdaf..16e76ea 100644 --- a/spzx-manager/src/main/java/com/atguigu/spzx/manger/mapper/SysMenuMapper.java +++ b/spzx-manager/src/main/java/com/atguigu/spzx/manger/mapper/SysMenuMapper.java @@ -50,4 +50,12 @@ public interface SysMenuMapper { * @return 菜单列表 */ List selectListByUserId(Long userId); + + /** + * 根据父级ID查询菜单 + * + * @param id 父级ID + * @return 系统菜单实体类 + */ + SysMenu selectParentMenu(Long id); } diff --git a/spzx-manager/src/main/java/com/atguigu/spzx/manger/mapper/SysRoleMenuMapper.java b/spzx-manager/src/main/java/com/atguigu/spzx/manger/mapper/SysRoleMenuMapper.java index 9fb5940..018165b 100644 --- a/spzx-manager/src/main/java/com/atguigu/spzx/manger/mapper/SysRoleMenuMapper.java +++ b/spzx-manager/src/main/java/com/atguigu/spzx/manger/mapper/SysRoleMenuMapper.java @@ -12,4 +12,11 @@ public interface SysRoleMenuMapper { void doAssign(AssginMenuDto assginMenuDto); void deleteByRoleId(Long roleId); + + /** + * 将该id的菜单设置为半开 + * + * @param parentId 父级ID + */ + void updateSysRoleMenuIsHalf(Long parentId); } diff --git a/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/impl/SysMenuServiceImpl.java b/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/impl/SysMenuServiceImpl.java index 9d0ee0f..5a67cf6 100644 --- a/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/impl/SysMenuServiceImpl.java +++ b/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/impl/SysMenuServiceImpl.java @@ -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); } diff --git a/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/module/SysMenuServiceImplModule.java b/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/module/SysMenuServiceImplModule.java new file mode 100644 index 0000000..d30dd19 --- /dev/null +++ b/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/module/SysMenuServiceImplModule.java @@ -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); + } + } +} diff --git a/spzx-manager/src/main/resources/mapper/SysMenuMapper.xml b/spzx-manager/src/main/resources/mapper/SysMenuMapper.xml index 59a0f42..c1b5185 100644 --- a/spzx-manager/src/main/resources/mapper/SysMenuMapper.xml +++ b/spzx-manager/src/main/resources/mapper/SysMenuMapper.xml @@ -62,6 +62,18 @@ + + diff --git a/spzx-manager/src/main/resources/mapper/SysRoleMenuMapper.xml b/spzx-manager/src/main/resources/mapper/SysRoleMenuMapper.xml index 4ed45ec..e2037ff 100644 --- a/spzx-manager/src/main/resources/mapper/SysRoleMenuMapper.xml +++ b/spzx-manager/src/main/resources/mapper/SysRoleMenuMapper.xml @@ -2,6 +2,13 @@ + + + update sys_role_menu srm + set srm.is_half = 1 + where menu_id = #{parentId} + + delete from sys_role_menu @@ -15,13 +22,9 @@ and is_deleted = 0 and is_half = 0 - + - 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 (#{roleId} , #{menuInfo.id} , now() , now() , 0 , #{menuInfo.isHalf})