refactor(core):重构异常包结构并更新业务异常引用

- 将 BusinessException 移至 core.exception 包下
- 更新所有业务异常引用路径
- 调整项目模块目录结构说明
- 升级项目版本至3.3.0
This commit is contained in:
Ray.Hao
2025-10-14 16:21:15 +08:00
parent c43e6dfb54
commit 65a2450f3e
17 changed files with 49 additions and 42 deletions

View File

@@ -3,7 +3,7 @@
<img alt="logo" width="100" height="100" src="https://foruda.gitee.com/images/1733417239320800627/3c5290fe_716974.png">
<h2>youlai-boot</h2>
<img alt="有来技术" src="https://img.shields.io/badge/Java -17-brightgreen.svg"/>
<img alt="有来技术" src="https://img.shields.io/badge/SpringBoot-3.5.5-green.svg"/>
<img alt="有来技术" src="https://img.shields.io/badge/SpringBoot-3.5.6-green.svg"/>
<a href="https://gitcode.com/youlai/youlai-boot" target="_blank">
<img alt="有来技术" src="https://gitcode.com/youlai/youlai-boot/star/badge.svg"/>
</a>
@@ -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

View File

@@ -6,7 +6,7 @@
<groupId>com.youlai</groupId>
<artifactId>youlai-boot</artifactId>
<version>3.2.0</version>
<version>3.3.0</version>
<description>基于 Java 17 + SpringBoot 3 + Spring Security 构建的权限管理系统。</description>
<parent>

View File

@@ -8,7 +8,7 @@ import jakarta.validation.constraints.NotBlank;
/**
* 微信小程序手机号登录请求参数
*
* @author 有来技术团队
* @author Ray.Hao
* @since 2.0.0
*/
@Schema(description = "微信小程序手机号登录请求参数")

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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();
}
}
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;