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>