菜单管理优化
parent
828b987ac7
commit
656daa9501
|
@ -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()
|
||||
);
|
||||
}
|
||||
/**
|
||||
* 状态修改
|
||||
*/
|
||||
|
|
|
@ -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);
|
||||
/**
|
||||
* 查询系统菜单列表
|
||||
*
|
||||
|
|
|
@ -11,6 +11,7 @@ import java.util.List;
|
|||
* @author muyu
|
||||
*/
|
||||
public interface SysUserService extends IService<SysUser> {
|
||||
|
||||
/**
|
||||
* 根据条件分页查询用户列表
|
||||
*
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
||||
/**
|
||||
* 根据条件分页查询用户列表
|
||||
*
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue