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
|
709ee71eba
|
chore: 补充限流配置项与 SQL
|
2026-07-17 00:19:13 +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
|
8fd648c2e0
|
fix: 删除编译失败的单元测试文件
|
2026-06-27 13:24:57 +08:00 |
|
Ray.Hao
|
2d249e449d
|
fix: 优化代码注释与导入规范
|
2026-06-26 00:33:39 +08:00 |
|
Ray.Hao
|
6943f12d79
|
fix(codegen): 修复前端模板语法与对齐问题
|
2026-06-25 12:41:02 +08:00 |
|
Ray.Hao
|
6b6c06370f
|
refactor: 统一实体/限流AOP化/精简日志/文件归位
|
2026-06-24 08:11:23 +08:00 |
|
Ray.Hao
|
862e6ebfbc
|
fix(codegen):移除Velocity变量多余的花括号
|
2026-06-16 16:01:36 +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
|
06857f6c88
|
fix: codegen.yml VO 命名规范修正
|
2026-05-25 17:26:57 +08:00 |
|
Ray.Hao
|
1e789e0c46
|
Redis DB dev→0, prod→1
|
2026-05-23 15:12:48 +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
|
13079f3d13
|
fix: 修复非超管用户路由参数(params)丢失问题
|
2026-05-14 16:56:06 +08:00 |
|
Ray.Hao
|
7a43e9c38c
|
fix: 已知问题修复
|
2026-04-25 16:29:32 +08:00 |
|
Ray.Hao
|
eefcaf10c2
|
feat(codegen): 为生成模板添加ID字段并移除未使用导入
|
2026-04-23 12:49:46 +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 |
|
Theo
|
734f86d4de
|
fix(codegen): 修正后端查询模板导入路径
- 将BaseQuery导入路径从${packageName}.common.base修改为com.youlai.boot.common.base
|
2026-04-10 18:59:27 +08:00 |
|
Ray.Hao
|
d2a37b48d6
|
Merge branch 'master' of https://gitee.com/youlaiorg/youlai-boot
|
2026-04-10 18:35:56 +08:00 |
|
Ray.Hao
|
f243a8d69e
|
fix(codegen): 修正模板字符串转义语法
|
2026-04-10 18:35:48 +08:00 |
|
Theo
|
fa0ab86445
|
refactor(codegen): 更新后端控制器模板中的导入路径
- 将 PageResult 和 Result 的导入路径从 core.web 更新为 common.result
- 保持其他导入和注解功能不变
- 统一结果类的包结构到 common 模块下
|
2026-04-10 18:34:14 +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 |
|