fix: 菜单列表按钮权限标识不显示问题

This commit is contained in:
horizons
2022-10-25 01:14:20 +08:00
parent 9f5b325e28
commit c38393c8d3
3 changed files with 33 additions and 15 deletions

View File

@@ -18,6 +18,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -62,6 +63,7 @@ public class SysUserController {
@ApiOperation(value = "新增用户") @ApiOperation(value = "新增用户")
@PostMapping @PostMapping
@PreAuthorize("hasAuthority('sys:user:add')")
public Result saveUser( public Result saveUser(
@RequestBody @Valid UserForm userForm @RequestBody @Valid UserForm userForm
) { ) {
@@ -71,6 +73,7 @@ public class SysUserController {
@ApiOperation(value = "修改用户") @ApiOperation(value = "修改用户")
@PutMapping(value = "/{userId}") @PutMapping(value = "/{userId}")
@PreAuthorize("hasAuthority('sys:user:edit')")
public Result updateUser( public Result updateUser(
@ApiParam("用户ID") @PathVariable Long userId, @ApiParam("用户ID") @PathVariable Long userId,
@RequestBody @Validated UserForm userForm) { @RequestBody @Validated UserForm userForm) {
@@ -80,6 +83,7 @@ public class SysUserController {
@ApiOperation(value = "删除用户") @ApiOperation(value = "删除用户")
@DeleteMapping("/{ids}") @DeleteMapping("/{ids}")
@PreAuthorize("hasAuthority('sys:user:delete')")
public Result deleteUsers( public Result deleteUsers(
@ApiParam("用户ID多个以英文逗号(,)分割") @PathVariable String ids @ApiParam("用户ID多个以英文逗号(,)分割") @PathVariable String ids
) { ) {

View File

@@ -35,6 +35,9 @@ public class MenuVO {
@ApiModelProperty("菜单类型") @ApiModelProperty("菜单类型")
private MenuTypeEnum type; private MenuTypeEnum type;
@ApiModelProperty("按钮权限标识")
private String perm;
@JsonInclude(value = JsonInclude.Include.NON_NULL) @JsonInclude(value = JsonInclude.Include.NON_NULL)
private List<MenuVO> children; private List<MenuVO> children;

View File

@@ -50,16 +50,16 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
Set<Long> cacheMenuIds = menus.stream().map(menu -> menu.getId()).collect(Collectors.toSet()); Set<Long> cacheMenuIds = menus.stream().map(menu -> menu.getId()).collect(Collectors.toSet());
List<MenuVO> tableMenus = menus.stream().map(menu -> { List<MenuVO> list = menus.stream().map(menu -> {
Long parentId = menu.getParentId(); Long parentId = menu.getParentId();
// parentId不在当前菜单ID的列表说明为顶级菜单ID根据此ID作为递归的开始条件节点 // parentId不在当前菜单ID的列表说明为顶级菜单ID根据此ID作为递归的开始条件节点
if (!cacheMenuIds.contains(parentId)) { if (!cacheMenuIds.contains(parentId)) {
cacheMenuIds.add(parentId); cacheMenuIds.add(parentId);
return recurTableMenus(parentId, menus); return recurMenus(parentId, menus);
} }
return new LinkedList<MenuVO>(); return new LinkedList<MenuVO>();
}).collect(ArrayList::new, ArrayList::addAll, ArrayList::addAll); }).collect(ArrayList::new, ArrayList::addAll, ArrayList::addAll);
return tableMenus; return list;
} }
@@ -91,7 +91,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
@Override @Override
public List<Option> listMenuOptions() { public List<Option> listMenuOptions() {
List<SysMenu> menuList = this.list(new LambdaQueryWrapper<SysMenu>().orderByAsc(SysMenu::getSort)); List<SysMenu> menuList = this.list(new LambdaQueryWrapper<SysMenu>().orderByAsc(SysMenu::getSort));
List<Option> menus = recurMenus(SystemConstants.ROOT_NODE_ID, menuList); List<Option> menus = recurMenuOptions(SystemConstants.ROOT_NODE_ID, menuList);
return menus; return menus;
} }
@@ -182,28 +182,31 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
@Override @Override
public Set<String> listRolePerms(Set<String> roles) { public Set<String> listRolePerms(Set<String> roles) {
Set<String> perms= this.baseMapper.listRolePerms(roles); Set<String> perms = this.baseMapper.listRolePerms(roles);
return perms; return perms;
} }
/** /**
* 递归生成菜单表格层级列表 * 递归生成菜单列表
* *
* @param parentId 父级ID * @param parentId 父级ID
* @param menuList 菜单列表 * @param menuList 菜单列表
* @return * @return
*/ */
private List<MenuVO> recurTableMenus(Long parentId, List<SysMenu> menuList) { private List<MenuVO> recurMenus(Long parentId, List<SysMenu> menuList) {
List<MenuVO> tableMenus = Optional.ofNullable(menuList).orElse(new ArrayList<>()) if (CollectionUtil.isEmpty(menuList)) {
.stream() return Collections.EMPTY_LIST;
}
List<MenuVO> menus = menuList.stream()
.filter(menu -> menu.getParentId().equals(parentId)) .filter(menu -> menu.getParentId().equals(parentId))
.map(entity -> { .map(entity -> {
MenuVO menuVO = menuConverter.entity2VO(entity); MenuVO menuVO = menuConverter.entity2VO(entity);
List<MenuVO> children = recurTableMenus(entity.getId(), menuList); List<MenuVO> children = recurMenus(entity.getId(), menuList);
menuVO.setChildren(children); menuVO.setChildren(children);
return menuVO; return menuVO;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
return tableMenus; return menus;
} }
/** /**
@@ -213,10 +216,14 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
* @param menuList 菜单列表 * @param menuList 菜单列表
* @return * @return
*/ */
private static List<Option> recurMenus(Long parentId, List<SysMenu> menuList) { private static List<Option> recurMenuOptions(Long parentId, List<SysMenu> menuList) {
List<Option> menus = Optional.ofNullable(menuList).orElse(new ArrayList<>()).stream() if (CollectionUtil.isEmpty(menuList)) {
return Collections.EMPTY_LIST;
}
List<Option> menus = menuList.stream()
.filter(menu -> menu.getParentId().equals(parentId)) .filter(menu -> menu.getParentId().equals(parentId))
.map(menu -> new Option(menu.getId(), menu.getName(), recurMenus(menu.getId(), menuList))) .map(menu -> new Option(menu.getId(), menu.getName(), recurMenuOptions(menu.getId(), menuList)))
.collect(ArrayList::new, ArrayList::add, ArrayList::addAll); .collect(ArrayList::new, ArrayList::add, ArrayList::addAll);
return menus; return menus;
} }
@@ -229,7 +236,11 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
* @return * @return
*/ */
private static List<ResourceVO> recurResources(Long parentId, List<SysMenu> menuList) { private static List<ResourceVO> recurResources(Long parentId, List<SysMenu> menuList) {
List<ResourceVO> menus = Optional.ofNullable(menuList).orElse(new ArrayList<>()).stream() if (CollectionUtil.isEmpty(menuList)) {
return Collections.EMPTY_LIST;
}
List<ResourceVO> menus = menuList.stream()
.filter(menu -> menu.getParentId().equals(parentId)) .filter(menu -> menu.getParentId().equals(parentId))
.map(menu -> { .map(menu -> {
ResourceVO resourceVO = new ResourceVO(); ResourceVO resourceVO = new ResourceVO();