refactor: 包结构优化
This commit is contained in:
15
README.md
15
README.md
@@ -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 提供安全、无状态、分布式友好的身份验证和授权机制。
|
||||||
|
|
||||||
@@ -57,7 +57,7 @@ youlai-boot
|
|||||||
├── WebSocketConfig # WebSocket 自动装配配置
|
├── WebSocketConfig # WebSocket 自动装配配置
|
||||||
├── XxlJobConfig # XXL-JOB 自动装配配置
|
├── XxlJobConfig # XXL-JOB 自动装配配置
|
||||||
├── controller # 控制层
|
├── controller # 控制层
|
||||||
├── converter # MapStruct转换器
|
├── converter # MapStruct 转换器
|
||||||
├── core # 核心模块
|
├── core # 核心模块
|
||||||
├── security # Spring Security 安全配置和扩展
|
├── security # Spring Security 安全配置和扩展
|
||||||
├── mybatis # Mybatis-Plus 配置和插件
|
├── mybatis # Mybatis-Plus 配置和插件
|
||||||
@@ -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 插件,分布式任务调度和执行
|
||||||
|
├── security # Spring Security 安全配置和扩展
|
||||||
|
├── util # 工具类
|
||||||
|
├── JwtUtils # JWT 工具类,用于生成和解析 JWT
|
||||||
|
├── SecurityUtils # Spring Security 工具类,用于获取当前登录用户
|
||||||
├── service # 业务逻辑层
|
├── service # 业务逻辑层
|
||||||
├── util # 工具类
|
|
||||||
├── JwtUtils # JWT 工具类
|
|
||||||
├── SecurityUtils # Spring Security 工具类
|
|
||||||
|
|
||||||
└── end
|
└── end
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.system.enums;
|
package com.youlai.system.common.enums;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* EasyCaptcha 验证码类型枚举
|
* EasyCaptcha 验证码类型枚举
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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.*;
|
||||||
|
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
package com.youlai.system.plugin.rabbitmq;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author haoxr
|
|
||||||
* @since 0.0.1
|
|
||||||
*/
|
|
||||||
public class TestListener {
|
|
||||||
}
|
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -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);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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">
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user