菜单管理优化

master
An Yong Shuai 2024-04-13 08:50:23 +08:00
parent 828b987ac7
commit 656daa9501
6 changed files with 143 additions and 21 deletions

View File

@ -1,12 +1,17 @@
package com.muyu.system.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.muyu.common.core.constant.CacheConstants;
import com.muyu.common.core.constant.SecurityConstants;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.utils.JwtUtils;
import com.muyu.common.core.utils.StringUtils;
import com.muyu.common.core.utils.poi.ExcelUtil;
import com.muyu.common.core.web.controller.BaseController;
import com.muyu.common.core.web.page.TableDataInfo;
import com.muyu.common.log.annotation.Log;
import com.muyu.common.log.enums.BusinessType;
import com.muyu.common.redis.service.RedisService;
import com.muyu.common.security.annotation.InnerAuth;
import com.muyu.common.security.annotation.RequiresPermissions;
import com.muyu.common.security.utils.SecurityUtils;
@ -18,14 +23,19 @@ import com.muyu.system.domain.resp.AuthRoleResp;
import com.muyu.system.domain.resp.UserDetailInfoResp;
import com.muyu.system.domain.resp.UserInfoResp;
import com.muyu.system.service.*;
import io.jsonwebtoken.Claims;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@ -55,6 +65,10 @@ public class SysUserController extends BaseController {
@Autowired
private SysConfigService configService;
@Autowired
private HttpServletRequest request;
@Autowired
private RedisService redisService;
/**
*
@ -130,27 +144,7 @@ public class SysUserController extends BaseController {
return Result.success(userService.registerUser(sysUser));
}
/**
*
*
* @return
*/
@GetMapping("getInfo")
public Result getInfo () {
SysUser user = userService.selectUserById(SecurityUtils.getUserId());
// 角色集合
Set<String> roles = permissionService.getRolePermission(user);
// 权限集合
Set<String> permissions = permissionService.getMenuPermission(user);
return Result.success(
UserInfoResp.builder()
.user(user)
.roles(roles)
.permissions(permissions)
.build()
);
}
/**
*
@ -227,6 +221,7 @@ public class SysUserController extends BaseController {
return toAjax(userService.deleteUserByIds(userIds));
}
/**
*
*/
@ -241,6 +236,30 @@ public class SysUserController extends BaseController {
return toAjax(userService.resetPwd(user));
}
/**
*
*
* @return
*/
@GetMapping("getInfo")
public Result getInfo () {
SysUser user = userService.selectUserById(SecurityUtils.getUserId());
// 角色集合
Set<String> roles = permissionService.getRolePermission(user);
// 权限集合
Set<String> permissions = permissionService.getMenuPermission(user);
return Result.success(
UserInfoResp.builder()
.user(user)
.roles(roles)
.permissions(permissions)
.build()
);
}
/**
*
*/

View File

@ -12,6 +12,10 @@ import java.util.List;
* @author muyu
*/
public interface SysMenuMapper extends BaseMapper<SysMenu> {
List<SysMenu> selectMenuByMenuIdList(@Param("longStream") List<Long> longStream);
List<SysMenu> selectMenuByparentList(@Param("collect") List<Long> collect);
/**
*
*

View File

@ -11,6 +11,7 @@ import java.util.List;
* @author muyu
*/
public interface SysUserService extends IService<SysUser> {
/**
*
*

View File

@ -17,6 +17,7 @@ import com.muyu.system.mapper.SysRoleMenuMapper;
import com.muyu.system.service.SysMenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.*;
import java.util.stream.Collectors;
@ -64,11 +65,81 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
// 管理员显示所有菜单信息
if (SysUser.isAdmin(userId)) {
menuList = menuMapper.selectMenuList(menu);
} else {
menu.getParams().put("userId", userId);
menuList = menuMapper.selectMenuListByUserId(menu);
}
return menuList;
/**
* parentId
*/
List<SysMenu> list = list(menuList);
List<Long> collect = menuList.stream().distinct()
.map(SysMenu::getParentId)
.collect(Collectors.toList());
System.out.println(collect);
/*
*parentID
*/
// if (collect.size()==0){
// return menuList;
// }
/**
* parentID
*/
List<SysMenu> sysMenus=menuMapper.selectMenuByparentList(collect);
List<SysMenu> finalMenuList = menuList;
/**
*
*/
sysMenus.forEach(sysMenu -> {
finalMenuList.add(sysMenu);
});
/**
* parentID
*/
List<Long> collect2 = finalMenuList.stream().distinct()
.map(SysMenu::getParentId)
.collect(Collectors.toList());
/**
* parentID
*/
List<SysMenu> sysMenus1 = menuMapper.selectMenuByparentList(collect2);
sysMenus1.forEach(sysMenu -> {
finalMenuList.add(sysMenu);
});
/**
*
*/
List<SysMenu> collect1 = finalMenuList
.stream()
.distinct()
.collect(Collectors.toList());
collect1.addAll(list);
List<SysMenu> collect3 = collect1.stream().distinct().collect(Collectors.toList());
return collect3;
}
public List<SysMenu> list(List<SysMenu> menuList){
List<Long> collect = menuList.stream().distinct()
.map(SysMenu::getMenuId).collect(Collectors.toList());
if (collect.size()==0){
return null;
}
List<SysMenu> sysMenus = menuMapper.selectMenuByMenuIdList(collect);
if (sysMenus==null){
return null;
}
List<SysMenu> list = list(sysMenus);
if (list!=null){
sysMenus.addAll(list);
}
return sysMenus;
}
/**

View File

@ -1,12 +1,15 @@
package com.muyu.system.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.common.core.constant.CacheConstants;
import com.muyu.common.core.constant.UserConstants;
import com.muyu.common.core.exception.ServiceException;
import com.muyu.common.core.utils.JwtUtils;
import com.muyu.common.core.utils.SpringUtils;
import com.muyu.common.core.utils.StringUtils;
import com.muyu.common.core.utils.bean.BeanValidators;
import com.muyu.common.datascope.annotation.DataScope;
import com.muyu.common.redis.service.RedisService;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.common.system.domain.SysRole;
import com.muyu.common.system.domain.SysUser;
@ -23,6 +26,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Validator;
import java.util.ArrayList;
import java.util.List;
@ -51,6 +55,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
@Autowired
private SysConfigService configService;
/**
*
*

View File

@ -185,6 +185,28 @@
<include refid="selectMenuVo"/>
where menu_name=#{menuName} and parent_id = #{parentId} limit 1
</select>
<select id="selectMenuByparentList" resultType="com.muyu.system.domain.SysMenu">
<include refid="selectMenuVo"/>
<where>
menu_id in (
<foreach collection="collect" separator="," item="id">
#{id}
</foreach>
)
</where>
order by parent_id, order_num
</select>
<select id="selectMenuByMenuIdList" resultType="com.muyu.system.domain.SysMenu">
<include refid="selectMenuVo"/>
<where>
parent_id in (
<foreach collection="longStream" separator="," item="id">
#{id}
</foreach>
)
</where>
order by parent_id, order_num
</select>
<update id="updateMenu" parameterType="com.muyu.system.domain.SysMenu">
update sys_menu