From c8db8de256f163086276a7c9c69c94e05e647872 Mon Sep 17 00:00:00 2001 From: Bunny <1319900154@qq.com> Date: Thu, 14 Dec 2023 16:58:03 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=92=E8=89=B2=E8=8F=9C=E5=8D=95-=E6=9C=AA?= =?UTF-8?q?=E5=81=9A=E5=AE=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/bunny/config/WebMvcConfiguration.java | 10 +++--- .../cn/bunny/controller/IndexController.java | 18 +++++++--- .../java/cn/bunny/mapper/SysMenuMapper.java | 3 ++ .../java/cn/bunny/service/SysMenuService.java | 4 +++ .../service/impl/SysMenuServiceImpl.java | 36 +++++++++++++++++++ .../src/main/resources/application.yml | 6 ++-- .../resources/mapper/menu/SysMenuMapper.xml | 10 ++++++ 7 files changed, 74 insertions(+), 13 deletions(-) diff --git a/spzx-manager/src/main/java/cn/bunny/config/WebMvcConfiguration.java b/spzx-manager/src/main/java/cn/bunny/config/WebMvcConfiguration.java index c556f71..146c02d 100644 --- a/spzx-manager/src/main/java/cn/bunny/config/WebMvcConfiguration.java +++ b/spzx-manager/src/main/java/cn/bunny/config/WebMvcConfiguration.java @@ -21,13 +21,11 @@ public class WebMvcConfiguration implements WebMvcConfigurer { public void addInterceptors(InterceptorRegistry registry) { // .excludePathPatterns("/admin/system/index/login", "/admin.system/index/generateValidateCode") - // registry.addInterceptor(loginAuthInterceptor) - // .addPathPatterns("/**") - // .excludePathPatterns(userProperties.getNoAuthUrls()); - + registry.addInterceptor(loginAuthInterceptor) + .addPathPatterns("/**") + .excludePathPatterns(userProperties.getNoAuthUrls()); } - - + // 解决跨域 @Override public void addCorsMappings(CorsRegistry registry) { diff --git a/spzx-manager/src/main/java/cn/bunny/controller/IndexController.java b/spzx-manager/src/main/java/cn/bunny/controller/IndexController.java index 60517ee..20a1a97 100644 --- a/spzx-manager/src/main/java/cn/bunny/controller/IndexController.java +++ b/spzx-manager/src/main/java/cn/bunny/controller/IndexController.java @@ -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.ResultCodeEnum; 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.service.SysMenuService; import cn.bunny.service.SysUserService; import cn.bunny.service.ValidateCodeService; 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.web.bind.annotation.*; +import java.util.List; + @Tag(name = "用户接口") @Log4j2 @RestController @@ -27,7 +31,16 @@ public class IndexController { @Autowired private ValidateCodeService validateCodeService; - // 用户登录 + @Autowired + private SysMenuService sysMenuService; + + @Operation(summary = "查询用户可以操作菜单", description = "菜单查询") + @GetMapping("/menus") + public Result menus() { + List list = sysMenuService.findMenusByUserId(); + return Result.build(list, ResultCodeEnum.SUCCESS); + } + @Operation(summary = "用户登录", description = "用户登录获取token") @PostMapping("login") public Result login(@RequestBody LoginDto loginDto) { @@ -37,7 +50,6 @@ public class IndexController { return Result.build(loginVo, ResultCodeEnum.LOGIN_SUCCESS); } - // 生成验证码 @Operation(summary = "获取验证码", description = "会获得两个值:codeKey + codeValue") @GetMapping(value = "/generateValidateCode") public Result generateValidateCode() { @@ -47,7 +59,6 @@ public class IndexController { return Result.build(validateCodeVo, ResultCodeEnum.SUCCESS); } - // 获取用户登录信息 @Operation(summary = "获取用户登录信息", description = "获取token") @GetMapping(value = "getUserInfo") // public Result getUserInfo(HttpServletRequest httpServletRequest) { @@ -67,7 +78,6 @@ public class IndexController { return Result.build(sysUser, ResultCodeEnum.SUCCESS); } - // 用户退出 @Operation(summary = "用户退出", description = "清除Redis中token") @GetMapping("logout") public Result logout(@RequestHeader(name = "token") String token) { diff --git a/spzx-manager/src/main/java/cn/bunny/mapper/SysMenuMapper.java b/spzx-manager/src/main/java/cn/bunny/mapper/SysMenuMapper.java index 297377f..0cfb4b9 100644 --- a/spzx-manager/src/main/java/cn/bunny/mapper/SysMenuMapper.java +++ b/spzx-manager/src/main/java/cn/bunny/mapper/SysMenuMapper.java @@ -21,4 +21,7 @@ public interface SysMenuMapper { // 查询是否有子菜单 Long selectById(Long id); + + // 根据userid查询可以操作菜单 + List findMenuByUserId(Long userId); } diff --git a/spzx-manager/src/main/java/cn/bunny/service/SysMenuService.java b/spzx-manager/src/main/java/cn/bunny/service/SysMenuService.java index 69a873c..fe1372f 100644 --- a/spzx-manager/src/main/java/cn/bunny/service/SysMenuService.java +++ b/spzx-manager/src/main/java/cn/bunny/service/SysMenuService.java @@ -1,6 +1,7 @@ package cn.bunny.service; import cn.bunny.common.spzx.model.entity.system.SysMenu; +import cn.bunny.common.spzx.model.vo.system.SysMenuVo; import java.util.List; @@ -16,4 +17,7 @@ public interface SysMenuService { // 删除菜单 void removeById(Long id); + + // 查询用户可以操作菜单 + List findMenusByUserId(); } diff --git a/spzx-manager/src/main/java/cn/bunny/service/impl/SysMenuServiceImpl.java b/spzx-manager/src/main/java/cn/bunny/service/impl/SysMenuServiceImpl.java index 23ca0be..e8a95ac 100644 --- a/spzx-manager/src/main/java/cn/bunny/service/impl/SysMenuServiceImpl.java +++ b/spzx-manager/src/main/java/cn/bunny/service/impl/SysMenuServiceImpl.java @@ -1,8 +1,11 @@ package cn.bunny.service.impl; +import cn.bunny.common.AuthContextUtil; import cn.bunny.common.exception.BunnyException; 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.system.SysMenuVo; import cn.bunny.mapper.SysMenuMapper; import cn.bunny.service.SysMenuService; import cn.bunny.utils.MenuHelper; @@ -10,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import java.util.LinkedList; import java.util.List; @Service @@ -49,4 +53,36 @@ public class SysMenuServiceImpl implements SysMenuService { } sysMenuMapper.removeById(id); } + + // 查询用户可以操作菜单 + @Override + public List findMenusByUserId() { + // 获取当前用户id + SysUser sysUser = AuthContextUtil.get(); + Long userId = sysUser.getId(); + + // 根据userid查询可以操作菜单 + List sysMenuList = sysMenuMapper.findMenuByUserId(userId); + List sysMenus = MenuHelper.buildTree(sysMenuList); + + return this.buildMenus(sysMenus); + } + + + // 将List对象转换成List对象 + private List buildMenus(List menus) { + + List sysMenuVoList = new LinkedList(); + for (SysMenu sysMenu : menus) { + SysMenuVo sysMenuVo = new SysMenuVo(); + sysMenuVo.setTitle(sysMenu.getTitle()); + sysMenuVo.setName(sysMenu.getComponent()); + List children = sysMenu.getChildren(); + if (!CollectionUtils.isEmpty(children)) { + sysMenuVo.setChildren(buildMenus(children)); + } + sysMenuVoList.add(sysMenuVo); + } + return sysMenuVoList; + } } diff --git a/spzx-manager/src/main/resources/application.yml b/spzx-manager/src/main/resources/application.yml index 9617378..fef4755 100644 --- a/spzx-manager/src/main/resources/application.yml +++ b/spzx-manager/src/main/resources/application.yml @@ -9,9 +9,9 @@ spring: max-request-size: 20MB -server: - servlet: - context-path: /api +#server: +# servlet: +# context-path: /api spzx: auth: diff --git a/spzx-manager/src/main/resources/mapper/menu/SysMenuMapper.xml b/spzx-manager/src/main/resources/mapper/menu/SysMenuMapper.xml index 974225a..eca701e 100644 --- a/spzx-manager/src/main/resources/mapper/menu/SysMenuMapper.xml +++ b/spzx-manager/src/main/resources/mapper/menu/SysMenuMapper.xml @@ -65,4 +65,14 @@ where parent_id = #{id} and is_deleted = 0 + + +