zhanghua
2022-10-28 3eb801e80941304a3174d1b90a8d161b41eb3d67
动态菜单权限
6个文件已修改
82 ■■■■ 已修改文件
ycl-common/src/main/java/com/ycl/entity/user/UmsMenu.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/com/ycl/service/user/UmsMenuService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/com/ycl/service/user/UmsRoleService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/com/ycl/service/user/impl/UmsMenuServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/com/ycl/service/user/impl/UmsRoleServiceImpl.java 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/resources/mapper/user/UmsMenuMapper.xml 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/com/ycl/entity/user/UmsMenu.java
@@ -38,6 +38,9 @@
    @ApiModelProperty(value = "菜单名称")
    private String title;
    @ApiModelProperty(value = "url路由")
    private String url;
    @ApiModelProperty(value = "菜单级数")
    private Integer level;
ycl-common/src/main/java/com/ycl/service/user/UmsMenuService.java
@@ -43,4 +43,6 @@
    List<UmsMenuVo> ListTreeMyself(Long id);
    String getPermission(Long userId);
    UmsMenuNode covertMenuNode(UmsMenu menu, List<UmsMenu> menuList);
}
ycl-common/src/main/java/com/ycl/service/user/UmsRoleService.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ycl.dto.UmsMenuNode;
import com.ycl.entity.user.UmsMenu;
import com.ycl.entity.user.UmsResource;
import com.ycl.entity.user.UmsRole;
@@ -32,7 +33,7 @@
    /**
     * 根据管理员ID获取对应菜单
     */
    List<UmsMenu> getMenuList(Long adminId);
    List<UmsMenuNode> getMenuList(Long adminId);
    /**
     * 获取角色相关菜单
ycl-common/src/main/java/com/ycl/service/user/impl/UmsMenuServiceImpl.java
@@ -129,7 +129,8 @@
    /**
     * 将UmsMenu转化为UmsMenuNode并设置children属性
     */
    private UmsMenuNode covertMenuNode(UmsMenu menu, List<UmsMenu> menuList) {
    @Override
    public UmsMenuNode covertMenuNode(UmsMenu menu, List<UmsMenu> menuList) {
        UmsMenuNode node = new UmsMenuNode();
        BeanUtils.copyProperties(menu, node);
        List<UmsMenuNode> children = menuList.stream()
ycl-common/src/main/java/com/ycl/service/user/impl/UmsRoleServiceImpl.java
@@ -5,16 +5,15 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.dto.UmsMenuNode;
import com.ycl.entity.dict.DataDictionary;
import com.ycl.entity.user.*;
import com.ycl.mapper.dict.DataDictionaryMapper;
import com.ycl.mapper.user.UmsMenuMapper;
import com.ycl.mapper.user.UmsResourceMapper;
import com.ycl.mapper.user.UmsRoleMapper;
import com.ycl.service.user.UmsAdminCacheService;
import com.ycl.service.user.UmsRoleMenuRelationService;
import com.ycl.service.user.UmsRoleResourceRelationService;
import com.ycl.service.user.UmsRoleService;
import com.ycl.service.user.*;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -36,6 +35,13 @@
    private UmsRoleMenuRelationService roleMenuRelationService;
    @Autowired
    private UmsRoleResourceRelationService roleResourceRelationService;
    private UmsMenuService umsMenuService;
    @Autowired
    public void setUmsMenuService(UmsMenuService umsMenuService) {
        this.umsMenuService = umsMenuService;
    }
    @Resource
    private UmsMenuMapper umsMenuMapper;
    @Resource
@@ -83,10 +89,15 @@
    }
    @Override
    public List<UmsMenu> getMenuList(Long adminId) {
        return umsMenuMapper.getMenuList(adminId);
    public List<UmsMenuNode> getMenuList(Long adminId) {
        List<UmsMenu> menuList = umsMenuMapper.getMenuList(adminId);
        List<UmsMenuNode> result = menuList.stream()
                .filter(menu -> menu.getParentId().equals(0L))
                .map(menu -> umsMenuService.covertMenuNode(menu, menuList)).collect(Collectors.toList());
        return result;
    }
    @Override
    public List<UmsMenu> listMenu(Long roleId) {
        return umsMenuMapper.getMenuListByRoleId(roleId);
ycl-common/src/main/resources/mapper/user/UmsMenuMapper.xml
@@ -16,30 +16,26 @@
    </resultMap>
    <select id="getMenuList" resultType="com.ycl.entity.user.UmsMenu">
        SELECT
            m.id id,
        SELECT distinct m.id,
            m.parent_id parentId,
            m.create_time createTime,
            m.title title,
            m.level level,
            m.sort sort,
            m.name name,
            m.icon icon,
            m.hidden hidden
        FROM
            ums_admin_role_relation arr
               m.title,
               m.url,
               m.level,
               m.sort,
               m.name,
               m.icon,
               m.hidden
        FROM ums_admin_role_relation arr
                LEFT JOIN ums_role r ON arr.role_id = r.id
                LEFT JOIN ums_role_menu_relation rmr ON r.id = rmr.role_id
                LEFT JOIN ums_menu m ON rmr.menu_id = m.id
        WHERE
            arr.admin_id = #{adminId}
        WHERE arr.admin_id = #{adminId}
          AND m.id IS NOT NULL
        GROUP BY
            m.id
        Order BY m.`level`, m.sort
    </select>
    <select id="getMenuListByRoleId" resultType="com.ycl.entity.user.UmsMenu">
        SELECT
            m.id id,
        SELECT m.id          id,
            m.parent_id parentId,
            m.create_time createTime,
            m.title title,
@@ -48,19 +44,15 @@
            m.name name,
            m.icon icon,
            m.hidden hidden
        FROM
            ums_role_menu_relation rmr
                LEFT JOIN ums_menu m ON rmr.menu_id = m.id
        WHERE
            rmr.role_id = #{roleId}
        FROM ums_role_menu_relation rmr
                 LEFT JOIN ums_menu m ON rmr.menu_id = m.id and m.leaf = 1
        WHERE rmr.role_id = #{roleId}
          AND m.id IS NOT NULL
        GROUP BY
            m.id
        GROUP BY m.id
    </select>
    <select id="adminMenuRelation" resultType="com.ycl.entity.user.vo.UmsMenuVo">
        SELECT
            amr.id AS relationId,
        SELECT amr.id        AS relationId,
            amr.is_start AS isStart,
            amr.sort,
            m.id,
@@ -72,11 +64,9 @@
            m.create_time as createTime,
            m.hidden,
            m.icon
        FROM
            `ums_admin_menu_relation` AS amr
        FROM `ums_admin_menu_relation` AS amr
                JOIN ums_menu AS m ON amr.menu_id = m.id
        WHERE
            amr.admin_id = #{id}
        WHERE amr.admin_id = #{id}
    </select>
</mapper>