角色菜单-未做完

This commit is contained in:
Bunny 2023-12-14 16:58:03 +08:00
parent aab1b953cb
commit c8db8de256
7 changed files with 74 additions and 13 deletions

View File

@ -21,13 +21,11 @@ public class WebMvcConfiguration implements WebMvcConfigurer {
public void addInterceptors(InterceptorRegistry registry) { public void addInterceptors(InterceptorRegistry registry) {
// .excludePathPatterns("/admin/system/index/login", "/admin.system/index/generateValidateCode") // .excludePathPatterns("/admin/system/index/login", "/admin.system/index/generateValidateCode")
// registry.addInterceptor(loginAuthInterceptor) registry.addInterceptor(loginAuthInterceptor)
// .addPathPatterns("/**") .addPathPatterns("/**")
// .excludePathPatterns(userProperties.getNoAuthUrls()); .excludePathPatterns(userProperties.getNoAuthUrls());
} }
// 解决跨域 // 解决跨域
@Override @Override
public void addCorsMappings(CorsRegistry registry) { public void addCorsMappings(CorsRegistry registry) {

View File

@ -7,7 +7,9 @@ import cn.bunny.common.spzx.model.entity.user.UserInfo;
import cn.bunny.common.spzx.model.vo.common.Result; import cn.bunny.common.spzx.model.vo.common.Result;
import cn.bunny.common.spzx.model.vo.common.ResultCodeEnum; import cn.bunny.common.spzx.model.vo.common.ResultCodeEnum;
import cn.bunny.common.spzx.model.vo.system.LoginVo; import cn.bunny.common.spzx.model.vo.system.LoginVo;
import cn.bunny.common.spzx.model.vo.system.SysMenuVo;
import cn.bunny.common.spzx.model.vo.system.ValidateCodeVo; import cn.bunny.common.spzx.model.vo.system.ValidateCodeVo;
import cn.bunny.service.SysMenuService;
import cn.bunny.service.SysUserService; import cn.bunny.service.SysUserService;
import cn.bunny.service.ValidateCodeService; import cn.bunny.service.ValidateCodeService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
@ -16,6 +18,8 @@ import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
@Tag(name = "用户接口") @Tag(name = "用户接口")
@Log4j2 @Log4j2
@RestController @RestController
@ -27,7 +31,16 @@ public class IndexController {
@Autowired @Autowired
private ValidateCodeService validateCodeService; private ValidateCodeService validateCodeService;
// 用户登录 @Autowired
private SysMenuService sysMenuService;
@Operation(summary = "查询用户可以操作菜单", description = "菜单查询")
@GetMapping("/menus")
public Result menus() {
List<SysMenuVo> list = sysMenuService.findMenusByUserId();
return Result.build(list, ResultCodeEnum.SUCCESS);
}
@Operation(summary = "用户登录", description = "用户登录获取token") @Operation(summary = "用户登录", description = "用户登录获取token")
@PostMapping("login") @PostMapping("login")
public Result login(@RequestBody LoginDto loginDto) { public Result login(@RequestBody LoginDto loginDto) {
@ -37,7 +50,6 @@ public class IndexController {
return Result.build(loginVo, ResultCodeEnum.LOGIN_SUCCESS); return Result.build(loginVo, ResultCodeEnum.LOGIN_SUCCESS);
} }
// 生成验证码
@Operation(summary = "获取验证码", description = "会获得两个值codeKey + codeValue") @Operation(summary = "获取验证码", description = "会获得两个值codeKey + codeValue")
@GetMapping(value = "/generateValidateCode") @GetMapping(value = "/generateValidateCode")
public Result<ValidateCodeVo> generateValidateCode() { public Result<ValidateCodeVo> generateValidateCode() {
@ -47,7 +59,6 @@ public class IndexController {
return Result.build(validateCodeVo, ResultCodeEnum.SUCCESS); return Result.build(validateCodeVo, ResultCodeEnum.SUCCESS);
} }
// 获取用户登录信息
@Operation(summary = "获取用户登录信息", description = "获取token") @Operation(summary = "获取用户登录信息", description = "获取token")
@GetMapping(value = "getUserInfo") @GetMapping(value = "getUserInfo")
// public Result getUserInfo(HttpServletRequest httpServletRequest) { // public Result getUserInfo(HttpServletRequest httpServletRequest) {
@ -67,7 +78,6 @@ public class IndexController {
return Result.build(sysUser, ResultCodeEnum.SUCCESS); return Result.build(sysUser, ResultCodeEnum.SUCCESS);
} }
// 用户退出
@Operation(summary = "用户退出", description = "清除Redis中token") @Operation(summary = "用户退出", description = "清除Redis中token")
@GetMapping("logout") @GetMapping("logout")
public Result logout(@RequestHeader(name = "token") String token) { public Result logout(@RequestHeader(name = "token") String token) {

View File

@ -21,4 +21,7 @@ public interface SysMenuMapper {
// 查询是否有子菜单 // 查询是否有子菜单
Long selectById(Long id); Long selectById(Long id);
// 根据userid查询可以操作菜单
List<SysMenu> findMenuByUserId(Long userId);
} }

View File

@ -1,6 +1,7 @@
package cn.bunny.service; package cn.bunny.service;
import cn.bunny.common.spzx.model.entity.system.SysMenu; import cn.bunny.common.spzx.model.entity.system.SysMenu;
import cn.bunny.common.spzx.model.vo.system.SysMenuVo;
import java.util.List; import java.util.List;
@ -16,4 +17,7 @@ public interface SysMenuService {
// 删除菜单 // 删除菜单
void removeById(Long id); void removeById(Long id);
// 查询用户可以操作菜单
List<SysMenuVo> findMenusByUserId();
} }

View File

@ -1,8 +1,11 @@
package cn.bunny.service.impl; package cn.bunny.service.impl;
import cn.bunny.common.AuthContextUtil;
import cn.bunny.common.exception.BunnyException; import cn.bunny.common.exception.BunnyException;
import cn.bunny.common.spzx.model.entity.system.SysMenu; import cn.bunny.common.spzx.model.entity.system.SysMenu;
import cn.bunny.common.spzx.model.entity.system.SysUser;
import cn.bunny.common.spzx.model.vo.common.ResultCodeEnum; import cn.bunny.common.spzx.model.vo.common.ResultCodeEnum;
import cn.bunny.common.spzx.model.vo.system.SysMenuVo;
import cn.bunny.mapper.SysMenuMapper; import cn.bunny.mapper.SysMenuMapper;
import cn.bunny.service.SysMenuService; import cn.bunny.service.SysMenuService;
import cn.bunny.utils.MenuHelper; import cn.bunny.utils.MenuHelper;
@ -10,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.LinkedList;
import java.util.List; import java.util.List;
@Service @Service
@ -49,4 +53,36 @@ public class SysMenuServiceImpl implements SysMenuService {
} }
sysMenuMapper.removeById(id); sysMenuMapper.removeById(id);
} }
// 查询用户可以操作菜单
@Override
public List<SysMenuVo> findMenusByUserId() {
// 获取当前用户id
SysUser sysUser = AuthContextUtil.get();
Long userId = sysUser.getId();
// 根据userid查询可以操作菜单
List<SysMenu> sysMenuList = sysMenuMapper.findMenuByUserId(userId);
List<SysMenu> sysMenus = MenuHelper.buildTree(sysMenuList);
return this.buildMenus(sysMenus);
}
// 将List<SysMenu>对象转换成List<SysMenuVo>对象
private List<SysMenuVo> buildMenus(List<SysMenu> menus) {
List<SysMenuVo> sysMenuVoList = new LinkedList<SysMenuVo>();
for (SysMenu sysMenu : menus) {
SysMenuVo sysMenuVo = new SysMenuVo();
sysMenuVo.setTitle(sysMenu.getTitle());
sysMenuVo.setName(sysMenu.getComponent());
List<SysMenu> children = sysMenu.getChildren();
if (!CollectionUtils.isEmpty(children)) {
sysMenuVo.setChildren(buildMenus(children));
}
sysMenuVoList.add(sysMenuVo);
}
return sysMenuVoList;
}
} }

View File

@ -9,9 +9,9 @@ spring:
max-request-size: 20MB max-request-size: 20MB
server: #server:
servlet: # servlet:
context-path: /api # context-path: /api
spzx: spzx:
auth: auth:

View File

@ -65,4 +65,14 @@
where parent_id = #{id} where parent_id = #{id}
and is_deleted = 0 and is_deleted = 0
</select> </select>
<!-- 根据userid查询可以操作菜单 -->
<select id="findMenuByUserId" resultMap="sysRoleMap">
select *
from sys_menu m
inner join sys_role_menu srm on m.id = srm.menu_id
inner join sys_user_role sur on srm.role_id = sur.role_id
where sur.user_id = 1
and m.is_deleted = 0
</select>
</mapper> </mapper>