From 1b4d9b2dd4ed07758241d1143890b3a86b3c0641 Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期日, 28 四月 2024 14:15:49 +0800
Subject: [PATCH] 权限管理开发基本功能已完成,待前端对接

---
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java                                  |   10 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageOutTaskController.java  |    4 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/LoginFailureHandler.java                                          |   31 +
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/SysMenuService.java                                                 |   40 +
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/SysRoleService.java                                                 |   35 +
 UI-Project/src/views/LoginView.vue                                                                                                             |    2 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java                                           |   59 ++
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserService.java                                             |   31 +
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCage.java                           |    4 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java                    |   10 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml                                                            |    2 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/controller/SysMenuController.java                                           |  128 ++----
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java      |    5 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserRoleMapper.java                                           |    4 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageFeedTaskController.java |    4 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/mapper/SysMenuMapper.java                                                   |    4 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMapper.java                                                   |    4 
 UI-Project/src/router/index.js                                                                                                                 |   30 +
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java              |    2 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Swagger2Config.java                                                   |   26 +
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtAccessDeniedHandler.java                                       |   35 +
 hangzhoumesParent/common/springsecurity/src/main/resources/application.yml                                                                     |   36 +
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/entity/request/GeneralRequest.java                                                  |    6 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/entity/vo/SysRoleVO.java                                                    |   44 ++
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/SysUserRole.java                                                 |    3 
 UI-Project/src/layout/MainErpView.vue                                                                                                          |    2 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/entity/SysRoleMenu.java                                                     |    2 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/JwtUtil.java                                                        |    2 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java                                        |  158 +++----
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml                                                             |    5 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/LoginSuccessHandler.java                                          |   38 +
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtAuthenticationEntryPoint.java                                  |   33 +
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageController.java             |    4 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/config/TokenWebSecurityConfig.java                                        |   64 ++
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtLogoutSuccessHandler.java                                      |   40 +
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserRoleService.java                                         |    5 
 /dev/null                                                                                                                                      |   29 -
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/entity/SysMenu.java                                                         |    7 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/DownStorageCage.java                                |    4 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/vo/SysUserVO.java                                                |    4 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/controller/SysUserController.java                                       |   26 
 hangzhoumesParent/moduleService/LoadGlassModule/src/test/java/com/mes/ApplicationTest.java                                                     |   16 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/UserInfoUtils.java                                                  |   26 +
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java                                    |   58 ++
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/controller/DownStorageCageDetailsController.java           |    2 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java                                        |  103 ++++
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java                           |    3 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/glassinfo/controller/GlassInfoController.java                           |    4 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java                 |    7 
 49 files changed, 877 insertions(+), 324 deletions(-)

diff --git a/UI-Project/src/layout/MainErpView.vue b/UI-Project/src/layout/MainErpView.vue
index d2e3ed7..dc3f4f9 100644
--- a/UI-Project/src/layout/MainErpView.vue
+++ b/UI-Project/src/layout/MainErpView.vue
@@ -23,7 +23,7 @@
 
 //鎻愬彇鑿滃崟妯″潡鍒楄〃
 let menuList = $ref([])
-request.get('/loadGlass/menu/sysMenu/list').then((res) => {
+request.get('/loadGlass/sys/menu/getMenuTree').then((res) => {
   if (res.code == 200) {
     menuList = deepClone(res.data)
   } else {
diff --git a/UI-Project/src/router/index.js b/UI-Project/src/router/index.js
index c51d269..ceeccbb 100644
--- a/UI-Project/src/router/index.js
+++ b/UI-Project/src/router/index.js
@@ -1,5 +1,9 @@
 import {createRouter, createWebHashHistory} from 'vue-router'
 
+import User from '../views/sys/User.vue'
+import Role from '../views/sys/Role.vue'
+import Menu from '../views/sys/Menu.vue'
+
 const router = createRouter({
   history: createWebHashHistory(),
   routes: [
@@ -200,10 +204,34 @@
               component: () => import('../views/Visualization/screenthree.vue')
             }
           ]
+         },
+
+        /*----------- 绠$悊绯荤粺 ----------------*/
+        {
+          path: 'sys',
+          name: 'screen',
+          component: () => import('../views/Visualization/screen.vue'),
+          children: [
+            {
+              path: '/sys/users',
+              name: 'SysUser',
+              component: User
+            },
+            {
+              path: '/sys/roles',
+              name: 'SysRole',
+              component: Role
+            },
+            {
+              path: '/sys/menus',
+              name: 'SysMenu',
+              component: Menu
+            },
+          ]
         },
         {
           path: '',
-          redirect:'/Slicecage/slicecage'
+          redirect: '/Slicecage/slicecage'
         }
       ]
     },
diff --git a/UI-Project/src/views/LoginView.vue b/UI-Project/src/views/LoginView.vue
index 21d4f05..7206227 100644
--- a/UI-Project/src/views/LoginView.vue
+++ b/UI-Project/src/views/LoginView.vue
@@ -48,7 +48,7 @@
     if (valid) {
       loginLoadings.value = true
       request
-          .post('/loadGlass/userinfo/login', userForm)
+          .post('/loadGlass/sys/user/login', userForm)
           .then((res) => {
             if (res['code'] == 200) {
               store.$patch({user: res.data})
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Swagger2Config.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Swagger2Config.java
index f95b3bb..0062ed2 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Swagger2Config.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Swagger2Config.java
@@ -7,13 +7,14 @@
 import springfox.documentation.builders.PathSelectors;
 import springfox.documentation.builders.RequestHandlerSelectors;
 import springfox.documentation.schema.ModelRef;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.service.Contact;
-import springfox.documentation.service.Parameter;
+import springfox.documentation.service.*;
 import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spi.service.contexts.SecurityContext;
 import springfox.documentation.spring.web.plugins.Docket;
 
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -46,9 +47,26 @@
                 .apis(RequestHandlerSelectors.basePackage("com.mes"))
                 .paths(PathSelectors.any())
                 .build()
-                .globalOperationParameters(pars);
+                .globalOperationParameters(pars)
+                .securitySchemes(Collections.EMPTY_LIST)
+                .securityContexts(Arrays.asList(securityContext()));
     }
 
+    private SecurityContext securityContext() {
+        return SecurityContext.builder()
+                .securityReferences(defaultAuth())
+                .forPaths(PathSelectors.any())
+                .build();
+    }
+
+    private List<SecurityReference> defaultAuth() {
+        AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
+        AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
+        authorizationScopes[0] = authorizationScope;
+        return Arrays.asList(new SecurityReference("Authorization", authorizationScopes));
+    }
+
+
     private ApiInfo webApiInfo() {
         return new ApiInfoBuilder()
                 .title("缃戠珯-API鏂囨。")
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/request/UserRequest.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/entity/request/GeneralRequest.java
similarity index 60%
rename from hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/request/UserRequest.java
rename to hangzhoumesParent/common/servicebase/src/main/java/com/mes/entity/request/GeneralRequest.java
index e58f366..d70b171 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/request/UserRequest.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/entity/request/GeneralRequest.java
@@ -1,4 +1,4 @@
-package com.mes.userinfo.entity.request;
+package com.mes.entity.request;
 
 import cn.hutool.db.Page;
 import lombok.Data;
@@ -9,9 +9,9 @@
  * @Description:
  */
 @Data
-public class UserRequest {
+public class GeneralRequest {
 
-    private String userName;
+    private String key;
 
     private Page page;
 }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/base/BaseController.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/base/BaseController.java
deleted file mode 100644
index ac66731..0000000
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/base/BaseController.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.mes.base;
-
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.mes.common.utils.RedisUtil;
-import com.mes.menu.service.SysMenuService;
-import com.mes.role.service.SysRoleMenuService;
-import com.mes.role.service.SysRoleService;
-import com.mes.userinfo.service.SysUserRoleService;
-import com.mes.userinfo.service.SysUserService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.ServletRequestUtils;
-
-import javax.servlet.http.HttpServletRequest;
-
-/**
- * @Author : zhoush
- * @Date: 2024/4/24 10:00
- * @Description:
- */
-public class BaseController {
-    @Autowired
-    public HttpServletRequest req;
-
-    @Autowired
-    public RedisUtil redisUtil;
-
-    @Autowired
-    public SysUserService sysUserService;
-
-    @Autowired
-    public SysRoleService sysRoleService;
-
-    @Autowired
-    public SysMenuService sysMenuService;
-
-    @Autowired
-    public SysUserRoleService sysUserRoleService;
-
-    @Autowired
-    public SysRoleMenuService sysRoleMenuService;
-
-    /**
-     * 鑾峰彇椤甸潰
-     *
-     * @return
-     */
-    public Page getPage() {
-        int current = ServletRequestUtils.getIntParameter(req, "cuurent", 1);
-        int size = ServletRequestUtils.getIntParameter(req, "size", 10);
-
-        return new Page(current, size);
-    }
-}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/config/TokenWebSecurityConfig.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/config/TokenWebSecurityConfig.java
index cfe6197..e5f3071 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/config/TokenWebSecurityConfig.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/config/TokenWebSecurityConfig.java
@@ -2,6 +2,7 @@
 
 
 import com.mes.common.filter.JwtAuthenticationTokenFilter;
+import com.mes.common.handler.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -13,8 +14,6 @@
 import org.springframework.security.config.http.SessionCreationPolicy;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.security.crypto.password.PasswordEncoder;
-import org.springframework.security.web.AuthenticationEntryPoint;
-import org.springframework.security.web.access.AccessDeniedHandler;
 import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
 
 @Configuration
@@ -23,12 +22,20 @@
 public class TokenWebSecurityConfig extends WebSecurityConfigurerAdapter {
     @Autowired
     private JwtAuthenticationTokenFilter jwtAuthenticationTokenFilter;
+    @Autowired
+    LoginFailureHandler loginFailureHandler;
 
     @Autowired
-    private AuthenticationEntryPoint authenticationEntryPoint;
+    LoginSuccessHandler loginSuccessHandler;
 
     @Autowired
-    private AccessDeniedHandler accessDeniedHandler;
+    JwtAuthenticationEntryPoint jwtAuthenticationEntryPoint;
+
+    @Autowired
+    JwtAccessDeniedHandler jwtAccessDeniedHandler;
+
+    @Autowired
+    JwtLogoutSuccessHandler jwtLogoutSuccessHandler;
 
     @Bean
     public PasswordEncoder passwordEncoder() {
@@ -40,25 +47,42 @@
      */
     @Override
     protected void configure(HttpSecurity http) throws Exception {
-        http
-                //鍏抽棴csrf
-                .csrf().disable()
-                //涓嶉�氳繃Session鑾峰彇SecurityContext
-                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
+
+        http.cors().and().csrf().disable()
+
+                // 鐧诲綍閰嶇疆
+                .formLogin()
+                .successHandler(loginSuccessHandler)
+                .failureHandler(loginFailureHandler)
+
+                .and()
+                .logout()
+                .logoutSuccessHandler(jwtLogoutSuccessHandler)
+
+                // 绂佺敤session
+                .and()
+                .sessionManagement()
+                .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
+
+                // 閰嶇疆鎷︽埅瑙勫垯
                 .and()
                 .authorizeRequests()
-                // 瀵逛簬鐧诲綍鎺ュ彛 鍏佽鍖垮悕璁块棶
-                .antMatchers("/userinfo/login").anonymous()
-                // 闄や笂闈㈠鐨勬墍鏈夎姹傚叏閮ㄩ渶瑕侀壌鏉冭璇�
-                .anyRequest().authenticated();
-        http.addFilterBefore(jwtAuthenticationTokenFilter, UsernamePasswordAuthenticationFilter.class);
+                .antMatchers("/sys/user/login").anonymous()
+                .antMatchers("/swagger-ui.html").permitAll()
+                .antMatchers("/webjars/**").permitAll()
+                .antMatchers("/v2/**").permitAll()
+                .antMatchers("/swagger-resources/**").permitAll()
+                .anyRequest().authenticated()
 
-        //閰嶇疆寮傚父澶勭悊鍣�
-        http.exceptionHandling()
-                .authenticationEntryPoint(authenticationEntryPoint)
-                .accessDeniedHandler(accessDeniedHandler);
-        //鍏佽璺ㄥ煙
-        http.cors();
+                // 寮傚父澶勭悊鍣�
+                .and()
+                .exceptionHandling()
+                .authenticationEntryPoint(jwtAuthenticationEntryPoint)
+                .accessDeniedHandler(jwtAccessDeniedHandler)
+
+                // 閰嶇疆鑷畾涔夌殑杩囨护鍣�
+                .and()
+                .addFilterBefore(jwtAuthenticationTokenFilter, UsernamePasswordAuthenticationFilter.class);
     }
 
     @Bean
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java
index 074f98b..34416ba 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java
@@ -2,8 +2,9 @@
 
 import com.mes.common.utils.JwtUtil;
 import com.mes.common.utils.RedisUtil;
-import com.mes.menu.mapper.SysMenuMapper;
+import com.mes.common.utils.UserInfoUtils;
 import com.mes.userinfo.entity.LoginUser;
+import com.mes.userinfo.service.SysUserService;
 import io.jsonwebtoken.Claims;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@@ -36,7 +37,7 @@
     private RedisUtil redisUtil;
 
     @Resource
-    private SysMenuMapper menuMapper;
+    private SysUserService sysUserService;
 
     @Override
     protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
@@ -63,9 +64,10 @@
             response.setHeader("token", "");
             throw new RuntimeException("鐢ㄦ埛鏈櫥褰�");
         }
-
+        //灏嗙敤鎴蜂俊鎭斁鍏ュ綋鍓嶇嚎绋�
+        UserInfoUtils.set(loginUser.getUser());
         //瀛樺叆SecurityContextHolder锛屼互渚涘悗闈㈢殑杩囨护鍣ㄤ娇鐢�
-        List<String> permissionKeyList = menuMapper.selectPermsByUserId(Long.parseLong(userid));
+        List<String> permissionKeyList = sysUserService.getUserAuthorityInfo(Long.parseLong(userid));
         List<GrantedAuthority> authorities = permissionKeyList.stream().
                 map(SimpleGrantedAuthority::new)
                 .collect(Collectors.toList());
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/AccessDeniedHandlerImpl.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/AccessDeniedHandlerImpl.java
deleted file mode 100644
index 302ff52..0000000
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/AccessDeniedHandlerImpl.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.mes.common.handler;
-
-import com.alibaba.fastjson.JSON;
-import com.mes.common.utils.WebUtils;
-import com.mes.utils.Result;
-import org.springframework.http.HttpStatus;
-import org.springframework.security.access.AccessDeniedException;
-import org.springframework.security.web.access.AccessDeniedHandler;
-import org.springframework.stereotype.Component;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-
-/**
- * @Author : zhoush
- * @Date: 2024/4/12 10:38
- * @Description:
- */
-@Component
-public class AccessDeniedHandlerImpl implements AccessDeniedHandler {
-    @Override
-    public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException, ServletException {
-        Result result = Result.error(HttpStatus.FORBIDDEN.value(), "鏉冮檺涓嶈冻");
-        String json = JSON.toJSONString(result);
-        WebUtils.renderString(response, json);
-
-    }
-}
\ No newline at end of file
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/AuthenticationEntryPointImpl.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/AuthenticationEntryPointImpl.java
deleted file mode 100644
index 6cf146f..0000000
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/AuthenticationEntryPointImpl.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.mes.common.handler;
-
-import com.alibaba.fastjson.JSON;
-import com.mes.common.utils.WebUtils;
-import com.mes.utils.Result;
-import org.springframework.http.HttpStatus;
-import org.springframework.security.core.AuthenticationException;
-import org.springframework.security.web.AuthenticationEntryPoint;
-import org.springframework.stereotype.Component;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-
-/**
- * @Author : zhoush
- * @Date: 2024/4/12 10:38
- * @Description:
- */
-@Component
-public class AuthenticationEntryPointImpl implements AuthenticationEntryPoint {
-    @Override
-    public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException {
-        Result result = Result.error(HttpStatus.UNAUTHORIZED.value(), "璁よ瘉澶辫触璇烽噸鏂扮櫥褰�");
-        String json = JSON.toJSONString(result);
-        WebUtils.renderString(response, json);
-    }
-}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtAccessDeniedHandler.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtAccessDeniedHandler.java
new file mode 100644
index 0000000..aad53aa
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtAccessDeniedHandler.java
@@ -0,0 +1,35 @@
+package com.mes.common.handler;
+
+import cn.hutool.json.JSONUtil;
+import com.mes.utils.Result;
+import org.springframework.http.HttpStatus;
+import org.springframework.security.access.AccessDeniedException;
+import org.springframework.security.web.access.AccessDeniedHandler;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+@Component
+public class JwtAccessDeniedHandler implements AccessDeniedHandler {
+
+	@Override
+	public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException, ServletException {
+
+		response.setContentType("application/json;charset=UTF-8");
+		response.setStatus(HttpServletResponse.SC_FORBIDDEN);
+
+		ServletOutputStream outputStream = response.getOutputStream();
+
+		Result result = Result.error(HttpStatus.FORBIDDEN.value(), "鏉冮檺涓嶈冻");
+
+		outputStream.write(JSONUtil.toJsonStr(result).getBytes("UTF-8"));
+
+		outputStream.flush();
+		outputStream.close();
+
+	}
+}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtAuthenticationEntryPoint.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtAuthenticationEntryPoint.java
new file mode 100644
index 0000000..a95ca0c
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtAuthenticationEntryPoint.java
@@ -0,0 +1,33 @@
+package com.mes.common.handler;
+
+import cn.hutool.json.JSONUtil;
+import com.mes.utils.Result;
+import org.springframework.http.HttpStatus;
+import org.springframework.security.core.AuthenticationException;
+import org.springframework.security.web.AuthenticationEntryPoint;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+@Component
+public class JwtAuthenticationEntryPoint implements AuthenticationEntryPoint {
+
+	@Override
+	public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException {
+
+		response.setContentType("application/json;charset=UTF-8");
+		response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
+		ServletOutputStream outputStream = response.getOutputStream();
+
+		Result result = Result.error(HttpStatus.UNAUTHORIZED.value(), "璁よ瘉澶辫触璇烽噸鏂扮櫥褰�");
+
+		outputStream.write(JSONUtil.toJsonStr(result).getBytes("UTF-8"));
+
+		outputStream.flush();
+		outputStream.close();
+	}
+}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtLogoutSuccessHandler.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtLogoutSuccessHandler.java
new file mode 100644
index 0000000..3757d4d
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/JwtLogoutSuccessHandler.java
@@ -0,0 +1,40 @@
+package com.mes.common.handler;
+
+import cn.hutool.json.JSONUtil;
+import com.mes.utils.Result;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
+import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+@Component
+public class JwtLogoutSuccessHandler implements LogoutSuccessHandler {
+
+	private static final String header = "Authorization";
+
+	@Override
+	public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
+
+		if (authentication != null) {
+			new SecurityContextLogoutHandler().logout(request, response, authentication);
+		}
+
+		response.setContentType("application/json;charset=UTF-8");
+		ServletOutputStream outputStream = response.getOutputStream();
+
+		response.setHeader(header, "");
+
+		Result result = Result.success("");
+
+		outputStream.write(JSONUtil.toJsonStr(result).getBytes("UTF-8"));
+
+		outputStream.flush();
+		outputStream.close();
+	}
+}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/LoginFailureHandler.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/LoginFailureHandler.java
new file mode 100644
index 0000000..72abdbe
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/LoginFailureHandler.java
@@ -0,0 +1,31 @@
+package com.mes.common.handler;
+
+import cn.hutool.json.JSONUtil;
+import com.mes.utils.Result;
+import org.springframework.security.core.AuthenticationException;
+import org.springframework.security.web.authentication.AuthenticationFailureHandler;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+@Component
+public class LoginFailureHandler implements AuthenticationFailureHandler {
+
+	@Override
+	public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException {
+
+		response.setContentType("application/json;charset=UTF-8");
+		ServletOutputStream outputStream = response.getOutputStream();
+
+		Result result = Result.error("鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒");
+
+		outputStream.write(JSONUtil.toJsonStr(result).getBytes("UTF-8"));
+
+		outputStream.flush();
+		outputStream.close();
+	}
+}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/LoginSuccessHandler.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/LoginSuccessHandler.java
new file mode 100644
index 0000000..c5458bb
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/handler/LoginSuccessHandler.java
@@ -0,0 +1,38 @@
+package com.mes.common.handler;
+
+import cn.hutool.json.JSONUtil;
+import com.mes.common.utils.JwtUtil;
+import com.mes.utils.Result;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+@Component
+public class LoginSuccessHandler implements AuthenticationSuccessHandler {
+
+	private static final String header = "Authorization";
+
+	@Override
+	public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
+		response.setContentType("application/json;charset=UTF-8");
+		ServletOutputStream outputStream = response.getOutputStream();
+
+		// 鐢熸垚jwt锛屽苟鏀剧疆鍒拌姹傚ご涓�
+		String jwt = JwtUtil.generateToken(authentication.getName());
+		response.setHeader(header, jwt);
+
+		Result result = Result.success("");
+
+		outputStream.write(JSONUtil.toJsonStr(result).getBytes("UTF-8"));
+
+		outputStream.flush();
+		outputStream.close();
+	}
+
+}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/JwtUtil.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/JwtUtil.java
index f7af90a..ea033e3 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/JwtUtil.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/JwtUtil.java
@@ -48,7 +48,7 @@
     }
 
     // jwt鏄惁杩囨湡
-    public boolean isTokenExpired(Claims claims) {
+    public static boolean isTokenExpired(Claims claims) {
         return claims.getExpiration().before(new Date());
     }
 
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/UserInfoUtils.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/UserInfoUtils.java
new file mode 100644
index 0000000..292797c
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/UserInfoUtils.java
@@ -0,0 +1,26 @@
+package com.mes.common.utils;
+
+import com.mes.userinfo.entity.SysUser;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/4/25 15:41
+ * @Description:
+ */
+public class UserInfoUtils {
+    private static InheritableThreadLocal<SysUser> tokenPool = new InheritableThreadLocal<SysUser>();
+
+    public static SysUser get() {
+        return tokenPool.get();
+    }
+
+    public static void set(SysUser user) {
+        tokenPool.set(user);
+    }
+
+    public static void remove() {
+        if (get() != null) {
+            tokenPool.remove();
+        }
+    }
+}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/controller/SysMenuController.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/controller/SysMenuController.java
index 919fdb9..4ca0cb9 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/controller/SysMenuController.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/controller/SysMenuController.java
@@ -1,116 +1,76 @@
 package com.mes.menu.controller;
 
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.mes.base.BaseController;
+import com.mes.entity.request.GeneralRequest;
 import com.mes.menu.entity.SysMenu;
-import com.mes.role.entity.SysRoleMenu;
+import com.mes.menu.service.SysMenuService;
 import com.mes.utils.Result;
-import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
+import java.util.Map;
 
 /**
- * <p>
- * 鑿滃崟琛�
- * </p>
- *
  * @author zhoush
  * @since 2024-04-11
  */
-@ApiModel("鑾峰彇鑿滃崟淇℃伅")
+@Api(description = "鑿滃崟绠$悊")
 @RestController
-@RequestMapping("/menu/sysMenu")
-public class SysMenuController extends BaseController {
-    @ApiOperation("鑾峰彇鐢ㄦ埛鏈夋潈闄愮殑鎵�鏈夎彍鍗�")
-    @GetMapping("/list")
-    public Result<List<SysMenu>> getMenuTree(String userName) {
-        return Result.success(sysMenuService.getMenuTree());
-    }
+@RequestMapping("/sys/menu")
+public class SysMenuController {
 
-    @ApiOperation("鑾峰彇鐢ㄦ埛鐨勬潈闄�")
-    @GetMapping("/getAuthorityInfo")
-    public Result<List<String>> getAuthorityInfo(String userName) {
-        return Result.success(sysMenuService.getAuthorityInfo(userName));
-    }
+    @Autowired
+    private SysMenuService sysMenuService;
 
-    /**
-     * 鐢ㄦ埛褰撳墠鐢ㄦ埛鐨勮彍鍗曞拰鏉冮檺淇℃伅
-     *
-     * @param userName
-     * @return
-     */
-    @GetMapping("/nav")
-    public Result nav(String userName) {
-//        SysUser sysUser = sysUserService.listByUserNameName(userName);
-//
-//        // 鑾峰彇鏉冮檺淇℃伅
-//       sysUserService.getUserAuthorityInfo(sysUser.getId());// ROLE_admin,ROLE_normal,sys:user:list,....
-//        String[] authorityInfoArray = StringUtils.tokenizeToStringArray(authorityInfo, ",");
-//
-//        // 鑾峰彇瀵艰埅鏍忎俊鎭�
-//        List<SysMenuDto> navs = sysMenuService.getCurrentUserNav();
-//
-//        return Result.success(MapUtil.builder()
-//                .put("authoritys", authorityInfoArray)
-//                .put("nav", navs)
-//                .map()
-//        );
-        return null;
-    }
-
-    @GetMapping("/info/{id}")
-    @PreAuthorize("hasAuthority('sys:menu:list')")
-    public Result info(@PathVariable(name = "id") Long id) {
-        return Result.success(sysMenuService.getById(id));
-    }
-
-//    @GetMapping("/list")
-//    @PreAuthorize("hasAuthority('sys:menu:list')")
-//    public Result list() {
-//
-////        List<SysMenu> menus = sysMenuService.tree();
-//        return Result.success(null);
-//    }
-
+    @ApiOperation("鏂板鑿滃崟")
     @PostMapping("/save")
-    @PreAuthorize("hasAuthority('sys:menu:save')")
+//    @PreAuthorize("hasAuthority('sys:menu:save')")
     public Result save(@Validated @RequestBody SysMenu sysMenu) {
         return Result.success(sysMenuService.save(sysMenu));
     }
 
-    @PostMapping("/update")
-    @PreAuthorize("hasAuthority('sys:menu:update')")
-    public Result update(@Validated @RequestBody SysMenu sysMenu) {
-
-        sysMenuService.updateById(sysMenu);
-
-        // 娓呴櫎鎵�鏈変笌璇ヨ彍鍗曠浉鍏崇殑鏉冮檺缂撳瓨
-        sysUserService.clearUserAuthorityInfoByMenuId(sysMenu.getId());
+    @ApiOperation("淇敼鑿滃崟淇℃伅")
+    @PostMapping("/updateMenu")
+//    @PreAuthorize("hasAuthority('sys:menu:update')")
+    public Result updateMenu(@Validated @RequestBody SysMenu sysMenu) {
+        sysMenuService.updateMenu(sysMenu);
         return Result.success(sysMenu);
     }
 
-    @PostMapping("/delete/{id}")
-    @PreAuthorize("hasAuthority('sys:menu:delete')")
-    public Result delete(@PathVariable("id") Long id) {
+    @ApiOperation("鑾峰彇鐢ㄦ埛鏈夋潈闄愮殑鎵�鏈夎彍鍗�")
+    @GetMapping("/getMenuTree")
+    public Result<List<SysMenu>> getMenuTree(GeneralRequest request) {
+        return Result.success(sysMenuService.getMenuTree(request));
+    }
 
-        int count = sysMenuService.count(new QueryWrapper<SysMenu>().eq("parent_id", id));
-        if (count > 0) {
-            return Result.error("璇峰厛鍒犻櫎瀛愯彍鍗�");
-        }
+    @ApiOperation("鑾峰彇鐢ㄦ埛鐨勬潈闄�")
+    @GetMapping("/getAuthorityInfo")
+    public Result<List<String>> getAuthorityInfo() {
+        return Result.success(sysMenuService.getAuthorityInfo());
+    }
 
-        // 娓呴櫎鎵�鏈変笌璇ヨ彍鍗曠浉鍏崇殑鏉冮檺缂撳瓨
-        sysUserService.clearUserAuthorityInfoByMenuId(id);
 
-        sysMenuService.removeById(id);
+    @ApiOperation("鐢ㄦ埛褰撳墠鐢ㄦ埛鐨勮彍鍗曞拰鏉冮檺淇℃伅")
+    @GetMapping("/nav")
+    public Result<Map<Object, Object>> nav() {
+        return Result.success(sysMenuService.nav());
+    }
 
-        // 鍚屾鍒犻櫎涓棿鍏宠仈琛�
-        sysRoleMenuService.remove(new QueryWrapper<SysRoleMenu>().eq("menu_id", id));
-        return Result.success("");
+    @ApiOperation("鍒犻櫎鑿滃崟")
+    @PostMapping("/deleteMenu")
+//    @PreAuthorize("hasAuthority('sys:menu:delete')")
+    public Result<String> deleteMenu(Long menuId) {
+        return Result.success(sysMenuService.deleteMenu(menuId));
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎鑿滃崟")
+    @PostMapping("/batchDeleteMenu")
+//    @PreAuthorize("hasAuthority('sys:menu:delete')")
+    public Result<String> batchDeleteMenu(@RequestBody List<Long> menuIds) {
+        return Result.success(sysMenuService.batchDeleteMenu(menuIds));
     }
 
 }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/entity/SysMenu.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/entity/SysMenu.java
index 683ca4c..37476c6 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/entity/SysMenu.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/entity/SysMenu.java
@@ -35,7 +35,7 @@
     /**
      * 鐖秈d
      */
-    private Integer parentId;
+    private Long parentId;
 
     /**
      * 妯″潡鍚嶇О
@@ -73,6 +73,11 @@
     private Date createTime;
 
     /**
+     * 鏉冮檺
+     */
+    private String perms;
+
+    /**
      * 瀛愯彍鍗�
      */
     @TableField(exist = false)
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/mapper/SysMenuMapper.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/mapper/SysMenuMapper.java
index 04fd616..b1ef2d6 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/mapper/SysMenuMapper.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/mapper/SysMenuMapper.java
@@ -1,6 +1,6 @@
 package com.mes.menu.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.menu.entity.SysMenu;
 import org.apache.ibatis.annotations.Mapper;
 
@@ -15,7 +15,7 @@
  * @since 2024-04-11
  */
 @Mapper
-public interface SysMenuMapper extends BaseMapper<SysMenu> {
+public interface SysMenuMapper extends MPJBaseMapper<SysMenu> {
 
     List<String> selectPermsByUserId(long parseLong);
 }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/SysMenuService.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/SysMenuService.java
index eaea61f..014d1cd 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/SysMenuService.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/SysMenuService.java
@@ -1,9 +1,11 @@
 package com.mes.menu.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.mes.entity.request.GeneralRequest;
 import com.mes.menu.entity.SysMenu;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -16,17 +18,49 @@
 public interface SysMenuService extends IService<SysMenu> {
 
     /**
+     * 鏇存柊鑿滃崟淇℃伅
+     *
+     * @param menu
+     * @return
+     */
+    SysMenu updateMenu(SysMenu menu);
+
+    /**
      * 鑾峰彇鐢ㄦ埛鏈夋潈闄愮殑鑿滃崟鏍�
      *
      * @return
      */
-    List<SysMenu> getMenuTree();
+    List<SysMenu> getMenuTree(GeneralRequest request);
 
     /**
      * 鑾峰彇鐢ㄦ埛鐨勬潈闄�
      *
-     * @param userName
      * @return
      */
-    List<String> getAuthorityInfo(String userName);
+    List<String> getAuthorityInfo();
+
+
+    /**
+     * 鑾峰彇鐢ㄦ埛鑿滃崟鍙婃潈闄愪俊鎭�
+     *
+     * @return
+     */
+    Map<Object, Object> nav();
+
+    /**
+     * 鍒犻櫎鑿滃崟淇℃伅
+     *
+     * @param menuId
+     * @return
+     */
+    String deleteMenu(Long menuId);
+
+    /**
+     * 鎵归噺鍒犻櫎鑿滃崟淇℃伅
+     *
+     * @param menuIds
+     * @return
+     */
+    String batchDeleteMenu(List<Long> menuIds);
+
 }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java
index 884b2ed..b4d0fc6 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java
@@ -1,18 +1,28 @@
 package com.mes.menu.service.impl;
 
+import cn.hutool.core.map.MapUtil;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.mes.common.utils.UserInfoUtils;
+import com.mes.entity.request.GeneralRequest;
 import com.mes.menu.entity.SysMenu;
 import com.mes.menu.mapper.SysMenuMapper;
 import com.mes.menu.service.SysMenuService;
+import com.mes.role.entity.SysRoleMenu;
+import com.mes.role.service.SysRoleMenuService;
 import com.mes.userinfo.entity.SysUser;
+import com.mes.userinfo.entity.SysUserRole;
+import com.mes.userinfo.mapper.SysUserRoleMapper;
 import com.mes.userinfo.service.SysUserService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -30,21 +40,75 @@
     @Autowired
     SysUserService sysUserService;
 
+    @Autowired
+    SysUserRoleMapper sysUserRoleMapper;
+
+    @Autowired
+    SysRoleMenuService sysRoleMenuService;
+
     @Override
-    public List<SysMenu> getMenuTree() {
+    public SysMenu updateMenu(SysMenu menu) {
+        baseMapper.updateById(menu);
+        // 娓呴櫎鎵�鏈変笌璇ヨ彍鍗曠浉鍏崇殑鏉冮檺缂撳瓨
+        sysUserService.clearUserAuthorityInfoByMenuId(menu.getId());
+        return menu;
+    }
+
+    @Override
+    public List<SysMenu> getMenuTree(GeneralRequest request) {
         //todo:闇�瑕佸厛鑾峰彇鐢ㄦ埛鐨勮鑹诧紝瑙掕壊涓嬬殑鑿滃崟鏉冮檺锛屾嬁鍒拌彍鍗昳d鑾峰彇鎵�鏈夎彍鍗�
-        List<SysMenu> menuList = this.baseMapper.selectList(null);
+        SysUser user = UserInfoUtils.get();
+        MPJLambdaWrapper<SysUserRole> wrapper = new MPJLambdaWrapper<>();
+
+        wrapper.selectAll(SysMenu.class).distinct()
+                .leftJoin(SysUser.class, SysUser::getId, SysUserRole::getUserId)
+                .leftJoin(SysRoleMenu.class, SysRoleMenu::getRoleId, SysUserRole::getRoleId)
+                .leftJoin(SysMenu.class, SysMenu::getId, SysRoleMenu::getMenuId)
+                .eq(SysUser::getId, user.getId())
+                .like(StringUtils.isNotBlank(request.getKey()), SysMenu::getMenuName, request.getKey());
+
+        List<SysMenu> menuList = sysUserRoleMapper.selectJoinList(SysMenu.class, wrapper);
         return create(menuList);
     }
 
     @Override
-    public List<String> getAuthorityInfo(String userName) {
-        log.info("鑾峰彇鐢ㄦ埛淇℃伅锛岀敤鎴峰悕涓簕}", userName);
-        SysUser sysUser = sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUserName, userName));
-
+    public List<String> getAuthorityInfo() {
+        SysUser user = UserInfoUtils.get();
+        log.info("鑾峰彇鐢ㄦ埛淇℃伅锛岀敤鎴峰悕涓簕}", user);
         // 鑾峰彇鏉冮檺淇℃伅
         // ROLE_admin,ROLE_normal,sys:user:list,....
-        return sysUserService.getUserAuthorityInfo(sysUser.getId());
+        return sysUserService.getUserAuthorityInfo(user.getId());
+    }
+
+    @Override
+    public Map<Object, Object> nav() {
+        List<SysMenu> menuTree = getMenuTree(new GeneralRequest());
+        List<String> authorityInfo = getAuthorityInfo();
+        return MapUtil.builder().put("authoritys", authorityInfo)
+                .put("tree", menuTree).map();
+    }
+
+    @Override
+    public String deleteMenu(Long menuId) {
+        int count = this.count(new LambdaQueryWrapper<SysMenu>().eq(SysMenu::getParentId, menuId));
+        if (count > 0) {
+            return "鏃犳硶鍒犻櫎,璇峰厛鍒犻櫎瀛愯彍鍗�";
+        }
+
+        // 娓呴櫎鎵�鏈変笌璇ヨ彍鍗曠浉鍏崇殑鏉冮檺缂撳瓨
+        sysUserService.clearUserAuthorityInfoByMenuId(menuId);
+
+        this.removeById(menuId);
+
+        // 鍚屾鍒犻櫎涓棿鍏宠仈琛�
+        sysRoleMenuService.remove(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getMenuId, menuId));
+        return "鍒犻櫎鎴愬姛";
+    }
+
+    @Override
+    public String batchDeleteMenu(List<Long> menuIds) {
+        menuIds.stream().forEach(e -> deleteMenu(e));
+        return "鎵归噺鍒犻櫎鎴愬姛";
     }
 
 
@@ -74,87 +138,9 @@
     private List<SysMenu> getChildren(SysMenu menu, List<SysMenu> menus) {
         List<SysMenu> res = menus.stream()
                 .filter(item -> item.getParentId().equals(menu.getId()))
-                .map(item -> {
-                    item.setChildren(getChildren(item, menus));
-                    return item;
-                }).collect(Collectors.toList());
+                .collect(Collectors.toList());
         log.info("鑿滃崟鏍�:{}", JSONUtil.toJsonStr(res));
         return res;
     }
-
-//
-//    @Autowired
-//    SysUserMapper sysUserMapper;
-//
-//    @Override
-//    public List<SysMenuDto> getCurrentUserNav() {
-//        String username = (String) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
-//        SysUser sysUser = sysUserService.listByUserNameName(username);
-//
-//        List<Long> menuIds = sysUserMapper.getNavMenuIds(sysUser.getId());
-//        List<SysMenu> menus = this.listByIds(menuIds);
-//
-//        // 杞爲鐘剁粨鏋�
-//        List<SysMenu> menuTree = buildTreeMenu(menus);
-//
-//        // 瀹炰綋杞珼TO
-//        return convert(menuTree);
-//    }
-//
-//    @Override
-//    public List<SysMenu> tree() {
-//        // 鑾峰彇鎵�鏈夎彍鍗曚俊鎭�
-//        List<SysMenu> sysMenus = this.list(new QueryWrapper<SysMenu>().orderByAsc("orderNum"));
-//
-//        // 杞垚鏍戠姸缁撴瀯
-//        return buildTreeMenu(sysMenus);
-//    }
-//
-//    private List<SysMenuDto> convert(List<SysMenu> menuTree) {
-//        List<SysMenuDto> menuDtos = new ArrayList<>();
-//
-//        menuTree.forEach(m -> {
-//            SysMenuDto dto = new SysMenuDto();
-//
-//            dto.setId(m.getId());
-//            dto.setName(m.getPerms());
-//            dto.setTitle(m.getName());
-//            dto.setComponent(m.getComponent());
-//            dto.setPath(m.getPath());
-//
-//            if (m.getChildren().size() > 0) {
-//
-//                // 瀛愯妭鐐硅皟鐢ㄥ綋鍓嶆柟娉曡繘琛屽啀娆¤浆鎹�
-//                dto.setChildren(convert(m.getChildren()));
-//            }
-//
-//            menuDtos.add(dto);
-//        });
-//
-//        return menuDtos;
-//    }
-//
-//    private List<SysMenu> buildTreeMenu(List<SysMenu> menus) {
-//
-//        List<SysMenu> finalMenus = new ArrayList<>();
-//
-//        // 鍏堝悇鑷鎵惧埌鍚勮嚜鐨勫瀛�
-//        for (SysMenu menu : menus) {
-//
-//            for (SysMenu e : menus) {
-//                if (menu.getId() == e.getParentId()) {
-//                    menu.getChildren().add(e);
-//                }
-//            }
-//
-//            // 鎻愬彇鍑虹埗鑺傜偣
-//            if (menu.getParentId() == 0L) {
-//                finalMenus.add(menu);
-//            }
-//        }
-//
-//        System.out.println(JSONUtil.toJsonStr(finalMenus));
-//        return finalMenus;
-//    }
 
 }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java
index 8cb18bf..cb6da80 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java
@@ -1,20 +1,63 @@
 package com.mes.role.controller;
 
 
-import com.mes.base.BaseController;
+import com.mes.entity.request.GeneralRequest;
+import com.mes.role.entity.SysRole;
+import com.mes.role.entity.vo.SysRoleVO;
+import com.mes.role.service.SysRoleService;
+import com.mes.utils.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+
 /**
- * <p>
- * 瑙掕壊琛� 鍓嶇鎺у埗鍣�
- * </p>
- *
  * @author zhoush
  * @since 2024-04-11
  */
+@Api(description = "瑙掕壊绠$悊")
 @RestController
-@RequestMapping("/role/sys-role")
-public class SysRoleController extends BaseController {
-}
+@RequestMapping("/sys/role")
+public class SysRoleController {
 
+    @Autowired
+    private SysRoleService sysRoleService;
+
+    @ApiOperation("鏂板瑙掕壊鍙婅鑹蹭笅鐨勬潈闄愪俊鎭�")
+    @PostMapping("/saveRole")
+//    @PreAuthorize("hasAuthority('sys:role:save')")
+    public Result<SysRole> saveRole(@Validated @RequestBody SysRoleVO sysRoleVO) {
+        return Result.success(sysRoleService.saveRole(sysRoleVO));
+    }
+
+    @ApiOperation("缂栬緫瑙掕壊鍙婅鑹蹭笅鐨勬潈闄愪俊鎭�")
+    @PostMapping("/updateRole")
+//    @PreAuthorize("hasAuthority('sys:role:save')")
+    public Result<String> updateRole(@Validated @RequestBody SysRoleVO sysRoleVO) {
+        return Result.success(sysRoleService.updateRole(sysRoleVO));
+    }
+
+    @ApiOperation("鏌ヨ瑙掕壊鍙婅鑹蹭笅鐨勬潈闄愪俊鎭�")
+    @PostMapping("/queryRole")
+//    @PreAuthorize("hasAuthority('sys:role:save')")
+    public Result<List<SysRoleVO>> queryRole(@Validated @RequestBody GeneralRequest request) {
+        return Result.success(sysRoleService.queryRole(request));
+    }
+
+
+    @ApiOperation("鍒犻櫎瑙掕壊鍙婅鑹蹭笅鐨勬潈闄愪俊鎭�")
+    @PostMapping("/delete")
+//    @PreAuthorize("hasAuthority('sys:role:delete')")
+    @Transactional
+    public Result<String> deleteRole(@RequestBody List<Long> ids) {
+        return Result.success(sysRoleService.deleteRole(ids));
+    }
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/entity/SysRoleMenu.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/entity/SysRoleMenu.java
index e69af40..aae2aed 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/entity/SysRoleMenu.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/entity/SysRoleMenu.java
@@ -24,7 +24,7 @@
     /**
      * 瑙掕壊ID
      */
-    @TableId(value = "role_id", type = IdType.AUTO)
+    @TableId(type = IdType.NONE)
     private Long roleId;
 
     /**
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/entity/vo/SysRoleVO.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/entity/vo/SysRoleVO.java
new file mode 100644
index 0000000..45efd61
--- /dev/null
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/entity/vo/SysRoleVO.java
@@ -0,0 +1,44 @@
+package com.mes.role.entity.vo;
+
+import com.mes.menu.entity.SysMenu;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/4/26 13:57
+ * @Description:
+ */
+@Api(description = "瑙掕壊淇℃伅")
+@Data
+public class SysRoleVO implements Serializable {
+
+    @ApiModelProperty(hidden = true)
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "瑙掕壊ID", position = 2)
+    private Long id;
+
+    @ApiModelProperty(value = "瑙掕壊鍚嶇О", position = 3)
+    private String name;
+
+    @ApiModelProperty(value = "瑙掕壊鏉冮檺瀛楃涓�", position = 4)
+    private String roleKey;
+
+    @ApiModelProperty(value = "瑙掕壊鐘舵�侊紙0姝e父 1鍋滅敤锛�", position = 5)
+    private String status;
+
+    @ApiModelProperty(value = "鍒犻櫎鏍囧織", position = 6)
+    private Integer delFlag;
+
+    @ApiModelProperty(value = "澶囨敞", position = 7)
+    private String remark;
+
+    @ApiModelProperty(value = "瑙掕壊鑿滃崟淇℃伅", position = 8)
+    private List<SysMenu> menuList;
+
+}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMapper.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMapper.java
index 4a549d3..d9251c1 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMapper.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMapper.java
@@ -1,6 +1,6 @@
 package com.mes.role.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.role.entity.SysRole;
 import org.apache.ibatis.annotations.Mapper;
 
@@ -13,6 +13,6 @@
  * @since 2024-04-11
  */
 @Mapper
-public interface SysRoleMapper extends BaseMapper<SysRole> {
+public interface SysRoleMapper extends MPJBaseMapper<SysRole> {
 
 }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/SysRoleService.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/SysRoleService.java
index 6f89b19..9592106 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/SysRoleService.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/SysRoleService.java
@@ -1,7 +1,11 @@
 package com.mes.role.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.mes.entity.request.GeneralRequest;
 import com.mes.role.entity.SysRole;
+import com.mes.role.entity.vo.SysRoleVO;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +17,35 @@
  */
 public interface SysRoleService extends IService<SysRole> {
 
+    /**
+     * 鍒涘缓瑙掕壊淇℃伅
+     *
+     * @param sysRoleVO
+     * @return
+     */
+    SysRole saveRole(SysRoleVO sysRoleVO);
+
+    /**
+     * 淇敼瑙掕壊淇℃伅鍙婃潈闄�
+     *
+     * @param sysRoleVO
+     * @return
+     */
+    String updateRole(SysRoleVO sysRoleVO);
+
+    /**
+     * 鎸夌収瑙掕壊鍚嶆煡璇㈣鑹蹭俊鎭�
+     *
+     * @param request
+     * @return
+     */
+    List<SysRoleVO> queryRole(GeneralRequest request);
+
+    /**
+     * 鏌ヨ瑙掕壊鍙婅鑹蹭笅鐨勬潈闄愪俊鎭�
+     *
+     * @param ids
+     * @return
+     */
+    String deleteRole(List<Long> ids);
 }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java
index 5b78836..2d08603 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/service/impl/SysRoleServiceImpl.java
@@ -1,10 +1,28 @@
 package com.mes.role.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.mes.entity.request.GeneralRequest;
+import com.mes.menu.entity.SysMenu;
 import com.mes.role.entity.SysRole;
+import com.mes.role.entity.SysRoleMenu;
+import com.mes.role.entity.vo.SysRoleVO;
 import com.mes.role.mapper.SysRoleMapper;
+import com.mes.role.service.SysRoleMenuService;
 import com.mes.role.service.SysRoleService;
+import com.mes.userinfo.entity.SysUserRole;
+import com.mes.userinfo.service.SysUserRoleService;
+import com.mes.userinfo.service.SysUserService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
+
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -15,6 +33,91 @@
  * @since 2024-04-11
  */
 @Service
+@Slf4j
 public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements SysRoleService {
 
+    @Autowired
+    SysRoleMenuService sysRoleMenuService;
+
+    @Autowired
+    SysUserService sysUserService;
+
+    @Autowired
+    SysUserRoleService sysUserRoleService;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public SysRole saveRole(SysRoleVO sysRoleVO) {
+        log.info("淇濆瓨瑙掕壊淇℃伅锛岀敓鎴愬搴旂殑瑙掕壊id");
+        SysRole sysRole = new SysRole();
+        BeanUtils.copyProperties(sysRoleVO, sysRole);
+        this.save(sysRole);
+        //淇濆瓨瑙掕壊鏉冮檺淇℃伅
+        saveRoleMenu(sysRole.getId(), sysRoleVO.getMenuList());
+        return sysRole;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String updateRole(SysRoleVO sysRoleVO) {
+        log.info("淇濆瓨瑙掕壊淇℃伅锛岀敓鎴愬搴旂殑瑙掕壊id");
+        SysRole sysRole = new SysRole();
+        BeanUtils.copyProperties(sysRoleVO, sysRole);
+        this.updateById(sysRole);
+        //淇濆瓨瑙掕壊鏉冮檺淇℃伅
+        return saveRoleMenu(sysRole.getId(), sysRoleVO.getMenuList());
+    }
+
+    @Override
+    public List<SysRoleVO> queryRole(GeneralRequest request) {
+        MPJLambdaWrapper<SysRole> wrapper = new MPJLambdaWrapper<>();
+        wrapper.selectAll(SysRole.class)
+                .selectCollection(SysMenu.class, SysRoleVO::getMenuList)
+                .leftJoin(SysRoleMenu.class, SysRoleMenu::getRoleId, SysRole::getId)
+                .leftJoin(SysMenu.class, SysMenu::getId, SysRoleMenu::getMenuId)
+                .like(StringUtils.hasText(request.getKey()), SysRole::getName, request.getKey());
+        return baseMapper.selectJoinList(SysRoleVO.class, wrapper);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String deleteRole(List<Long> ids) {
+        log.info("鍒犻櫎瑙掕壊淇℃伅");
+        this.removeByIds(ids);
+
+        log.info("鍒犻櫎涓棿琛ㄤ俊鎭�");
+        sysUserRoleService.remove(new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getRoleId, ids));
+        sysRoleMenuService.remove(new LambdaQueryWrapper<SysRoleMenu>().in(SysRoleMenu::getRoleId, ids));
+
+        log.info("娓呯┖缂撳瓨涓殑鏉冮檺淇℃伅");
+        ids.stream().forEach(id -> sysUserService.clearUserAuthorityInfoByRoleId(id));
+        return "success";
+    }
+
+    /**
+     * 淇濆瓨瑙掕壊鏉冮檺淇℃伅
+     *
+     * @param roleId
+     * @param menuList
+     * @return
+     */
+    private String saveRoleMenu(Long roleId, List<SysMenu> menuList) {
+        log.info("閰嶇疆瑙掕壊鑿滃崟鍏冲績");
+        List<SysRoleMenu> roleMenuList = menuList.stream().map(menu -> {
+            SysRoleMenu roleMenu = new SysRoleMenu();
+            roleMenu.setRoleId(roleId);
+            roleMenu.setMenuId(menu.getId());
+            return roleMenu;
+        }).collect(Collectors.toList());
+        log.info("娓呯┖瑙掕壊鏉冮檺琛ㄤ腑璇ヨ鑹蹭俊鎭�");
+
+
+        // 鍏堝垹闄ゅ師鏉ョ殑璁板綍锛屽啀淇濆瓨鏂扮殑
+        sysRoleMenuService.remove(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, roleId));
+        sysRoleMenuService.saveBatch(roleMenuList);
+
+        // 鍒犻櫎缂撳瓨
+        sysUserService.clearUserAuthorityInfoByRoleId(roleId);
+        return "success";
+    }
 }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/controller/SysUserController.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/controller/SysUserController.java
index 727c0dc..2e0f357 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/controller/SysUserController.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/controller/SysUserController.java
@@ -1,13 +1,15 @@
 package com.mes.userinfo.controller;
 
 
-import com.mes.base.BaseController;
+import com.mes.entity.request.GeneralRequest;
 import com.mes.userinfo.entity.SysUser;
-import com.mes.userinfo.entity.request.UserRequest;
 import com.mes.userinfo.entity.vo.SysUserVO;
+import com.mes.userinfo.service.SysUserService;
 import com.mes.utils.Result;
-import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -25,10 +27,13 @@
  * @author zhoush
  * @since 2024-04-11
  */
-@ApiModel("鐢ㄦ埛淇℃伅")
+@Api(description = "鐢ㄦ埛绠$悊")
 @RestController
-@RequestMapping("/userinfo")
-public class SysUserController extends BaseController {
+@RequestMapping("/sys/user")
+public class SysUserController {
+
+    @Autowired
+    private SysUserService sysUserService;
 
     @ApiOperation("鐢ㄦ埛鐧诲綍")
     @PostMapping("/login")
@@ -38,6 +43,8 @@
 
     @ApiOperation("閫�鍑虹櫥褰�")
     @PostMapping("/logout")
+//    @PreAuthorize("hasRole('ROLE_admin')")
+    @PreAuthorize("hasAuthority('xt:yh')")
     public Result<String> logout() {
         return Result.success(sysUserService.logout());
     }
@@ -57,17 +64,18 @@
         return Result.success(sysUserService.updateUser(sysUser));
     }
 
+    @ApiOperation("閲嶇疆瀵嗙爜")
     @PostMapping("/resetPassword")
 //    @PreAuthorize("hasAuthority('sys:user:resetPassword')")
-    public Result resetPassword(@RequestBody Long userId) {
-        return Result.success(sysUserService.resetPassword(userId));
+    public Result resetPassword(String userId) {
+        return Result.success(sysUserService.resetPassword(Long.parseLong(userId)));
     }
 
 
     @ApiOperation("鑾峰彇鐢ㄦ埛鍒楄〃")
     @PostMapping("/listByUserName")
 //    @PreAuthorize("hasAuthority('sys:user:list')")
-    public Result<List<SysUserVO>> listByUserName(@RequestBody UserRequest request) {
+    public Result<List<SysUserVO>> listByUserName(@RequestBody GeneralRequest request) {
         return Result.success(sysUserService.listByUserName(request));
     }
 
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/SysUserRole.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/SysUserRole.java
index c6ff26f..9aa76b4 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/SysUserRole.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/SysUserRole.java
@@ -1,5 +1,7 @@
 package com.mes.userinfo.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -24,6 +26,7 @@
     /**
      * 鐢ㄦ埛id
      */
+    @TableId(type = IdType.NONE)
     private Long userId;
 
     /**
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/vo/SysUserVO.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/vo/SysUserVO.java
index 109ccfd..f43f8c7 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/vo/SysUserVO.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/vo/SysUserVO.java
@@ -1,7 +1,7 @@
 package com.mes.userinfo.entity.vo;
 
 import com.mes.role.entity.SysRole;
-import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -16,7 +16,7 @@
  * @author zhoush
  * @since 2024-04-11
  */
-@ApiModel(description = "<p> 鐢ㄦ埛淇℃伅 </p>")
+@Api(description = "鐢ㄦ埛淇℃伅")
 @Data
 public class SysUserVO implements Serializable {
 
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserRoleMapper.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserRoleMapper.java
index c40b16f..cfd9a6f 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserRoleMapper.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserRoleMapper.java
@@ -1,6 +1,6 @@
 package com.mes.userinfo.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.userinfo.entity.SysUserRole;
 import org.apache.ibatis.annotations.Mapper;
 
@@ -13,6 +13,6 @@
  * @since 2024-04-11
  */
 @Mapper
-public interface SysUserRoleMapper extends BaseMapper<SysUserRole> {
+public interface SysUserRoleMapper extends MPJBaseMapper<SysUserRole> {
 
 }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserRoleService.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserRoleService.java
index 0992b6c..9351f47 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserRoleService.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserRoleService.java
@@ -1,6 +1,6 @@
 package com.mes.userinfo.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.yulichang.base.MPJBaseService;
 import com.mes.userinfo.entity.SysUserRole;
 
 /**
@@ -11,6 +11,7 @@
  * @author zhoush
  * @since 2024-04-11
  */
-public interface SysUserRoleService extends IService<SysUserRole> {
+public interface SysUserRoleService extends MPJBaseService<SysUserRole> {
+
 
 }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserService.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserService.java
index 87cc2cd..467a88a 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserService.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserService.java
@@ -1,8 +1,8 @@
 package com.mes.userinfo.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.mes.entity.request.GeneralRequest;
 import com.mes.userinfo.entity.SysUser;
-import com.mes.userinfo.entity.request.UserRequest;
 import com.mes.userinfo.entity.vo.SysUserVO;
 
 import java.util.List;
@@ -60,10 +60,18 @@
     /**
      * 鎸夊悕绉拌幏鍙栫敤鎴蜂俊鎭�
      *
+     * @param userName
+     * @return
+     */
+    SysUser queryByUserName(String userName);
+
+    /**
+     * 鎸夊叧閿瓧鑾峰彇鐢ㄦ埛淇℃伅鍒楄〃
+     *
      * @param request
      * @return
      */
-    List<SysUserVO> listByUserName(UserRequest request);
+    List<SysUserVO> listByUserName(GeneralRequest request);
 
     /**
      * 鍒犻櫎鐢ㄦ埛淇℃伅
@@ -81,5 +89,22 @@
      */
     List<String> getUserAuthorityInfo(Long userId);
 
-    void clearUserAuthorityInfoByMenuId(Long userId);
+    /**
+     * 娓呯┖鐢ㄦ埛鏉冮檺淇℃伅閫氳繃鐢ㄦ埛淇℃伅
+     */
+    void clearUserAuthorityInfo(String userName);
+
+    /**
+     * 娓呯┖鐢ㄦ埛鏉冮檺淇℃伅閫氳繃瑙掕壊id
+     *
+     * @param roleId
+     */
+    void clearUserAuthorityInfoByRoleId(Long roleId);
+
+    /**
+     * 娓呯┖鐢ㄦ埛鏉冮檺淇℃伅閫氳繃鑿滃崟id
+     *
+     * @param menuId
+     */
+    void clearUserAuthorityInfoByMenuId(Long menuId);
 }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java
index c674fea..144ecd6 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java
@@ -1,5 +1,6 @@
 package com.mes.userinfo.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -7,13 +8,15 @@
 import com.mes.common.config.Const;
 import com.mes.common.utils.JwtUtil;
 import com.mes.common.utils.RedisUtil;
+import com.mes.common.utils.UserInfoUtils;
+import com.mes.entity.request.GeneralRequest;
 import com.mes.menu.mapper.SysMenuMapper;
 import com.mes.role.entity.SysRole;
+import com.mes.role.entity.SysRoleMenu;
 import com.mes.role.service.SysRoleService;
 import com.mes.userinfo.entity.LoginUser;
 import com.mes.userinfo.entity.SysUser;
 import com.mes.userinfo.entity.SysUserRole;
-import com.mes.userinfo.entity.request.UserRequest;
 import com.mes.userinfo.entity.vo.SysUserVO;
 import com.mes.userinfo.mapper.SysUserMapper;
 import com.mes.userinfo.service.SysUserRoleService;
@@ -21,10 +24,10 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.security.authentication.AuthenticationManager;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.core.userdetails.UserDetailsService;
 import org.springframework.security.core.userdetails.UsernameNotFoundException;
@@ -69,8 +72,12 @@
     @Resource
     BCryptPasswordEncoder passwordEncoder;
 
+    @Value("${test.common}")
+    private String value;
+
     @Override
     public Map<String, String> login(SysUser user) {
+        log.info(value);
         UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(user.getUserName(), user.getPassword());
         Authentication authenticate = authenticationManager.authenticate(authenticationToken);
         if (Objects.isNull(authenticate)) {
@@ -93,10 +100,9 @@
 
     @Override
     public String logout() {
-        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
-        LoginUser loginUser = (LoginUser) authentication.getPrincipal();
-        Long userid = loginUser.getUser().getId();
-        redisUtil.deleteObject("login:" + userid);
+        log.info("鐢ㄦ埛閫�鍑�");
+        SysUser user = UserInfoUtils.get();
+        redisUtil.deleteObject("login:" + user.getId());
         return "娉ㄩ攢鎴愬姛";
     }
 
@@ -122,10 +128,12 @@
         BeanUtils.copyProperties(user, sysUser);
         this.updateById(sysUser);
         log.info("鍒犻櫎鐢ㄦ埛瑙掕壊淇℃伅");
-        sysUserRoleService.removeByIds(user.getRoleList());
+        List<Long> roleIds = user.getRoleList().stream().map(SysRole::getId).collect(Collectors.toList());
+        sysUserRoleService.remove(new LambdaQueryWrapper<SysUserRole>()
+                .eq(SysUserRole::getUserId, sysUser.getId()).in(CollectionUtil.isNotEmpty(roleIds), SysUserRole::getRoleId, roleIds));
         log.info("淇濆瓨鐢ㄦ埛瑙掕壊淇℃伅");
         saveUserRole(user.getRoleList(), sysUser.getId());
-        return null;
+        return user;
     }
 
     @Override
@@ -140,13 +148,18 @@
     }
 
     @Override
-    public List<SysUserVO> listByUserName(UserRequest request) {
+    public SysUser queryByUserName(String userName) {
+        return baseMapper.selectOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUserName, userName));
+    }
+
+    @Override
+    public List<SysUserVO> listByUserName(GeneralRequest request) {
         MPJLambdaWrapper<SysUser> wrapper = new MPJLambdaWrapper<>();
         wrapper.selectAll(SysUser.class)
                 .selectCollection(SysRole.class, SysUserVO::getRoleList)
                 .leftJoin(SysUserRole.class, SysUserRole::getUserId, SysUser::getId)
                 .leftJoin(SysRole.class, SysRole::getId, SysUserRole::getRoleId)
-                .like(StringUtils.hasText(request.getUserName()), SysUser::getUserName, request.getUserName());
+                .like(StringUtils.hasText(request.getKey()), SysUser::getUserName, request.getKey());
         return baseMapper.selectJoinList(SysUserVO.class, wrapper);
     }
 
@@ -191,8 +204,31 @@
     }
 
     @Override
-    public void clearUserAuthorityInfoByMenuId(Long userId) {
+    public void clearUserAuthorityInfo(String userName) {
+        redisUtil.deleteObject("GrantedAuthority:" + userName);
+    }
 
+    @Override
+    public void clearUserAuthorityInfoByRoleId(Long roleId) {
+        List<SysUser> sysUsers = this.list(new QueryWrapper<SysUser>()
+                .inSql("id", "select user_id from sys_user_role where role_id = " + roleId));
+
+        sysUsers.forEach(u -> {
+            this.clearUserAuthorityInfo(u.getUserName());
+        });
+
+    }
+
+    @Override
+    public void clearUserAuthorityInfoByMenuId(Long menuId) {
+        MPJLambdaWrapper<SysUserRole> wrapper = new MPJLambdaWrapper<SysUserRole>().selectAll(SysUser.class).distinct()
+                .leftJoin(SysUser.class, SysUser::getId, SysUserRole::getUserId)
+                .leftJoin(SysRoleMenu.class, SysRoleMenu::getRoleId, SysUserRole::getRoleId)
+                .eq(SysRoleMenu::getMenuId, menuId);
+        List<SysUser> sysUsers = sysUserRoleService.selectJoinList(SysUser.class, wrapper);
+        sysUsers.forEach(u -> {
+            this.clearUserAuthorityInfo(u.getUserName());
+        });
     }
 
     /**
diff --git a/hangzhoumesParent/common/springsecurity/src/main/resources/application.yml b/hangzhoumesParent/common/springsecurity/src/main/resources/application.yml
index 90bf33d..70e7dec 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/resources/application.yml
+++ b/hangzhoumesParent/common/springsecurity/src/main/resources/application.yml
@@ -1,11 +1,25 @@
-server:
-  port: 8089
-spring:
-  profiles:
-    active: dev
-  application:
-    name: security
-mybatis-plus:
-  mapper-locations: classpath*:mapper/*.xml
-  configuration:
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
\ No newline at end of file
+#server:
+#  port: 8089
+#spring:
+#  datasource:
+#    driver-class-name: com.mysql.cj.jdbc.Driver
+#    url: jdbc:mysql://192.168.56.10:3306/hangzhoumes?serverTimezone=GMT%2b8&characterEncoding=utf-8&useSSL=false
+#    username: root
+#    password: root
+#  cloud:
+#    nacos:
+#      discovery:
+#        server-addr: 127.0.0.1:8848
+#  application:
+#    name: security
+#  redis:
+#    database: 0
+#    host: 127.0.0.1
+#    port: 6379
+#    password:
+#  session:
+#    store-type: redis
+#mybatis-plus:
+#  mapper-locations: classpath*:mapper/*.xml
+#  configuration:
+#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java
index 3e49ae0..dcd76c0 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java
@@ -3,17 +3,12 @@
 import com.mes.edgstoragecage.entity.EdgStorageCage;
 import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
 import com.mes.edgstoragecage.service.EdgStorageCageService;
-import com.mes.edgstoragecage.service.impl.EdgStorageCageServiceImpl;
-import com.mes.taskcache.entity.TaskCache;
-import com.mes.taskcache.service.impl.TaskCacheServiceImpl;
 import com.mes.utils.Result;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import java.awt.image.ImageProducer;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -25,7 +20,7 @@
  * @author zhoush
  * @since 2024-04-07
  */
-@Api(tags = "鐞嗙墖绗肩紦瀛�")
+@Api(description = "鐞嗙墖绗肩紦瀛�")
 @RestController
 @RequestMapping("/edgStorageCage")
 public class EdgStorageCageController {
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/glassinfo/controller/GlassInfoController.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/glassinfo/controller/GlassInfoController.java
index 78b491f..08fa5a6 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/glassinfo/controller/GlassInfoController.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/glassinfo/controller/GlassInfoController.java
@@ -10,10 +10,8 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.RestController;
-import com.mes.glassinfo.service.impl.GlassInfoServiceImpl;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * <p>
@@ -23,7 +21,7 @@
  * @author zhoush
  * @since 2024-04-07
  */
-@Api(tags = "鐜荤拑淇℃伅灏忕墖")
+@Api(description = "鐜荤拑淇℃伅灏忕墖")
 @RestController
 @RequestMapping("/glassInfo")
 public class GlassInfoController {
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java
index 85e1ef5..3995547 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java
@@ -12,7 +12,6 @@
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * <p>
@@ -22,7 +21,7 @@
  * @author zhoush
  * @since 2024-04-07
  */
-@Api(tags = "璇嗗埆鏄剧ず")
+@Api(description = "璇嗗埆鏄剧ず")
 @RestController
 @RequestMapping("/taskCache")
 public class TaskCacheController {
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
index d474358..90aaa1b 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
@@ -8,4 +8,4 @@
 mybatis-plus:
   mapper-locations: classpath*:mapper/*.xml
   configuration:
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
\ No newline at end of file
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageController.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageController.java
index 9595d77..2564546 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageController.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageController.java
@@ -2,7 +2,7 @@
 
 import com.mes.bigstorage.entity.BigStorageCage;
 import com.mes.bigstorage.service.BigStorageCageService;
-import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -19,7 +19,7 @@
  * @author zhoush
  * @since 2024-03-27
  */
-@ApiModel("鐞嗙墖绗间俊鎭�")
+@Api(description = "鐞嗙墖绗间俊鎭�")
 @RestController
 @RequestMapping("/bigStorageCage")
 public class BigStorageCageController {
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
index 4041b1e..2b003c0 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
@@ -3,10 +3,9 @@
 
 import com.mes.bigstorage.entity.BigStorageCageDetails;
 import com.mes.bigstorage.service.BigStorageCageDetailsService;
-import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
@@ -21,7 +20,7 @@
  * @author zhoush
  * @since 2024-03-27
  */
-@ApiModel(description = "鐞嗙墖绗艰鎯�")
+@Api(description = "鐞嗙墖绗艰鎯�")
 @RestController
 @RequestMapping("/bigStorageCageDetails")
 public class BigStorageCageDetailsController {
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCage.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCage.java
index ddc77a0..5c89cc9 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCage.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCage.java
@@ -3,7 +3,7 @@
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
-import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -19,7 +19,7 @@
  * @author zhoush
  * @since 2024-03-27
  */
-@ApiModel(description = "<p> 澶х悊鐗囩 </p>")
+@Api(description = "澶х悊鐗囩")
 @Data
 @EqualsAndHashCode(callSuper = false)
 public class BigStorageCage implements Serializable {
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java
index fc9c3e0..4788f9b 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java
@@ -2,22 +2,22 @@
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
-import java.io.Serializable;
-
-import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.io.Serializable;
+
 /**
  * <p>
- * 
+ *
  * </p>
  *
  * @author zhoush
  * @since 2024-03-27
  */
-@ApiModel(description = "<p> 澶х悊鐗囩璇︽儏 </p>")
+@Api(description = "澶х悊鐗囩璇︽儏")
 @Data
 @EqualsAndHashCode(callSuper = false)
 public class BigStorageCageDetails implements Serializable {
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageFeedTaskController.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageFeedTaskController.java
index d84d57b..332c237 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageFeedTaskController.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageFeedTaskController.java
@@ -3,7 +3,7 @@
 
 import com.mes.bigstoragetask.entity.BigStorageCageFeedTask;
 import com.mes.bigstoragetask.service.BigStorageCageFeedTaskService;
-import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -20,7 +20,7 @@
  * @author zhoush
  * @since 2024-04-16
  */
-@ApiModel("杩涚墖浠诲姟淇℃伅")
+@Api(description = "杩涚墖浠诲姟淇℃伅")
 @RestController
 @RequestMapping("/big-storage-cage-feed-task")
 public class BigStorageCageFeedTaskController {
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageOutTaskController.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageOutTaskController.java
index d98ee38..dbdc794 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageOutTaskController.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/controller/BigStorageCageOutTaskController.java
@@ -3,7 +3,7 @@
 
 import com.mes.bigstoragetask.entity.BigStorageCageOutTask;
 import com.mes.bigstoragetask.service.BigStorageCageOutTaskService;
-import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -20,7 +20,7 @@
  * @author zhoush
  * @since 2024-04-16
  */
-@ApiModel("鍑虹墖浠诲姟淇℃伅")
+@Api(description = "鍑虹墖浠诲姟淇℃伅")
 @RestController
 @RequestMapping("/big-storage-cage-out-task")
 public class BigStorageCageOutTaskController {
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml
index 94840e1..c4f2565 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml
@@ -8,4 +8,7 @@
 mybatis-plus:
   mapper-locations: classpath*:mapper/*.xml
   configuration:
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
\ No newline at end of file
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+
+test:
+  common: 123789
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/test/java/com/mes/ApplicationTest.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/test/java/com/mes/ApplicationTest.java
index 9f636a1..dfb7a0b 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/test/java/com/mes/ApplicationTest.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/test/java/com/mes/ApplicationTest.java
@@ -1,7 +1,11 @@
 package com.mes;
 
+import com.mes.common.utils.UserInfoUtils;
+import com.mes.menu.entity.SysMenu;
+import com.mes.menu.service.SysMenuService;
 import com.mes.pp.entity.OptimizeDetail;
 import com.mes.pp.service.OptimizeDetailService;
+import com.mes.userinfo.entity.SysUser;
 import lombok.extern.slf4j.Slf4j;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -25,6 +29,18 @@
     @Resource
     OptimizeDetailService optimizationDetailService;
 
+    @Resource
+    SysMenuService service;
+
+    @Test
+    public void test1() {
+        SysUser user = new SysUser();
+        user.setId(1l);
+        UserInfoUtils.set(user);
+        List<SysMenu> menuTree = service.getMenuTree(null);
+        System.out.println("鑾峰彇璁板綍鏁帮細" + menuTree);
+    }
+
     @Test
     public void test() {
         List<OptimizeDetail> list = optimizationDetailService.list();
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/controller/DownStorageCageDetailsController.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/controller/DownStorageCageDetailsController.java
index 17a62f7..601786c 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/controller/DownStorageCageDetailsController.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/controller/DownStorageCageDetailsController.java
@@ -11,7 +11,7 @@
 
 import java.util.List;
 import java.util.Map;
-@Api(tags = "缂撳瓨")
+@Api(description = "缂撳瓨")
 @RestController
 @RequestMapping("/downStorage")
 public class DownStorageCageDetailsController {
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/DownStorageCage.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/DownStorageCage.java
index 1617790..795e921 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/DownStorageCage.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/DownStorageCage.java
@@ -2,7 +2,7 @@
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
-import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -17,7 +17,7 @@
  * @author zhoush
  * @since 2024-03-27
  */
-@ApiModel(description = "<p> 缂撳瓨</p>")
+@Api(description = "缂撳瓨")
 @Data
 @EqualsAndHashCode(callSuper = false)
 public class DownStorageCage implements Serializable {
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java
index eee88eb..6b0b547 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java
@@ -25,7 +25,7 @@
  */
 
 @RestController
-@Api(tags = "宸ヤ綅")
+@Api(description = "宸ヤ綅")
 @RequestMapping("/downWorkStation")
 public class DownWorkstationController {
 

--
Gitblit v1.8.0