Commit Graph

668 Commits

Author SHA1 Message Date
TongTongStudio
924d4af5e6 feat(developer): 完善开发者选项CRUD与SN查询逻辑 2026-07-31 02:15:17 +08:00
TongTongStudio
0bda0caed4 Merge branch 'master' of gitee.com:youlaiorg/youlai-boot 2026-07-30 17:50:06 +08:00
TongTongStudio
c59fd91de5 Merge branch 'master' of gitee.com:youlaiorg/youlai-boot
# Conflicts:
#	src/main/java/com/youlai/boot/auth/security/config/SecurityConfig.java
#	src/main/resources/application-dev.yml
#	src/main/resources/application-prod.yml
2026-07-30 17:49:40 +08:00
theo
31ba21d0f9 fix(security): 解决SSE异步请求超时和权限验证问题
- 添加AsyncRequestTimeoutException异常处理器
- 配置ASYNC调度请求直接放行以支持SSE功能
- 允许SSE emitter.send()等异步请求无需Authorization头验证
2026-07-30 14:08:53 +08:00
Ray.Hao
a4b699a109 refactor(apidoc): 将 apidoc 包重命名为 openapi
- Knife4jOpenApiCustomizer.java: 包名 com.youlai.boot.framework.apidoc -> com.youlai.boot.framework.openapi
- OpenApiConfig.java: 包名 com.youlai.boot.framework.apidoc -> com.youlai.boot.framework.openapi
2026-07-28 17:33:01 +08:00
Ray.Hao
7b87543978 feat: v4.5.0 包结构迁移、MyBatis-Plus 自动填充、Jackson 3.x 适配
- common.annotation -> framework.annotation(DataPermission/Log/RateLimit/RepeatSubmit/ValidField)
- common.base.BaseEntity -> framework.base.BaseEntity(含 createTime/updateTime 自动填充注解)
- BaseQuery/IBaseEnum 保留在 common.base(无框架依赖)
- AutoFillMetaObjectHandler 实现 createTime/updateTime/createBy/updateBy 自动填充
- 实体类(Dept/Role/Config/DictItem/Notice/SysUser)添加 createBy/updateBy @TableField(fill=...)
- Jackson 注解使用 com.fasterxml.jackson.annotation(2.x 兼容层),databind/core 使用 tools.jackson(3.x)
- 代码生成模板 entity.java.vm/form.java.vm 包路径同步更新
- 删除冗余 UserService default 方法、DataPermissionException、DictChangeEvent event 包
- 版本号 4.4.0 -> 4.5.0
2026-07-28 17:24:44 +08:00
Ray.Hao
684b89c103 fix(entity): 修复 null/零值/空字符串字段无法清空更新的问题
- 给 avatar/mobile/email/remark/targetUserIds/icon/redirect/perm/component/externalUrl/routeName/tagType 字段加 updateStrategy=ALWAYS

- 去除 UserSocialMapper.xml 中 avatar 列冗余的 AS 别名
2026-07-18 16:04:37 +08:00
Ray.Hao
ae660f57e9 feat(auth): 新增 App 扫码登录 PC 端
- 新增 auth/qrcode 模块:生成票据、轮询状态、换取会话令牌

- SecurityUser 增加 avatar 字段,UserSocial 支持按用户 ID 查认证信息

- 新增 QR_CODE_LOGIN Redis 票据与 A025x 扫码异常码

- security 白名单放行 /api/v1/auth/qr-code/*
2026-07-18 01:04:04 +08:00
Ray.Hao
666f4929e5 refactor(file): 重构文件存储配置为 file-storage 并增加上传校验
- 合并 AliyunOssProperties/LocalFileProperties/MinioProperties 为 FileStorageProperties

- oss.* 配置前缀统一改为 file-storage.*(type/upload/minio/aliyun/local)

- FileController 增加文件扩展名白名单校验

- spring.servlet.multipart 上限改由 file-storage.upload.max-file-size 驱动
2026-07-18 01:03:15 +08:00
Ray.Hao
5f71986d12 fix(rate-limit): IP 限流补充 Redis 异常 Fail-Open 放行 2026-07-17 00:26:00 +08:00
Ray.Hao
291d473cc3 refactor(rate-limit): 完善双层滑动窗口限流实现 2026-07-17 00:19:12 +08:00
Ray.Hao
13ed4503ed refactor(rate-limit): 限流升级为双层滑动窗口,新增 IP 全局限流与响应头
- 新增 IpRateLimitFilter:IP 维度全局滑动窗口限流,所有接口生效(默认 1000 次/60 秒)

- RateLimitAspect 固定窗口升级为滑动窗口(Redis ZSET + Lua),与 IP 全局限流叠加

- 提取公共 SlidingWindowScript,统一 Lua 脚本

- 新增 X-RateLimit-Limit/Remaining/Reset 与 Retry-After 响应头

- RateLimitProperties 新增 ip 配置;新增 RateLimitException;dev 环境关闭 IP 限流
2026-07-12 21:23:17 +08:00
775fadea45 fix: 优化移动端校验 2026-07-08 10:35:48 +08:00
095ab09750 Merge branch 'master' of https://gitee.com/youlaiorg/youlai-boot
# Conflicts:
#	pom.xml
#	src/main/java/com/youlai/boot/common/aspect/LogAspect.java
#	src/main/java/com/youlai/boot/framework/security/config/SecurityConfig.java
2026-07-08 09:56:28 +08:00
Ray.Hao
2441efa9ba refactor(security): Ports & Adapters 架构重构|解除反向依赖|抽离 Security Starter 准备
- 新增 2 个端口接口(UserAuthenticationPort / PermissionPort)+ 1 个适配器(PermissionAdapter)
- SecurityUserDetails 用 roles(Set<String>) 替代 authorities,消除 Jackson 序列化问题
- 删除 UserSession,Redis / JWT 直存 SecurityUserDetails
- SecurityUserDetailsService / PermissionService 注入 Port 替代 system Service
2026-07-05 16:53:46 +08:00
Ray.Hao
b17bd6bf7c refactor(rate-limit): 限流架构升级为双层滑动窗口,新增IP全局防护与响应头
限流算法从 INCR+EXPIRE 固定窗口升级为 ZSET+Lua 滑动窗口,
新增 IpRateLimitFilter 提供 IP 全局防护(默认 1000次/60s)。
新增 X-RateLimit-Limit/Remaining/Reset 响应头与 Retry-After,
新增 rate-limit.ip.* 配置项控制 IP 全局开关与阈值,
@RateLimit 空注解统一走全局配置,消除硬编码。
2026-07-05 00:19:44 +08:00
Ray.Hao
12b226fdc9 fix(security): 修复RedisTokenManager会话反序列化类型转换异常
- 提取JsonMapper为共享Bean,统一序列化配置
- 使用convertValue替代直接强转,正确处理嵌套泛型
2026-07-03 18:22:48 +08:00
Ray.Hao
c157bbd74c refactor(menu): 外链/内嵌改为 type=E+component 统一判断 2026-06-29 22:30:00 +08:00
Ray.Hao
49e3d7a71b refactor: 统一注释规范与代码风格,优化分层结构 2026-06-28 19:04:21 +08:00
Ray.Hao
2d249e449d fix: 优化代码注释与导入规范 2026-06-26 00:33:39 +08:00
Ray.Hao
6b6c06370f refactor: 统一实体/限流AOP化/精简日志/文件归位 2026-06-24 08:11:23 +08:00
31599928a9 feat: add upload file api 2026-06-14 13:06:38 +08:00
Ray.Hao
a8403613fa token过期改为返回401;CaptchaValidationException重命名为SmsCaptchaException;v4.3.1 2026-06-09 15:53:35 +08:00
33fbee9a00 feat: 增加sn管理接口 2026-06-01 08:24:02 +08:00
Ray.Hao
eebb287095 feat(exception): 添加数据权限异常及通用数据库执行异常处理 2026-05-23 10:30:44 +08:00
Ray.Hao
65333b9e8e refactor(redis): 适配 Spring Data Redis 4.0 序列化器变更
Jackson2JsonRedisSerializer 在 Spring Data Redis 4.0 中已标记为弃用并计划移除。
替换为 JacksonJsonRedisSerializer,对应 Jackson 3 的 API 变更:
2026-05-20 16:02:25 +08:00
Ray.Hao
7a43e9c38c fix: 已知问题修复 2026-04-25 16:29:32 +08:00
Ray.Hao
63c34a4218 refactor: 移除多数据库支持并简化配置 2026-04-22 13:36:46 +08:00
Ray.Hao
9993302d5c fix: 统一前后端权限标识后缀(add/edit/query→create/update/list) 2026-04-17 23:35:52 +08:00
Ray.Hao
959c4dd6ec Merge branch 'master' of https://gitee.com/youlaiorg/youlai-boot 2026-04-12 20:55:58 +08:00
Ray.Hao
b5515bdda8 fix: 修复Token管理、代码生成模板及文档问题 2026-04-12 20:55:56 +08:00
Theo
533217aa10 ```
feat(dept): 添加部门编辑时父子关系验证逻辑

- 实现部门是否存在检查
- 添加上级部门不能为自己的校验
- 实现上级部门不能为当前子部门的递归校验
- 优化部门树路径查询逻辑
```
2026-04-12 17:33:01 +08:00
Ray.Hao
c23abf1b96 refactor: 优化代码生成器前端API文件路径结构及日志统计重命名IP数为访客数(UV) 2026-04-05 20:23:53 +08:00
Ray.Hao
c6f9dbb182 refactor: 修改日志控制器路由,将访问趋势和访问统计概览的路径分别更改为 analytics/trend 和 analytics/overview 2026-04-04 17:43:45 +08:00
Ray.Hao
9927546b78 fix: SSE连接关闭时机提前至容器关闭最早阶段
添加@Order(Ordered.HIGHEST_PRECEDENCE)确保最高优先级执行,
在Tomcat关闭前主动断开所有SSE连接,避免阻塞应用停止
2026-04-03 10:14:11 +08:00
theo
b411baaddd refactor(message): 优化SSE会话注册表的容器关闭事件处理
- 移除@PreDestroy注解
- 添加ContextClosedEvent事件监听器
- 使用Spring事件机制替代JSR-250生命周期回调
- 提高容器关闭时SSE连接清理的可靠性
- 增强代码的Spring框架集成一致性
2026-04-03 09:49:33 +08:00
Ray.Hao
18e46cb5f2 refactor: 统一operator_id为可空字段及安全白名单配置 2026-04-03 09:34:07 +08:00
Ray.Hao
6f94cf9c84 fix: SSE连接阻塞应用关闭,添加@PreDestroy优雅断开所有连接 2026-04-02 23:35:37 +08:00
Ray.Hao
6e09aa273d Merge branch 'master' of https://gitee.com/youlaiorg/youlai-boot 2026-04-02 09:25:15 +08:00
Ray.Hao
c7c6799af4 refactor: 项目结构优化与代码生成模板修复 2026-04-02 09:24:24 +08:00
Ray.Hao
10eb81ccd1 feat: 重构微信小程序认证及优化代码生成模板
- 将微信小程序认证相关类重命名(WechatMini -> WxMa)
- 新增 WxMaAuthenticationToken 和 WxMaAuthenticationProvider
- 调整代码生成前端模板样式与导入路径
2026-03-30 07:48:38 +08:00
Ray.Hao
9cd3ff88f8 refactor: 重构目录结构统一规范
- shared/ → common/(constant、enums、model)
- framework/cache/config/ → framework/cache/(扁平化)
- framework/integration/captcha/ → framework/captcha/
- config/property/ → 各模块 config/ 下
- interfaces/ → module/(sse、mail、sms)
- 移除冗余枚举 LogModuleEnum
2026-03-28 09:00:35 +08:00
Ray.Hao
234b12f297 refactor: 移除Token参数支持,统一异常响应状态码为200或500 2026-03-24 15:23:03 +08:00
Ray.Hao
8f5c1fc8e4 refactor: 优化响应状态码映射,权限不足时返回403 Forbidden 2026-03-24 10:57:05 +08:00
Ray.Hao
8188c82c3d feat: 重构项目结构并新增微信小程序认证模块 2026-03-24 07:52:05 +08:00
Ray.Hao
465e63c99d feat: WebSocket 迁移到 SSE 实现实时推送 2026-03-18 17:41:05 +08:00
Ray.Hao
ba6203424a build: 移除 Spring Boot Admin 依赖和配置 2026-03-16 14:33:20 +08:00
Ray.Hao
63c8cbc873 集成 Spring Boot Admin 监控服务端及客户端依赖,并新增 AdminServerConfig 配置类启用应用监控。 2026-03-16 08:09:03 +08:00
Ray.Hao
2931153422 Merge branch 'master' of https://gitee.com/youlaiorg/youlai-boot 2026-03-13 20:40:01 +08:00
Ray.Hao
5a86f69ecf feat: 添加数据权限获取方法及更新配置 2026-03-13 20:39:57 +08:00