refactor: 包结构优化

This commit is contained in:
hxr
2024-01-21 14:07:16 +08:00
parent dd5e92b6ad
commit 3b6dbf8f65
42 changed files with 67 additions and 99 deletions

View File

@@ -28,7 +28,7 @@
基于 JDK 17、Spring Boot 3、Spring Security 6、JWT、Redis、Mybatis-Plus、Knife4j、Vue 3、Element-Plus 构建的前后端分离单体权限管理系统。 基于 JDK 17、Spring Boot 3、Spring Security 6、JWT、Redis、Mybatis-Plus、Knife4j、Vue 3、Element-Plus 构建的前后端分离单体权限管理系统。
- **🚀 开发框架**: 使用 Spring Boot 3.0 和 Vue 3以及 Element-Plus 等主流技术栈,实时更新。 - **🚀 开发框架**: 使用 Spring Boot 3 和 Vue 3以及 Element-Plus 等主流技术栈,实时更新。
- **🔐 安全认证**: 结合 Spring Security 和 JWT 提供安全、无状态、分布式友好的身份验证和授权机制。 - **🔐 安全认证**: 结合 Spring Security 和 JWT 提供安全、无状态、分布式友好的身份验证和授权机制。
@@ -75,14 +75,15 @@ youlai-boot
├── plugin # 插件(可选) ├── plugin # 插件(可选)
├── captcha # 验证码插件,用于生成验证码 ├── captcha # 验证码插件,用于生成验证码
├── dupsubmit # 防重提交插件,用于防止表单重复提交 ├── dupsubmit # 防重提交插件,用于防止表单重复提交
├── mybatis # Mybatis 插件,数据权限、字段填充
├── easyexcel # EasyExcel 插件Excel 文件的读写 ├── easyexcel # EasyExcel 插件Excel 文件的读写
├── rabbitmq # RabbitMQ 插件,消息队列交互
├── websocket # WebSocket 插件,实时双向通信
├── xxljob # XXL-JOB 插件,分布式任务调度和执行 ├── xxljob # XXL-JOB 插件,分布式任务调度和执行
├── service # 业务逻辑层 ├── security # Spring Security 安全配置和扩展
├── util # 工具类 ├── util # 工具类
├── JwtUtils # JWT 工具类 ├── JwtUtils # JWT 工具类,用于生成和解析 JWT
├── SecurityUtils # Spring Security 工具类 ├── SecurityUtils # Spring Security 工具类,用于获取当前登录用户
├── service # 业务逻辑层
└── end └── end
``` ```

View File

@@ -1,4 +1,4 @@
package com.youlai.system.enums; package com.youlai.system.common.enums;
/** /**
* EasyCaptcha 验证码类型枚举 * EasyCaptcha 验证码类型枚举

View File

@@ -1,4 +1,4 @@
package com.youlai.system.enums; package com.youlai.system.common.enums;
import com.youlai.system.common.base.IBaseEnum; import com.youlai.system.common.base.IBaseEnum;
import lombok.Getter; import lombok.Getter;

View File

@@ -1,4 +1,4 @@
package com.youlai.system.enums; package com.youlai.system.common.enums;
import com.youlai.system.common.base.IBaseEnum; import com.youlai.system.common.base.IBaseEnum;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;

View File

@@ -1,4 +1,4 @@
package com.youlai.system.enums; package com.youlai.system.common.enums;
import com.baomidou.mybatisplus.annotation.EnumValue; import com.baomidou.mybatisplus.annotation.EnumValue;
import com.youlai.system.common.base.IBaseEnum; import com.youlai.system.common.base.IBaseEnum;

View File

@@ -1,4 +1,4 @@
package com.youlai.system.enums; package com.youlai.system.common.enums;
import com.youlai.system.common.base.IBaseEnum; import com.youlai.system.common.base.IBaseEnum;
import lombok.Getter; import lombok.Getter;

View File

@@ -1,5 +1,5 @@
package com.youlai.system.util; package com.youlai.system.common.util;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;

View File

@@ -1,4 +1,4 @@
package com.youlai.system.util; package com.youlai.system.common.util;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.youlai.system.plugin.easyexcel.MyAnalysisEventListener; import com.youlai.system.plugin.easyexcel.MyAnalysisEventListener;

View File

@@ -1,4 +1,4 @@
package com.youlai.system.util; package com.youlai.system.common.util;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.youlai.system.common.result.IResultCode; import com.youlai.system.common.result.IResultCode;

View File

@@ -5,8 +5,8 @@ import com.baomidou.mybatisplus.core.config.GlobalConfig;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.DataPermissionInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.DataPermissionInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.youlai.system.core.mybatis.handler.MyDataPermissionHandler; import com.youlai.system.plugin.mybatis.handler.MyDataPermissionHandler;
import com.youlai.system.core.mybatis.handler.MyMetaObjectHandler; import com.youlai.system.plugin.mybatis.handler.MyMetaObjectHandler;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.annotation.EnableTransactionManagement;

View File

@@ -1,8 +1,8 @@
package com.youlai.system.config; package com.youlai.system.config;
import com.youlai.system.common.constant.SecurityConstants; import com.youlai.system.common.constant.SecurityConstants;
import com.youlai.system.core.security.exception.MyAccessDeniedHandler; import com.youlai.system.security.exception.MyAccessDeniedHandler;
import com.youlai.system.core.security.exception.MyAuthenticationEntryPoint; import com.youlai.system.security.exception.MyAuthenticationEntryPoint;
import com.youlai.system.filter.JwtTokenFilter; import com.youlai.system.filter.JwtTokenFilter;
import com.youlai.system.filter.VerifyCodeFilter; import com.youlai.system.filter.VerifyCodeFilter;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;

View File

@@ -1,7 +1,7 @@
package com.youlai.system.config; package com.youlai.system.config;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.youlai.system.util.JwtUtils; import com.youlai.system.security.util.JwtUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;

View File

@@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.youlai.system.common.result.PageResult; import com.youlai.system.common.result.PageResult;
import com.youlai.system.common.result.Result; import com.youlai.system.common.result.Result;
import com.youlai.system.util.ExcelUtils; import com.youlai.system.common.util.ExcelUtils;
import com.youlai.system.plugin.dupsubmit.annotation.PreventDuplicateSubmit; import com.youlai.system.plugin.dupsubmit.annotation.PreventDuplicateSubmit;
import com.youlai.system.plugin.easyexcel.UserImportListener; import com.youlai.system.plugin.easyexcel.UserImportListener;
import com.youlai.system.model.vo.UserImportVO; import com.youlai.system.model.vo.UserImportVO;

View File

@@ -23,7 +23,7 @@ import org.mapstruct.Mappings;
public interface UserConverter { public interface UserConverter {
@Mappings({ @Mappings({
@Mapping(target = "genderLabel", expression = "java(com.youlai.system.common.base.IBaseEnum.getLabelByValue(bo.getGender(), com.youlai.system.enums.GenderEnum.class))") @Mapping(target = "genderLabel", expression = "java(com.youlai.system.common.base.IBaseEnum.getLabelByValue(bo.getGender(), com.youlai.system.common.enums.GenderEnum.class))")
}) })
UserPageVO toPageVo(UserBO bo); UserPageVO toPageVo(UserBO bo);

View File

@@ -2,19 +2,17 @@ package com.youlai.system.filter;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.spring.SpringUtil;
import cn.hutool.jwt.JWTPayload; import cn.hutool.jwt.JWTPayload;
import com.youlai.system.common.constant.CacheConstants; import com.youlai.system.common.constant.CacheConstants;
import com.youlai.system.common.result.ResultCode; import com.youlai.system.common.result.ResultCode;
import com.youlai.system.util.JwtUtils; import com.youlai.system.security.util.JwtUtils;
import com.youlai.system.util.ResponseUtils; import com.youlai.system.common.util.ResponseUtils;
import com.youlai.system.common.exception.BusinessException; import com.youlai.system.common.exception.BusinessException;
import jakarta.servlet.FilterChain; import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException; import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.security.core.Authentication; import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.context.SecurityContextHolder;
@@ -52,7 +50,7 @@ public class JwtTokenFilter extends OncePerRequestFilter {
String jti = Convert.toStr(payload.get(JWTPayload.JWT_ID)); String jti = Convert.toStr(payload.get(JWTPayload.JWT_ID));
Boolean isTokenBlacklisted = redisTemplate.hasKey(CacheConstants.BLACKLIST_TOKEN_PREFIX + jti); Boolean isTokenBlacklisted = redisTemplate.hasKey(CacheConstants.BLACKLIST_TOKEN_PREFIX + jti);
if (isTokenBlacklisted ) { if (Boolean.TRUE.equals(isTokenBlacklisted)) {
ResponseUtils.writeErrMsg(response, ResultCode.TOKEN_INVALID); ResponseUtils.writeErrMsg(response, ResultCode.TOKEN_INVALID);
return; return;
} }

View File

@@ -6,7 +6,7 @@ import cn.hutool.extra.spring.SpringUtil;
import com.youlai.system.common.constant.CacheConstants; import com.youlai.system.common.constant.CacheConstants;
import com.youlai.system.common.constant.SecurityConstants; import com.youlai.system.common.constant.SecurityConstants;
import com.youlai.system.common.result.ResultCode; import com.youlai.system.common.result.ResultCode;
import com.youlai.system.util.ResponseUtils; import com.youlai.system.common.util.ResponseUtils;
import jakarta.servlet.FilterChain; import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException; import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;

View File

@@ -3,7 +3,7 @@ package com.youlai.system.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.youlai.system.core.mybatis.annotation.DataPermission; import com.youlai.system.plugin.mybatis.annotation.DataPermission;
import com.youlai.system.model.entity.SysDept; import com.youlai.system.model.entity.SysDept;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;

View File

@@ -2,7 +2,7 @@ package com.youlai.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.system.core.mybatis.annotation.DataPermission; import com.youlai.system.plugin.mybatis.annotation.DataPermission;
import com.youlai.system.model.bo.UserBO; import com.youlai.system.model.bo.UserBO;
import com.youlai.system.model.entity.SysUser; import com.youlai.system.model.entity.SysUser;
import com.youlai.system.model.dto.UserAuthInfo; import com.youlai.system.model.dto.UserAuthInfo;

View File

@@ -1,6 +1,6 @@
package com.youlai.system.model.bo; package com.youlai.system.model.bo;
import com.youlai.system.enums.MenuTypeEnum; import com.youlai.system.common.enums.MenuTypeEnum;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;

View File

@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.youlai.system.common.base.BaseEntity; import com.youlai.system.common.base.BaseEntity;
import com.youlai.system.enums.MenuTypeEnum; import com.youlai.system.common.enums.MenuTypeEnum;
import lombok.Data; import lombok.Data;
/** /**

View File

@@ -1,7 +1,7 @@
package com.youlai.system.model.form; package com.youlai.system.model.form;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import com.youlai.system.enums.MenuTypeEnum; import com.youlai.system.common.enums.MenuTypeEnum;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;

View File

@@ -1,7 +1,7 @@
package com.youlai.system.model.vo; package com.youlai.system.model.vo;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import com.youlai.system.enums.MenuTypeEnum; import com.youlai.system.common.enums.MenuTypeEnum;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;

View File

@@ -5,7 +5,7 @@ import cn.hutool.core.util.StrUtil;
import com.youlai.system.plugin.dupsubmit.annotation.PreventDuplicateSubmit; import com.youlai.system.plugin.dupsubmit.annotation.PreventDuplicateSubmit;
import com.youlai.system.common.result.ResultCode; import com.youlai.system.common.result.ResultCode;
import com.youlai.system.common.exception.BusinessException; import com.youlai.system.common.exception.BusinessException;
import com.youlai.system.util.JwtUtils; import com.youlai.system.security.util.JwtUtils;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;

View File

@@ -9,8 +9,8 @@ import com.alibaba.excel.context.AnalysisContext;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.youlai.system.common.base.IBaseEnum; import com.youlai.system.common.base.IBaseEnum;
import com.youlai.system.common.constant.SystemConstants; import com.youlai.system.common.constant.SystemConstants;
import com.youlai.system.enums.GenderEnum; import com.youlai.system.common.enums.GenderEnum;
import com.youlai.system.enums.StatusEnum; import com.youlai.system.common.enums.StatusEnum;
import com.youlai.system.converter.UserConverter; import com.youlai.system.converter.UserConverter;
import com.youlai.system.model.entity.SysRole; import com.youlai.system.model.entity.SysRole;
import com.youlai.system.model.entity.SysUser; import com.youlai.system.model.entity.SysUser;

View File

@@ -1,4 +1,4 @@
package com.youlai.system.core.mybatis.annotation; package com.youlai.system.plugin.mybatis.annotation;
import java.lang.annotation.*; import java.lang.annotation.*;

View File

@@ -1,12 +1,12 @@
package com.youlai.system.core.mybatis.handler; package com.youlai.system.plugin.mybatis.handler;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.extension.plugins.handler.DataPermissionHandler; import com.baomidou.mybatisplus.extension.plugins.handler.DataPermissionHandler;
import com.youlai.system.core.mybatis.annotation.DataPermission; import com.youlai.system.plugin.mybatis.annotation.DataPermission;
import com.youlai.system.common.base.IBaseEnum; import com.youlai.system.common.base.IBaseEnum;
import com.youlai.system.enums.DataScopeEnum; import com.youlai.system.common.enums.DataScopeEnum;
import com.youlai.system.util.SecurityUtils; import com.youlai.system.security.util.SecurityUtils;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.sf.jsqlparser.expression.Expression; import net.sf.jsqlparser.expression.Expression;

View File

@@ -1,4 +1,4 @@
package com.youlai.system.core.mybatis.handler; package com.youlai.system.plugin.mybatis.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject; import org.apache.ibatis.reflection.MetaObject;

View File

@@ -1,8 +0,0 @@
package com.youlai.system.plugin.rabbitmq;
/**
* @author haoxr
* @since 0.0.1
*/
public class TestListener {
}

View File

@@ -1,7 +1,7 @@
package com.youlai.system.core.security.exception; package com.youlai.system.security.exception;
import com.youlai.system.common.result.ResultCode; import com.youlai.system.common.result.ResultCode;
import com.youlai.system.util.ResponseUtils; import com.youlai.system.common.util.ResponseUtils;
import org.springframework.security.access.AccessDeniedException; import org.springframework.security.access.AccessDeniedException;
import org.springframework.security.web.access.AccessDeniedHandler; import org.springframework.security.web.access.AccessDeniedHandler;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;

View File

@@ -1,7 +1,7 @@
package com.youlai.system.core.security.exception; package com.youlai.system.security.exception;
import com.youlai.system.common.result.ResultCode; import com.youlai.system.common.result.ResultCode;
import com.youlai.system.util.ResponseUtils; import com.youlai.system.common.util.ResponseUtils;
import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.core.AuthenticationException; import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.AuthenticationEntryPoint; import org.springframework.security.web.AuthenticationEntryPoint;

View File

@@ -1,4 +1,4 @@
package com.youlai.system.core.security.model; package com.youlai.system.security.model;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;

View File

@@ -1,9 +1,9 @@
package com.youlai.system.core.security.service; package com.youlai.system.security.service;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.youlai.system.common.constant.CacheConstants; import com.youlai.system.common.constant.CacheConstants;
import com.youlai.system.util.SecurityUtils; import com.youlai.system.security.util.SecurityUtils;
import com.youlai.system.model.bo.RolePermsBO; import com.youlai.system.model.bo.RolePermsBO;
import com.youlai.system.service.SysRoleMenuService; import com.youlai.system.service.SysRoleMenuService;
import jakarta.annotation.PostConstruct; import jakarta.annotation.PostConstruct;

View File

@@ -1,6 +1,6 @@
package com.youlai.system.core.security.service; package com.youlai.system.security.service;
import com.youlai.system.core.security.model.SysUserDetails; import com.youlai.system.security.model.SysUserDetails;
import com.youlai.system.model.dto.UserAuthInfo; import com.youlai.system.model.dto.UserAuthInfo;
import com.youlai.system.service.SysUserService; import com.youlai.system.service.SysUserService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;

View File

@@ -1,4 +1,4 @@
package com.youlai.system.util; package com.youlai.system.security.util;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
@@ -9,7 +9,7 @@ import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTPayload; import cn.hutool.jwt.JWTPayload;
import cn.hutool.jwt.JWTUtil; import cn.hutool.jwt.JWTUtil;
import com.youlai.system.common.constant.JwtClaimConstants; import com.youlai.system.common.constant.JwtClaimConstants;
import com.youlai.system.core.security.model.SysUserDetails; import com.youlai.system.security.model.SysUserDetails;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication; import org.springframework.security.core.Authentication;
@@ -126,27 +126,4 @@ public class JwtUtils {
return new UsernamePasswordAuthenticationToken(userDetails, "", authorities); return new UsernamePasswordAuthenticationToken(userDetails, "", authorities);
} }
/**
* 验证 JWT Token
*
* @param token JWT Token
* @return 是否有效
*/
public static boolean verifyToken(String token) {
if (StrUtil.isBlank(token)) {
return false;
}
if (token.startsWith("Bearer ")) {
token = token.substring(7);
}
JWT jwt = JWTUtil.parseToken(token);
return jwt.setKey(JwtUtils.key).validate(0);
}
} }

View File

@@ -1,10 +1,10 @@
package com.youlai.system.util; package com.youlai.system.security.util;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.youlai.system.common.constant.SystemConstants; import com.youlai.system.common.constant.SystemConstants;
import com.youlai.system.core.security.model.SysUserDetails; import com.youlai.system.security.model.SysUserDetails;
import org.springframework.security.core.Authentication; import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.context.SecurityContextHolder;

View File

@@ -8,12 +8,12 @@ import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.jwt.JWTPayload; import cn.hutool.jwt.JWTPayload;
import com.youlai.system.common.constant.CacheConstants; import com.youlai.system.common.constant.CacheConstants;
import com.youlai.system.enums.CaptchaTypeEnum; import com.youlai.system.common.enums.CaptchaTypeEnum;
import com.youlai.system.model.dto.CaptchaResult; import com.youlai.system.model.dto.CaptchaResult;
import com.youlai.system.model.dto.LoginResult; import com.youlai.system.model.dto.LoginResult;
import com.youlai.system.plugin.captcha.CaptchaProperties; import com.youlai.system.plugin.captcha.CaptchaProperties;
import com.youlai.system.service.AuthService; import com.youlai.system.service.AuthService;
import com.youlai.system.util.JwtUtils; import com.youlai.system.security.util.JwtUtils;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;

View File

@@ -6,7 +6,7 @@ import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.system.common.constant.SystemConstants; import com.youlai.system.common.constant.SystemConstants;
import com.youlai.system.enums.StatusEnum; import com.youlai.system.common.enums.StatusEnum;
import com.youlai.system.converter.DeptConverter; import com.youlai.system.converter.DeptConverter;
import com.youlai.system.mapper.SysDeptMapper; import com.youlai.system.mapper.SysDeptMapper;
import com.youlai.system.model.entity.SysDept; import com.youlai.system.model.entity.SysDept;

View File

@@ -7,8 +7,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.system.common.constant.SystemConstants; import com.youlai.system.common.constant.SystemConstants;
import com.youlai.system.enums.MenuTypeEnum; import com.youlai.system.common.enums.MenuTypeEnum;
import com.youlai.system.enums.StatusEnum; import com.youlai.system.common.enums.StatusEnum;
import com.youlai.system.common.model.Option; import com.youlai.system.common.model.Option;
import com.youlai.system.converter.MenuConverter; import com.youlai.system.converter.MenuConverter;
import com.youlai.system.mapper.SysMenuMapper; import com.youlai.system.mapper.SysMenuMapper;

View File

@@ -10,7 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.system.common.constant.SystemConstants; import com.youlai.system.common.constant.SystemConstants;
import com.youlai.system.common.model.Option; import com.youlai.system.common.model.Option;
import com.youlai.system.converter.RoleConverter; import com.youlai.system.converter.RoleConverter;
import com.youlai.system.core.security.service.PermissionService; import com.youlai.system.security.service.PermissionService;
import com.youlai.system.mapper.SysRoleMapper; import com.youlai.system.mapper.SysRoleMapper;
import com.youlai.system.model.entity.SysRole; import com.youlai.system.model.entity.SysRole;
import com.youlai.system.model.entity.SysRoleMenu; import com.youlai.system.model.entity.SysRoleMenu;
@@ -20,7 +20,7 @@ import com.youlai.system.model.vo.RolePageVO;
import com.youlai.system.service.SysRoleMenuService; import com.youlai.system.service.SysRoleMenuService;
import com.youlai.system.service.SysRoleService; import com.youlai.system.service.SysRoleService;
import com.youlai.system.service.SysUserRoleService; import com.youlai.system.service.SysUserRoleService;
import com.youlai.system.util.SecurityUtils; import com.youlai.system.security.util.SecurityUtils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CacheEvict;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;

View File

@@ -9,9 +9,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.system.common.constant.SystemConstants; import com.youlai.system.common.constant.SystemConstants;
import com.youlai.system.util.DateUtils; import com.youlai.system.common.util.DateUtils;
import com.youlai.system.converter.UserConverter; import com.youlai.system.converter.UserConverter;
import com.youlai.system.util.SecurityUtils; import com.youlai.system.security.util.SecurityUtils;
import com.youlai.system.mapper.SysUserMapper; import com.youlai.system.mapper.SysUserMapper;
import com.youlai.system.model.dto.UserAuthInfo; import com.youlai.system.model.dto.UserAuthInfo;
import com.youlai.system.model.bo.UserBO; import com.youlai.system.model.bo.UserBO;

View File

@@ -44,7 +44,7 @@
LEFT JOIN sys_role_menu t2 ON t1.id = t2.menu_id LEFT JOIN sys_role_menu t2 ON t1.id = t2.menu_id
LEFT JOIN sys_role t3 ON t2.role_id = t3.id LEFT JOIN sys_role t3 ON t2.role_id = t3.id
WHERE WHERE
t1.type != '${@com.youlai.system.enums.MenuTypeEnum@BUTTON.getValue()}' t1.type != '${@com.youlai.system.common.enums.MenuTypeEnum@BUTTON.getValue()}'
ORDER BY t1.sort asc ORDER BY t1.sort asc
</select> </select>
@@ -57,7 +57,7 @@
INNER JOIN sys_role_menu t2 ON t1.id = t2.menu_id INNER JOIN sys_role_menu t2 ON t1.id = t2.menu_id
INNER JOIN sys_role t3 ON t3.id = t2.role_id INNER JOIN sys_role t3 ON t3.id = t2.role_id
WHERE WHERE
t1.type = '${@com.youlai.system.enums.MenuTypeEnum@BUTTON.getValue()}' t1.type = '${@com.youlai.system.common.enums.MenuTypeEnum@BUTTON.getValue()}'
AND t1.perm IS NOT NULL AND t1.perm IS NOT NULL
<choose> <choose>
<when test="roles!=null and roles.size()>0"> <when test="roles!=null and roles.size()>0">

View File

@@ -33,7 +33,7 @@
INNER JOIN sys_role t2 ON t1.role_id = t2.id AND t2.deleted = 0 INNER JOIN sys_role t2 ON t1.role_id = t2.id AND t2.deleted = 0
INNER JOIN sys_menu t3 ON t1.menu_id = t3.id INNER JOIN sys_menu t3 ON t1.menu_id = t3.id
WHERE WHERE
type = '${@com.youlai.system.enums.MenuTypeEnum@BUTTON.getValue()}' type = '${@com.youlai.system.common.enums.MenuTypeEnum@BUTTON.getValue()}'
<if test="roleCode!=null and roleCode.trim() neq ''"> <if test="roleCode!=null and roleCode.trim() neq ''">
AND t2.`code` = #{roleCode} AND t2.`code` = #{roleCode}
</if> </if>