he2802 2 년 전
부모
커밋
a980bca1c0

+ 17 - 17
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/system/SuperSysLoginController.java

@@ -113,21 +113,21 @@ public class SuperSysLoginController
         return AjaxResult.success(menuService.buildMenus(menus));
     }
 
-    /**
-     * 获取子系统令牌
-     *
-     * @return 获取子系统令牌
-     */
-    @ApiOperation("获取子系统令牌")
-    @GetMapping("getChildToken")
-    public AjaxResult getChildToken()
-    {
-        //普通系统用户
-        TopSysUser user = userService.selectUserByUserName("admin");
-        TopLoginUser loginUser = new TopLoginUser(user, permissionService.getMenuPermission(user));
-        String token = tokenService.createTopToken(loginUser);
-        AjaxResult ajax = AjaxResult.success();
-        ajax.put(Constants.TOKEN, token);
-        return ajax;
-    }
+//    /**
+//     * 获取子系统令牌
+//     *
+//     * @return 获取子系统令牌
+//     */
+//    @ApiOperation("获取子系统令牌")
+//    @GetMapping("getChildToken")
+//    public AjaxResult getChildToken()
+//    {
+//        //普通系统用户
+//        TopSysUser user = userService.selectUserByUserName("admin");
+//        TopLoginUser loginUser = new TopLoginUser(user, permissionService.getMenuPermission(user));
+//        String token = tokenService.createToken(loginUser);
+//        AjaxResult ajax = AjaxResult.success();
+//        ajax.put(Constants.TOKEN, token);
+//        return ajax;
+//    }
 }

+ 6 - 6
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/top/TopSysMenuController.java

@@ -7,11 +7,11 @@ import com.zhongzheng.common.constant.Constants;
 import com.zhongzheng.common.constant.UserConstants;
 import com.zhongzheng.common.core.controller.BaseController;
 import com.zhongzheng.common.core.domain.AjaxResult;
-import com.zhongzheng.common.core.domain.model.LoginUser;
+import com.zhongzheng.common.core.domain.model.TopLoginUser;
 import com.zhongzheng.common.enums.BusinessType;
 import com.zhongzheng.common.utils.SecurityUtils;
 import com.zhongzheng.common.utils.ServletUtils;
-import com.zhongzheng.framework.web.service.TokenService;
+import com.zhongzheng.framework.web.service.TopTokenService;
 import com.zhongzheng.modules.top.domain.TopSysMenu;
 import com.zhongzheng.modules.top.service.ITopSysMenuService;
 import io.swagger.annotations.Api;
@@ -39,7 +39,7 @@ public class TopSysMenuController extends BaseController {
     private ITopSysMenuService topMenuService;
 
     @Autowired
-    private TokenService tokenService;
+    private TopTokenService tokenService;
 
     /**
      * 获取菜单列表
@@ -49,7 +49,7 @@ public class TopSysMenuController extends BaseController {
     @GetMapping("/list")
     public AjaxResult list(TopSysMenu menu)
     {
-        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        TopLoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         Long userId = loginUser.getUser().getUserId();
         List<TopSysMenu> menus = topMenuService.selectMenuList(menu, userId);
         return AjaxResult.success(menus);
@@ -74,7 +74,7 @@ public class TopSysMenuController extends BaseController {
     @GetMapping("/treeselect")
     public AjaxResult treeselect(TopSysMenu menu)
     {
-        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        TopLoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         Long userId = loginUser.getUser().getUserId();
         List<TopSysMenu> menus = topMenuService.selectMenuList(menu, userId);
         return AjaxResult.success(topMenuService.buildMenuTreeSelect(menus));
@@ -87,7 +87,7 @@ public class TopSysMenuController extends BaseController {
     @GetMapping(value = "/roleMenuTreeselect/{roleId}")
     public AjaxResult roleMenuTreeselect(@PathVariable("roleId") Long roleId)
     {
-        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        TopLoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         List<TopSysMenu> menus = topMenuService.selectMenuList(loginUser.getUser().getUserId());
         AjaxResult ajax = AjaxResult.success();
         ajax.put("checkedKeys", topMenuService.selectMenuListByRoleId(roleId));

+ 4 - 4
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/top/TopSysRoleController.java

@@ -12,8 +12,8 @@ import com.zhongzheng.common.enums.BusinessType;
 import com.zhongzheng.common.utils.SecurityUtils;
 import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.common.utils.poi.ExcelUtil;
-import com.zhongzheng.framework.web.service.TokenService;
 import com.zhongzheng.framework.web.service.TopSysPermissionService;
+import com.zhongzheng.framework.web.service.TopTokenService;
 import com.zhongzheng.modules.top.domain.TopSysRole;
 import com.zhongzheng.modules.top.service.ITopSysRoleService;
 import com.zhongzheng.modules.top.service.ITopSysUserService;
@@ -42,7 +42,7 @@ public class TopSysRoleController extends BaseController {
     private ITopSysRoleService topSysRoleService;
 
     @Autowired
-    private TokenService tokenService;
+    private TopTokenService tokenService;
 
     @Autowired
     private TopSysPermissionService topSysPermissionService;
@@ -128,12 +128,12 @@ public class TopSysRoleController extends BaseController {
         if (topSysRoleService.updateRole(role) > 0)
         {
             // 更新缓存用户权限
-            TopLoginUser loginUser = tokenService.getTopLoginUser(ServletUtils.getRequest());
+            TopLoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
             if (Validator.isNotNull(loginUser.getUser()) && !loginUser.getUser().isAdmin())
             {
                 loginUser.setPermissions(topSysPermissionService.getMenuPermission(loginUser.getUser()));
                 loginUser.setUser(topSysUserService.selectUserByUserName(loginUser.getUser().getUserName()));
-                tokenService.setTopLoginUser(loginUser);
+                tokenService.setLoginUser(loginUser);
             }
             return AjaxResult.success();
         }

+ 4 - 4
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/top/TopSysUserController.java

@@ -17,7 +17,7 @@ import com.zhongzheng.common.utils.SecurityUtils;
 import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.common.utils.ToolsUtils;
 import com.zhongzheng.common.utils.poi.ExcelUtil;
-import com.zhongzheng.framework.web.service.TokenService;
+import com.zhongzheng.framework.web.service.TopTokenService;
 import com.zhongzheng.modules.course.bo.CourseBusinessQueryBo;
 import com.zhongzheng.modules.top.domain.TopSysRole;
 import com.zhongzheng.modules.top.service.ITopSysPostService;
@@ -58,7 +58,7 @@ public class TopSysUserController extends BaseController
     private ITopSysPostService topSysPostService;
 
     @Autowired
-    private TokenService tokenService;
+    private TopTokenService tokenService;
 
     @Resource
     private AuthenticationManager authenticationManager;
@@ -177,7 +177,7 @@ public class TopSysUserController extends BaseController
         }
         TopSysUser user = BeanUtil.toBean(bo, TopSysUser.class);
         topSysUserService.checkUserAllowed(user);
-        TopLoginUser loginUser = tokenService.getTopLoginUser(ServletUtils.getRequest());
+        TopLoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         if(!loginUser.getUser().isAdmin()&& !loginUser.getUser().getUserId().equals(user.getUserId())){
             return AjaxResult.error("您无权限修改本信息");
         }
@@ -224,7 +224,7 @@ public class TopSysUserController extends BaseController
                 // 更新缓存用户
                 loginUser.setUser(newUser);
             }
-            tokenService.setTopLoginUser(loginUser);
+            tokenService.setLoginUser(loginUser);
         }
         return toAjax(result);
     }

+ 1 - 1
zhongzheng-admin-saas/src/main/resources/application-dev.yml

@@ -16,7 +16,7 @@ spring:
                 #数据源
                 master:
                     driver-class-name: com.mysql.cj.jdbc.Driver
-                    url: jdbc:mysql://192.168.1.222:3306/zz_edu_sass_top?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
+                    url: jdbc:mysql://192.168.1.222:3306/zz_edu_saas_top?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
                     username: root
                     password: zhongzheng2021
                 #数据源

+ 3 - 3
zhongzheng-admin/src/main/resources/application-dev.yml

@@ -10,19 +10,19 @@ spring:
             connection-init-sql: set names utf8mb4
         #动态数据源配置
         dynamic:
-            primary: master #设置默认的数据源或者数据源组,默认值即为master
+            primary: slave #设置默认的数据源或者数据源组,默认值即为master
             strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候会抛出异常,不启动则使用默认数据源.
             datasource:
                 #数据源
                 master:
                     driver-class-name: com.mysql.cj.jdbc.Driver
-                    url: jdbc:mysql://192.168.1.222:3306/zz_edu_saas?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
+                    url: jdbc:mysql://192.168.1.222:3306/zz_edu_saas_top?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
                     username: root
                     password: zhongzheng2021
                 #数据源
                 slave:
                     driver-class-name: com.mysql.cj.jdbc.Driver
-                    url: jdbc:mysql://192.168.1.222:3306/zz_edu_sass_top?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
+                    url: jdbc:mysql://192.168.1.222:3306/zz_edu_saas?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
                     username: root
                     password: zhongzheng2021
 #    datasource:

+ 3 - 3
zhongzheng-api/src/main/resources/application-dev.yml

@@ -10,19 +10,19 @@ spring:
             connection-init-sql: set names utf8mb4
         #动态数据源配置
         dynamic:
-            primary: master #设置默认的数据源或者数据源组,默认值即为master
+            primary: slave #设置默认的数据源或者数据源组,默认值即为master
             strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候会抛出异常,不启动则使用默认数据源.
             datasource:
                 #数据源
                 master:
                     driver-class-name: com.mysql.cj.jdbc.Driver
-                    url: jdbc:mysql://192.168.1.222:3306/zz_edu_saas?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
+                    url: jdbc:mysql://192.168.1.222:3306/zz_edu_saas_top?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
                     username: root
                     password: zhongzheng2021
                 #数据源
                 slave:
                     driver-class-name: com.mysql.cj.jdbc.Driver
-                    url: jdbc:mysql://192.168.1.222:3306/zz_edu_sass_top?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
+                    url: jdbc:mysql://192.168.1.222:3306/zz_edu_saas?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true
                     username: root
                     password: zhongzheng2021
 #    datasource:

+ 1 - 1
zhongzheng-common/src/main/java/com/zhongzheng/common/constant/Constants.java

@@ -89,7 +89,7 @@ public class Constants
     /**
      * 超级管理员令牌前缀
      */
-    public static final String SUPER_TOKEN_PREFIX = "BearerSuper ";
+    public static final String SUPER_TOKEN_PREFIX = "Bearer ";
 
     /**
      * 微信令牌前缀

+ 13 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/SecurityUtils.java

@@ -122,4 +122,17 @@ public class SecurityUtils
         return user != null && "admin".equals(user.getUser().getUserName());
      //   return userId != null && 1L == userId;
     }
+
+    /**
+     * 是否为管理员
+     *
+     * @param userId 用户ID
+     * @return 结果
+     */
+    public static boolean isTopAdmin(Long userId)
+    {
+        TopLoginUser user= (TopLoginUser) getAuthentication().getPrincipal();
+        return user != null && "admin".equals(user.getUser().getUserName());
+        //   return userId != null && 1L == userId;
+    }
 }

+ 17 - 1
zhongzheng-framework/src/main/java/com/zhongzheng/framework/config/SecurityConfig.java

@@ -3,12 +3,14 @@ package com.zhongzheng.framework.config;
 import com.zhongzheng.framework.security.filter.JwtAuthenticationTokenFilter;
 import com.zhongzheng.framework.security.handle.AuthenticationEntryPointImpl;
 import com.zhongzheng.framework.security.handle.LogoutSuccessHandlerImpl;
+import com.zhongzheng.framework.security.handle.TopLogoutSuccessHandlerImpl;
 import com.zhongzheng.framework.web.service.TopUserDetailsServiceImpl;
 import com.zhongzheng.framework.web.service.UserDetailsServiceImpl;
 import de.codecentric.boot.admin.server.config.AdminServerProperties;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.http.HttpMethod;
 import org.springframework.security.authentication.AuthenticationManager;
 import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
@@ -51,8 +53,16 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
      * 退出处理类
      */
     @Autowired
+    @Lazy
     private LogoutSuccessHandlerImpl logoutSuccessHandler;
 
+    /**
+     * 总平台退出处理类
+     */
+    @Autowired
+    @Lazy
+    private TopLogoutSuccessHandlerImpl topLogoutSuccessHandlerImpl;
+
     /**
      * token认证过滤器
      */
@@ -146,7 +156,13 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                 .anyRequest().authenticated()
                 .and()
                 .headers().frameOptions().disable();
-        httpSecurity.logout().logoutUrl("/logout").logoutSuccessHandler(logoutSuccessHandler);
+        if(enabledTenant){
+            //开启多租户
+            httpSecurity.logout().logoutUrl("/logout").logoutSuccessHandler(logoutSuccessHandler);
+        }else{
+            httpSecurity.logout().logoutUrl("/logout").logoutSuccessHandler(topLogoutSuccessHandlerImpl);
+        }
+
         // 添加JWT filter
         httpSecurity.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class);
         // 添加CORS filter

+ 54 - 0
zhongzheng-framework/src/main/java/com/zhongzheng/framework/security/handle/TopLogoutSuccessHandlerImpl.java

@@ -0,0 +1,54 @@
+package com.zhongzheng.framework.security.handle;
+
+import cn.hutool.core.lang.Validator;
+import cn.hutool.http.HttpStatus;
+import com.alibaba.fastjson.JSON;
+import com.zhongzheng.common.constant.Constants;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.domain.model.TopLoginUser;
+import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.framework.manager.AsyncManager;
+import com.zhongzheng.framework.manager.factory.AsyncFactory;
+import com.zhongzheng.framework.web.service.TopTokenService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ * 自定义退出处理类 返回成功
+ * 
+ * @author zhongzheng
+ */
+@Configuration
+public class TopLogoutSuccessHandlerImpl implements LogoutSuccessHandler
+{
+    @Autowired
+    private TopTokenService tokenService;
+
+    /**
+     * 退出处理
+     * 
+     * @return
+     */
+    @Override
+    public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication)
+            throws IOException, ServletException
+    {
+            TopLoginUser loginUser = tokenService.getLoginUser(request);
+            if (Validator.isNotNull(loginUser))
+            {
+                String userName = loginUser.getUsername();
+                // 删除用户缓存记录
+                tokenService.delLoginUser(loginUser.getToken());
+                // 记录用户退出日志
+                AsyncManager.me().execute(AsyncFactory.recordLogininfor(userName, Constants.LOGOUT, "退出成功"));
+            }
+        ServletUtils.renderString(response, JSON.toJSONString(AjaxResult.error(HttpStatus.HTTP_OK, "退出成功")));
+    }
+}

+ 0 - 109
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/TokenService.java

@@ -6,7 +6,6 @@ import cn.hutool.http.useragent.UserAgent;
 import cn.hutool.http.useragent.UserAgentUtil;
 import com.zhongzheng.common.constant.Constants;
 import com.zhongzheng.common.core.domain.model.LoginUser;
-import com.zhongzheng.common.core.domain.model.TopLoginUser;
 import com.zhongzheng.common.core.redis.RedisCache;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.exception.user.UserPasswordNotMatchException;
@@ -92,33 +91,6 @@ public class TokenService
         return null;
     }
 
-    /**
-     * 获取用户身份信息
-     *
-     * @return 用户信息
-     */
-    public TopLoginUser getTopLoginUser(HttpServletRequest request)  {
-        //测试用户
-        String test_token = request.getHeader("X-Auth-Token");
-        if("test".equals(test_token)){
-            return getTestTopUser();
-        }
-        // 获取请求携带的令牌
-        String token = getToken(request);
-        if (Validator.isNotEmpty(token))
-        {
-            String uuid = "";
-            Claims claims = parseToken(token);
-            // 解析对应的权限以及用户信息
-            uuid = (String) claims.get(Constants.LOGIN_USER_KEY);
-            String userKey = getTokenKey(uuid);
-            TopLoginUser user = redisCache.getCacheObject(userKey);
-            return user;
-        }
-
-        return null;
-    }
-
     private LoginUser getTestUser(){
         Authentication authentication = null;
         try
@@ -145,32 +117,6 @@ public class TokenService
         return loginUser;
     }
 
-    private TopLoginUser getTestTopUser(){
-        Authentication authentication = null;
-        try
-        {
-            // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername
-            authentication = authenticationManager
-                    .authenticate(new UsernamePasswordAuthenticationToken("admin", "admin123"));
-        }
-        catch (Exception e)
-        {
-            if (e instanceof BadCredentialsException)
-            {
-                AsyncManager.me().execute(AsyncFactory.recordLogininfor("admin", Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
-                throw new UserPasswordNotMatchException();
-            }
-            else
-            {
-                AsyncManager.me().execute(AsyncFactory.recordLogininfor("admin", Constants.LOGIN_FAIL, e.getMessage()));
-                throw new CustomException(e.getMessage());
-            }
-        }
-        TopLoginUser loginUser = (TopLoginUser) authentication.getPrincipal();
-        loginUser.setExpireTime(System.currentTimeMillis()+200);
-        return loginUser;
-    }
-
     /**
      * 设置用户身份信息
      */
@@ -182,17 +128,6 @@ public class TokenService
         }
     }
 
-    /**
-     * 设置用户身份信息
-     */
-    public void setTopLoginUser(TopLoginUser loginUser)
-    {
-        if (Validator.isNotNull(loginUser) && Validator.isNotEmpty(loginUser.getToken()))
-        {
-            refreshTopToken(loginUser);
-        }
-    }
-
     /**
      * 删除用户身份信息
      */
@@ -223,23 +158,6 @@ public class TokenService
         return createToken(claims);
     }
 
-    /**
-     * 创建令牌
-     *
-     * @param loginUser 用户信息
-     * @return 令牌
-     */
-    public String createTopToken(TopLoginUser loginUser)
-    {
-        String token = IdUtil.fastUUID();
-        loginUser.setToken(token);
-        setTopUserAgent(loginUser);
-        refreshTopToken(loginUser);
-
-        Map<String, Object> claims = new HashMap<>();
-        claims.put(Constants.LOGIN_USER_KEY, token);
-        return createToken(claims);
-    }
 
     /**
      * 验证令牌有效期,相差不足20分钟,自动刷新缓存
@@ -271,19 +189,6 @@ public class TokenService
         redisCache.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES);
     }
 
-    /**
-     * 刷新令牌有效期
-     *
-     * @param loginUser 登录信息
-     */
-    public void refreshTopToken(TopLoginUser loginUser)
-    {
-        loginUser.setLoginTime(System.currentTimeMillis());
-        loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE);
-        // 根据uuid将loginUser缓存
-        String userKey = getTokenKey(loginUser.getToken());
-        redisCache.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES);
-    }
 
     /**
      * 设置用户代理信息
@@ -300,20 +205,6 @@ public class TokenService
         loginUser.setOs(userAgent.getOs().getName());
     }
 
-    /**
-     * 设置用户代理信息
-     *
-     * @param loginUser 登录信息
-     */
-    public void setTopUserAgent(TopLoginUser loginUser)
-    {
-        UserAgent userAgent = UserAgentUtil.parse(ServletUtils.getRequest().getHeader("User-Agent"));
-        String ip = IpUtils.getIpAddr(ServletUtils.getRequest());
-        loginUser.setIpaddr(ip);
-        loginUser.setLoginLocation(AddressUtils.getRealAddressByIP(ip));
-        loginUser.setBrowser(userAgent.getBrowser().getName());
-        loginUser.setOs(userAgent.getOs().getName());
-    }
 
     /**
      * 从数据声明生成令牌

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/service/impl/TopSysMenuServiceImpl.java

@@ -106,7 +106,7 @@ public class TopSysMenuServiceImpl extends ServiceImpl<TopSysMenuMapper, TopSysM
     @Override
     public List<TopSysMenu> selectMenuTreeByUserId(Long userId) {
         List<TopSysMenu> menus = null;
-        if (SecurityUtils.isAdmin(userId)) {
+        if (SecurityUtils.isTopAdmin(userId)) {
             menus = baseMapper.selectMenuTreeAll();
         } else {
             menus = baseMapper.selectMenuTreeByUserId(userId);