Explorar o código

删除菜单的时候,将菜单和角色的关系表也删除

lipf hai 4 meses
pai
achega
f822548442

+ 1 - 1
platform/src/main/java/com/jzg/controller/SysMenuController.java

@@ -49,7 +49,7 @@ public class SysMenuController extends BaseController {
     @DeleteMapping(value = "/delete/{id}")
     public HttpResult<Boolean> delete(@PathVariable("id") String id) {
         log.info("菜单删除:id=[{}]",id);
-        return HttpResult.ok(sysMenuService.removeById(id));
+        return HttpResult.ok(sysMenuService.deleteMenuById(id));
     }
 
 

+ 9 - 0
platform/src/main/java/com/jzg/mapper/SysRolePermsMapper.java

@@ -18,4 +18,13 @@ public interface SysRolePermsMapper extends BaseMapper<SysRolePerms> {
     List<SysRolePerms> getByRoleId(@Param("id") String id);
 
     List<SysRolePerms> getByRoleIdNew(@Param("roleId") String roleId);
+
+    /**
+     * 根据菜单序号删除菜单和角色的对应关系
+     *
+     * @param menuId 菜单序号
+     * @author lipf
+     * @date 2026/5/11 16:39
+     */
+    void deleteByMenuId(String menuId);
 }

+ 8 - 0
platform/src/main/java/com/jzg/service/SysMenuService.java

@@ -49,6 +49,14 @@ public interface SysMenuService extends IService<SysMenu> {
      * @return
      */
     List<SysCommonFunctionDto> getCommonFunction(String systemCode, String userId);
+
+    /**
+     * 删除菜单
+     *
+     * @author lipf
+     * @date 2026/5/11 16:34
+     */
+    boolean deleteMenuById(String menuId);
 }
 
 

+ 20 - 0
platform/src/main/java/com/jzg/service/impl/SysMenuServiceImpl.java

@@ -12,6 +12,7 @@ import com.jzg.commons.entity.po.SysUserRole;
 import com.jzg.commons.entity.vo.SystemMenuVo;
 import com.jzg.commons.util.idgen.IdGenerate;
 import com.jzg.mapper.SysMenuMapper;
+import com.jzg.mapper.SysRolePermsMapper;
 import com.jzg.mapper.SysSystemMenuMapper;
 import com.jzg.mapper.SysUserRoleMapper;
 import com.jzg.service.SysMenuService;
@@ -44,6 +45,8 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
 
     private final BaseController baseController;
 
+    private final SysRolePermsMapper sysRolePermsMapper;
+
 
     /**
      * 查询菜单的树形结构(基于租户的)
@@ -188,6 +191,8 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
         }
         List<SysMenu> menuByRoleId = sysMenuMapper.getMenuByRoleId(roleIds);
         List<SysMenu> distinctMenuList = menuByRoleId.stream()
+                // modify by lipf, 2026年5月11日16:32:31 提高代码健壮性
+                .filter(action-> action.getId() != null)
                 .collect(Collectors.toMap(
                         SysMenu::getId,
                         Function.identity(),
@@ -254,6 +259,21 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu>
     public List<SysCommonFunctionDto> getCommonFunction(String systemCode, String userId) {
         return this.baseMapper.getCommonFunction(systemCode, userId);
     }
+
+    /**
+     * 删除菜单
+     *  删除菜单的时候,将菜单和角色的对应关系也删除
+     *
+     * @param menuId 菜单序号
+     * @author lipf
+     * @date 2026/5/11 16:34
+     */
+    @Override
+    public boolean deleteMenuById(String menuId) {
+        log.info("根据序号删除对应的菜单信息:menuId=[{}]", menuId);
+        sysRolePermsMapper.deleteByMenuId(menuId);
+        return this.removeById(menuId);
+    }
 }
 
 

+ 5 - 0
platform/src/main/resources/mapper/SysRolePermsMapper.xml

@@ -2,6 +2,11 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.jzg.mapper.SysRolePermsMapper">
 
+    <!--根据菜单序号删除菜单和角色的对应关系 2026年5月11日16:41:08 lipf -->
+    <delete id="deleteByMenuId">
+        delete  from sys_role_perms srp where srp.perms_id = #{menuId}
+    </delete>
+
     <select id="getByRoleId" resultType="com.jzg.commons.entity.po.SysRolePerms">
         select id, role_id as roleId, perms_id as permsId, perms
         from sys_role_perms