diff --git a/README.md b/README.md
index f806c527..2e491ee3 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
youlai-boot
-
+
@@ -73,50 +73,55 @@ youlai-boot
├── sql # SQL脚本
│ ├── mysql # MySQL 脚本
├── src # 源码目录
-│ ├── auth # 登录认证
+│ ├── auth # 认证模块(登录入口)
│ ├── common # 公共模块
│ │ ├── annotation # 注解定义
│ │ ├── base # 基础类
│ │ ├── constant # 常量
│ │ ├── enums # 枚举类型
-│ │ ├── exception # 异常处理
│ │ ├── model # 数据模型
-│ │ ├── result # 结果封装
│ │ └── util # 工具类
│ ├── config # 自动装配配置
│ │ └── property # 配置属性目录
-│ ├── core # 核心功能
+│ ├── core # 核心框架
│ │ ├── aspect # 切面(日志、防重提交)
+│ │ ├── exception # 异常处理
│ │ ├── filter # 过滤器(请求日志、限流)
-│ │ ├── handler # 处理器(数据权限、数据填充)
-│ │ └── security # Spring Security 安全模块
-│ ├── module # 业务模块
-│ │ ├── member # 会员模块【业务模块演示】
-│ │ ├── order # 订单模块【业务模块演示】
-│ │ ├── product # 商品模块【业务模块演示】
-│ ├── module # 插件扩展
-│ │ ├── knife4j # Knife4j 扩展
-│ │ ├── mybatis # Mybatis 扩展
-│ ├── shared # 共享模块
-│ │ ├── file # 文件模块
+│ │ ├── validator # 验证器
+│ │ └── web # Web响应封装(Result、PageResult等)
+│ ├── platform # 平台服务(通用服务)
│ │ ├── codegen # 代码生成模块
-│ │ ├── mail # 邮件模块
-│ │ ├── sms # 短信模块
-│ │ └── websocket # WebSocket 模块
+│ │ ├── file # 文件服务
+│ │ ├── mail # 邮件服务
+│ │ ├── sms # 短信服务
+│ │ └── websocket # WebSocket服务
+│ ├── plugin # 插件扩展
+│ │ ├── knife4j # Knife4j 扩展
+│ │ └── mybatis # Mybatis 扩展
+│ ├── security # 安全框架(Spring Security)
+│ │ ├── exception # 安全异常
+│ │ ├── filter # 安全过滤器
+│ │ ├── handler # 安全处理器
+│ │ ├── model # 安全模型
+│ │ ├── provider # 认证提供者
+│ │ ├── service # 安全服务
+│ │ ├── token # Token管理
+│ │ └── util # 安全工具类
│ ├── system # 系统模块
│ │ ├── controller # 控制层
│ │ ├── converter # MapStruct 转换器
-│ │ ├── event # 事件处理
+│ │ ├── enums # 枚举
│ │ ├── handler # 处理器
│ │ ├── listener # 监听器
+│ │ ├── mapper # 数据库访问层
│ │ ├── model # 模型层
│ │ │ ├── bo # 业务对象
│ │ │ ├── dto # 数据传输对象
│ │ │ ├── entity # 实体对象
+│ │ │ ├── event # 事件对象
│ │ │ ├── form # 表单对象
│ │ │ ├── query # 查询参数对象
│ │ │ └── vo # 视图对象
-│ │ ├── mapper # 数据库访问层
│ │ └── service # 业务逻辑层
│ └── YouLaiBootApplication # 启动类
└── end
diff --git a/pom.xml b/pom.xml
index ccb0ab4d..4d1eb2f6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
com.youlai
youlai-boot
- 3.2.0
+ 3.3.0
基于 Java 17 + SpringBoot 3 + Spring Security 构建的权限管理系统。
diff --git a/src/main/java/com/youlai/boot/auth/model/dto/WxMiniAppPhoneLoginDTO.java b/src/main/java/com/youlai/boot/auth/model/dto/WxMiniAppPhoneLoginDTO.java
index 5a3e4c69..a881f271 100644
--- a/src/main/java/com/youlai/boot/auth/model/dto/WxMiniAppPhoneLoginDTO.java
+++ b/src/main/java/com/youlai/boot/auth/model/dto/WxMiniAppPhoneLoginDTO.java
@@ -8,7 +8,7 @@ import jakarta.validation.constraints.NotBlank;
/**
* 微信小程序手机号登录请求参数
*
- * @author 有来技术团队
+ * @author Ray.Hao
* @since 2.0.0
*/
@Schema(description = "微信小程序手机号登录请求参数")
diff --git a/src/main/java/com/youlai/boot/core/aspect/RepeatSubmitAspect.java b/src/main/java/com/youlai/boot/core/aspect/RepeatSubmitAspect.java
index c45766a4..6c0a0f4e 100644
--- a/src/main/java/com/youlai/boot/core/aspect/RepeatSubmitAspect.java
+++ b/src/main/java/com/youlai/boot/core/aspect/RepeatSubmitAspect.java
@@ -5,7 +5,7 @@ import cn.hutool.crypto.digest.DigestUtil;
import com.youlai.boot.common.constant.RedisConstants;
import com.youlai.boot.common.constant.SecurityConstants;
import com.youlai.boot.core.web.ResultCode;
-import com.youlai.boot.common.exception.BusinessException;
+import com.youlai.boot.core.exception.BusinessException;
import com.youlai.boot.common.annotation.RepeatSubmit;
import com.youlai.boot.common.util.IPUtils;
import jakarta.servlet.http.HttpServletRequest;
diff --git a/src/main/java/com/youlai/boot/core/exception/BusinessException.java b/src/main/java/com/youlai/boot/core/exception/BusinessException.java
index d9b2b4cf..033981c5 100644
--- a/src/main/java/com/youlai/boot/core/exception/BusinessException.java
+++ b/src/main/java/com/youlai/boot/core/exception/BusinessException.java
@@ -1,4 +1,4 @@
-package com.youlai.boot.common.exception;
+package com.youlai.boot.core.exception;
import com.youlai.boot.core.web.IResultCode;
import lombok.Getter;
diff --git a/src/main/java/com/youlai/boot/core/exception/GlobalExceptionHandler.java b/src/main/java/com/youlai/boot/core/exception/GlobalExceptionHandler.java
index 9c97f5ad..e0599a9e 100644
--- a/src/main/java/com/youlai/boot/core/exception/GlobalExceptionHandler.java
+++ b/src/main/java/com/youlai/boot/core/exception/GlobalExceptionHandler.java
@@ -2,6 +2,7 @@ package com.youlai.boot.common.exception;
import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.core.JsonProcessingException;
+import com.youlai.boot.core.exception.BusinessException;
import com.youlai.boot.core.web.Result;
import com.youlai.boot.core.web.ResultCode;
import jakarta.servlet.ServletException;
diff --git a/src/main/java/com/youlai/boot/platform/codegen/service/impl/CodegenServiceImpl.java b/src/main/java/com/youlai/boot/platform/codegen/service/impl/CodegenServiceImpl.java
index 6d8c91ec..aa4e507b 100644
--- a/src/main/java/com/youlai/boot/platform/codegen/service/impl/CodegenServiceImpl.java
+++ b/src/main/java/com/youlai/boot/platform/codegen/service/impl/CodegenServiceImpl.java
@@ -16,7 +16,7 @@ import com.youlai.boot.config.property.CodegenProperties;
import com.youlai.boot.platform.codegen.service.GenConfigService;
import com.youlai.boot.platform.codegen.service.GenFieldConfigService;
import com.youlai.boot.platform.codegen.service.CodegenService;
-import com.youlai.boot.common.exception.BusinessException;
+import com.youlai.boot.core.exception.BusinessException;
import com.youlai.boot.platform.codegen.mapper.DatabaseMapper;
import com.youlai.boot.platform.codegen.model.entity.GenConfig;
import com.youlai.boot.platform.codegen.model.entity.GenFieldConfig;
diff --git a/src/main/java/com/youlai/boot/platform/codegen/service/impl/GenConfigServiceImpl.java b/src/main/java/com/youlai/boot/platform/codegen/service/impl/GenConfigServiceImpl.java
index fe4cb49d..eaf59a40 100644
--- a/src/main/java/com/youlai/boot/platform/codegen/service/impl/GenConfigServiceImpl.java
+++ b/src/main/java/com/youlai/boot/platform/codegen/service/impl/GenConfigServiceImpl.java
@@ -10,7 +10,7 @@ import com.youlai.boot.common.enums.EnvEnum;
import com.youlai.boot.platform.codegen.enums.FormTypeEnum;
import com.youlai.boot.platform.codegen.enums.JavaTypeEnum;
import com.youlai.boot.platform.codegen.enums.QueryTypeEnum;
-import com.youlai.boot.common.exception.BusinessException;
+import com.youlai.boot.core.exception.BusinessException;
import com.youlai.boot.config.property.CodegenProperties;
import com.youlai.boot.platform.codegen.converter.CodegenConverter;
import com.youlai.boot.platform.codegen.mapper.DatabaseMapper;
diff --git a/src/main/java/com/youlai/boot/platform/file/service/impl/MinioFileService.java b/src/main/java/com/youlai/boot/platform/file/service/impl/MinioFileService.java
index 367a6c8f..be2ecafd 100644
--- a/src/main/java/com/youlai/boot/platform/file/service/impl/MinioFileService.java
+++ b/src/main/java/com/youlai/boot/platform/file/service/impl/MinioFileService.java
@@ -5,7 +5,7 @@ import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
-import com.youlai.boot.common.exception.BusinessException;
+import com.youlai.boot.core.exception.BusinessException;
import com.youlai.boot.core.web.ResultCode;
import com.youlai.boot.platform.file.model.FileInfo;
import com.youlai.boot.platform.file.service.FileService;
diff --git a/src/main/java/com/youlai/boot/security/token/JwtTokenManager.java b/src/main/java/com/youlai/boot/security/token/JwtTokenManager.java
index 1ee154e4..627a533d 100644
--- a/src/main/java/com/youlai/boot/security/token/JwtTokenManager.java
+++ b/src/main/java/com/youlai/boot/security/token/JwtTokenManager.java
@@ -11,7 +11,7 @@ import cn.hutool.jwt.JWTUtil;
import com.youlai.boot.common.constant.JwtClaimConstants;
import com.youlai.boot.common.constant.RedisConstants;
import com.youlai.boot.common.constant.SecurityConstants;
-import com.youlai.boot.common.exception.BusinessException;
+import com.youlai.boot.core.exception.BusinessException;
import com.youlai.boot.core.web.ResultCode;
import com.youlai.boot.config.property.SecurityProperties;
import com.youlai.boot.security.model.AuthenticationToken;
diff --git a/src/main/java/com/youlai/boot/security/token/RedisTokenManager.java b/src/main/java/com/youlai/boot/security/token/RedisTokenManager.java
index 51113ede..a2dff3a5 100644
--- a/src/main/java/com/youlai/boot/security/token/RedisTokenManager.java
+++ b/src/main/java/com/youlai/boot/security/token/RedisTokenManager.java
@@ -4,7 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.youlai.boot.common.constant.RedisConstants;
-import com.youlai.boot.common.exception.BusinessException;
+import com.youlai.boot.core.exception.BusinessException;
import com.youlai.boot.core.web.ResultCode;
import com.youlai.boot.config.property.SecurityProperties;
import com.youlai.boot.security.model.AuthenticationToken;
diff --git a/src/main/java/com/youlai/boot/system/model/event/DictEvent.java b/src/main/java/com/youlai/boot/system/model/dto/DictEventDTO.java
similarity index 67%
rename from src/main/java/com/youlai/boot/system/model/event/DictEvent.java
rename to src/main/java/com/youlai/boot/system/model/dto/DictEventDTO.java
index 7f30ee10..b3cae343 100644
--- a/src/main/java/com/youlai/boot/system/model/event/DictEvent.java
+++ b/src/main/java/com/youlai/boot/system/model/dto/DictEventDTO.java
@@ -1,15 +1,15 @@
-package com.youlai.boot.system.model.event;
+package com.youlai.boot.system.model.dto;
import lombok.Data;
/**
- * 字典更新事件
+ * 字典更新事件消息
*
* @author Ray.Hao
* @since 3.0.0
*/
@Data
-public class DictEvent {
+public class DictEventDTO {
/**
* 字典编码
*/
@@ -20,8 +20,9 @@ public class DictEvent {
*/
private long timestamp;
- public DictEvent(String dictCode) {
+ public DictEventDTO(String dictCode) {
this.dictCode = dictCode;
this.timestamp = System.currentTimeMillis();
}
-}
+}
+
diff --git a/src/main/java/com/youlai/boot/system/service/impl/DictServiceImpl.java b/src/main/java/com/youlai/boot/system/service/impl/DictServiceImpl.java
index 8d1f9896..2573b4d3 100644
--- a/src/main/java/com/youlai/boot/system/service/impl/DictServiceImpl.java
+++ b/src/main/java/com/youlai/boot/system/service/impl/DictServiceImpl.java
@@ -4,7 +4,7 @@ import cn.hutool.core.lang.Assert;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.youlai.boot.common.exception.BusinessException;
+import com.youlai.boot.core.exception.BusinessException;
import com.youlai.boot.common.model.Option;
import com.youlai.boot.system.converter.DictConverter;
import com.youlai.boot.system.mapper.DictMapper;
diff --git a/src/main/java/com/youlai/boot/system/service/impl/NoticeServiceImpl.java b/src/main/java/com/youlai/boot/system/service/impl/NoticeServiceImpl.java
index 407ef6de..b4d70ea5 100644
--- a/src/main/java/com/youlai/boot/system/service/impl/NoticeServiceImpl.java
+++ b/src/main/java/com/youlai/boot/system/service/impl/NoticeServiceImpl.java
@@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.youlai.boot.common.exception.BusinessException;
+import com.youlai.boot.core.exception.BusinessException;
import com.youlai.boot.security.util.SecurityUtils;
import com.youlai.boot.system.converter.NoticeConverter;
import com.youlai.boot.system.enums.NoticePublishStatusEnum;
diff --git a/src/main/java/com/youlai/boot/system/service/impl/RoleServiceImpl.java b/src/main/java/com/youlai/boot/system/service/impl/RoleServiceImpl.java
index b08955df..0efab740 100644
--- a/src/main/java/com/youlai/boot/system/service/impl/RoleServiceImpl.java
+++ b/src/main/java/com/youlai/boot/system/service/impl/RoleServiceImpl.java
@@ -7,7 +7,7 @@ import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.youlai.boot.common.exception.BusinessException;
+import com.youlai.boot.core.exception.BusinessException;
import com.youlai.boot.system.converter.RoleConverter;
import com.youlai.boot.system.mapper.RoleMapper;
import com.youlai.boot.system.model.entity.Role;
diff --git a/src/main/java/com/youlai/boot/system/service/impl/UserServiceImpl.java b/src/main/java/com/youlai/boot/system/service/impl/UserServiceImpl.java
index 745c1d67..827779c4 100644
--- a/src/main/java/com/youlai/boot/system/service/impl/UserServiceImpl.java
+++ b/src/main/java/com/youlai/boot/system/service/impl/UserServiceImpl.java
@@ -10,7 +10,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.boot.common.constant.RedisConstants;
import com.youlai.boot.common.constant.SystemConstants;
-import com.youlai.boot.common.exception.BusinessException;
+import com.youlai.boot.core.exception.BusinessException;
import com.youlai.boot.common.model.Option;
import com.youlai.boot.platform.sms.enums.SmsTypeEnum;
import com.youlai.boot.platform.sms.service.SmsService;
diff --git a/src/main/java/com/youlai/boot/system/service/impl/WebSocketServiceImpl.java b/src/main/java/com/youlai/boot/system/service/impl/WebSocketServiceImpl.java
index addbccf5..12d443c5 100644
--- a/src/main/java/com/youlai/boot/system/service/impl/WebSocketServiceImpl.java
+++ b/src/main/java/com/youlai/boot/system/service/impl/WebSocketServiceImpl.java
@@ -2,7 +2,7 @@ package com.youlai.boot.system.service.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
-import com.youlai.boot.system.model.event.DictEvent;
+import com.youlai.boot.system.model.dto.DictEventDTO;
import com.youlai.boot.system.service.WebSocketService;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
@@ -192,7 +192,7 @@ public class WebSocketServiceImpl implements WebSocketService {
*/
@Override
public void broadcastDictChange(String dictCode) {
- DictEvent event = new DictEvent(dictCode);
+ DictEventDTO event = new DictEventDTO(dictCode);
sendDictEvent(event);
}
@@ -201,7 +201,7 @@ public class WebSocketServiceImpl implements WebSocketService {
*
* @param event 字典事件
*/
- private void sendDictEvent(DictEvent event) {
+ private void sendDictEvent(DictEventDTO event) {
if (messagingTemplate == null) {
log.warn("消息模板尚未初始化,无法发送字典更新通知");
return;