TongTongStudio
|
035e21a432
|
feat: 新增 TDengine 多数据源与 MQTT v5 客户端支持
- 新增 DataSourceConfig 配置类,支持 MySQL(主)与 TDengine(时序)多数据源,使用 Druid 手动配置以兼容 Spring Boot 4.x
- 重构 MQTT 配置,从 spring-integration-mqtt 迁移至 Paho MQTT v5 原生客户端,实现消息发布/订阅与优雅关闭
- 重构 MqttMessageHandler 与 MqttProducer,适配 v5 客户端回调,优化设备状态消息处理逻辑(online/offline 字段调整)
- 新增设备修改昵称接口(PUT /api/v1/devices/{id})与 TDengine 心跳最后在线时间查询接口
- 设备列表查询填充在线状态(Redis),增强设备管理功能
- 配置缓存预热失败时仅记录日志,避免数据库不可用导致应用启动失败
- 更新开发与生产环境配置,添加 TDengine 数据源及 MQTT 认证信息
|
2026-08-12 08:26:30 +08:00 |
|
TongTongStudio
|
bc68004c6e
|
feat(device): 同步更新设备信息中的设备型号和推送ID
在上报系统信息时同步更新设备型号,在上报其他信息时同步更新推送ID,确保设备表信息保持最新。
|
2026-08-10 01:59:26 +08:00 |
|
|
|
0634491a01
|
feat(device): 添加极光推送注册ID字段
在设备其他信息相关实体、请求和响应对象中新增pushId字段,用于存储极光推送注册ID。
|
2026-08-09 23:44:37 +08:00 |
|
TongTongStudio
|
369a940344
|
feat(device): 新增设备在线状态和屏幕状态SSE广播,并修复Redis反序列化问题
- MqttMessageHandler 收到心跳后通过 SseService 广播设备在线状态(含屏幕状态)
- SseService/SseSessionManager 新增设备在线状态和屏幕状态的广播方法
- DeviceOnlineServiceImpl 修复 Redis 反序列化为 LinkedHashMap 时的类型转换问题
- DeviceOnlineServiceImpl 修复批量查询时空 SN 导致索引不对齐的问题
|
2026-08-09 20:06:03 +08:00 |
|
TongTongStudio
|
ba5b9eddc8
|
refactor(message): 将MQTT模块重命名为support并清理配置
将MQTT相关类从message.mqtt包迁移至support.mqtt包,移除application.yml中冗余的延迟初始化注释配置。
|
2026-08-09 15:55:38 +08:00 |
|
TongTongStudio
|
a0c1596d28
|
feat(device): 实现新增设备接口
完善设备新增接口,增加SN唯一性校验、参数非空验证和默认状态设置。
|
2026-08-09 13:43:43 +08:00 |
|
TongTongStudio
|
927332ad5d
|
feat(device): 添加MQTT设备在线状态管理与Redis容错机制
- 集成Spring Integration MQTT与Eclipse Paho客户端
- 添加设备在线状态填充逻辑,支持批量查询心跳数据
- 优化Redis配置,使用Lazy初始化与通用序列化器
- 增加Redis异常处理与防重复提交Fail-Open机制
- 新增Redis设备模块常量与在线状态VO
- 完善MQTT与Redis集群连接配置
|
2026-08-08 20:31:29 +08:00 |
|
|
|
e5e3f2c741
|
feat(app): 实现安装包文件下载、优化AAB/APKS解析并完善异常处理
- 新增安装包文件流下载接口,支持通过ID下载原始文件并设置正确的文件名
- 重构AAB/APKS解析逻辑,直接使用bundletool依赖库替代命令行调用
- 为AAB/APKS添加图标提取功能,按密度优先策略选择最清晰图标
- 分离APKS与APKM/XAPK解析流程,前者使用bundletool解析,后者保留解包方案
- 添加NoResourceFoundException全局异常处理,返回404而非默认错误页
|
2026-08-08 01:52:03 +08:00 |
|
|
|
3422d546c5
|
feat(packages): 支持AAB/APKS/APKM/XAPK格式安装包解析
新增AndroidPackageTypeDetector用于识别安装包类型,扩展ApkMetaParser以支持AAB、APKS、APKM、XAPK等容器格式的元数据解析,并在上传服务中集成解析逻辑,完善应用包信息提取能力。
|
2026-08-07 19:54:16 +08:00 |
|
TongTongStudio
|
8ee05af6c7
|
feat(app): add app category management and package repository with apk parsing
新增应用分类管理(MongoDB CRUD + 图标上传)和应用安装包资源库(上传/分页/详情/删除),集成apk-parser自动解析APK元数据(包名、版本、权限、CPU架构、图标),并添加对应的SQL菜单初始化脚本与授权配置。
|
2026-08-07 12:20:04 +08:00 |
|
TongTongStudio
|
33fcbcff3e
|
feat(device): add app icon management with pagination and delete functionality
新增应用图标库分页查询和图标删除接口,并完成对应的菜单与按钮权限初始化。
|
2026-08-06 02:25:25 +08:00 |
|
TongTongStudio
|
e9a1773d88
|
feat(device): 新增设备截图管理功能
- 新增截图列表查询、单张删除、一键清空接口
- 上传截图时清洗文件名防路径穿越,filePath 仅存相对路径
- 截图静态资源映射禁用缓存,避免浏览器复用旧图
- 新增 ScreenshotVO 视图对象及 ScreenshotService 实现
|
2026-08-06 01:42:46 +08:00 |
|
TongTongStudio
|
9d6498872f
|
feat(device): 新增设备定位查询接口并修复定位数据存储问题
- 新增 GET /{sn}/location 接口,支持网页端查询设备最新定位信息
- 新增 DeviceLocationVO 视图对象用于返回定位数据
- 在 LocationService 中实现 getLatestBySn 方法
- 修复 map_error 字段类型错误:从 INT 改为 VARCHAR(255)
- 修复移动端上报定位时 lastSuccessfulTime 缺失问题,由服务端统一写入
|
2026-08-05 23:15:34 +08:00 |
|
|
|
ecaad43014
|
feat(common): 新增停止应用操作类型枚举
在ActionTypeEnum中新增STOP_APP(39, "停止应用")枚举值。
|
2026-08-05 21:58:18 +08:00 |
|
TongTongStudio
|
7145bbbcda
|
Merge branch 'master' of ssh://gitea.ttstd.com:2222/tongtong/youlai-boot
# Conflicts:
# sql/app_icon.sql
# src/main/java/com/youlai/boot/common/config/WebMvcConfig.java
# src/main/java/com/youlai/boot/common/enums/ActionTypeEnum.java
# src/main/java/com/youlai/boot/device/controller/AppIconController.java
# src/main/java/com/youlai/boot/device/controller/DeviceOpsController.java
# src/main/java/com/youlai/boot/device/controller/MobileController.java
# src/main/java/com/youlai/boot/device/model/entity/AppIcon.java
# src/main/java/com/youlai/boot/device/model/vo/AppIconVO.java
# src/main/java/com/youlai/boot/device/service/AppIconService.java
# src/main/java/com/youlai/boot/device/service/DeviceService.java
# src/main/java/com/youlai/boot/device/service/impl/AppIconServiceImpl.java
# src/main/java/com/youlai/boot/device/service/impl/DeviceServiceImpl.java
|
2026-08-05 21:55:59 +08:00 |
|
TongTongStudio
|
5cc08a73ff
|
feat(device): 重构应用图标静态资源路径并新增停止应用功能
- 将图标访问路径从 /api/v1/device/app_icon 迁移至 /static/app_icon,避免与业务 Controller 命名空间冲突,并添加 immutable 长缓存策略
- 新增 STOP_APP(39) 操作类型及 DeviceOpsController.stopApp 接口,支持强制停止应用
- 图标上传接口增加 appName 参数,支持应用名称上报与刷新,并做长度截断保护
- 图标锁定场景改用 BusinessException(APP_ICON_LOCKED) 替代 RuntimeException,设备端可据此识别终态不再重试
- 新增 /static/** 路径到安全白名单,允许 img 标签无 token 访问图标资源
- 同步更新数据库表结构注释及实体/VO 字段
|
2026-08-05 21:52:37 +08:00 |
|
|
|
157e708a5b
|
feat(device): 重构应用图标功能,新增停止应用操作
- 静态资源路径从 /api/v1/device/app_icon 迁移至 /static/app_icon,避免与 Controller 路径冲突,并添加 immutable 长缓存策略
- 数据库及实体新增 app_name 字段,支持图标上报时同步应用名称
- 图标锁定场景改用 BusinessException(APP_ICON_LOCKED) 明确业务拒绝码,设备端可识别为终态
- 新增 STOP_APP 操作类型及对应推送接口
- 安全配置放行 /static/** 静态资源路径
|
2026-08-05 21:49:27 +08:00 |
|
|
|
4f4c60ce72
|
feat(device): 新增应用管理功能
新增应用启动、清除数据、卸载等远程操作功能,并优化应用列表接口支持图标展示。
同时修正了移动端上报接口的日志操作类型,补充了应用相关的操作枚举。
|
2026-08-05 16:38:57 +08:00 |
|
TongTongStudio
|
749cf44754
|
refactor(device): 重构设备基本信息表结构与请求实体
将 sys_sn_system_info 表的字段从旧的 sn_ 前缀命名统一重构为语义化命名,并扩充基本信息字段;同步更新 Java 请求实体 SnSystemInfoReq,字段与数据库表完全对齐,同时调整 display_version 列长度至 256。
|
2026-08-05 10:53:35 +08:00 |
|
TongTongStudio
|
3608c205b9
|
refactor(device): 重构设备信息模块,按面板拆分数据存储和接口
将原 SnDeviceSystemInfo 单一实体拆分为基本信息、硬件、网络、安全、其他信息五个独立子表和服务,重构 DeviceController 和 MobileController 接口以支持分面板查询和上传
|
2026-08-05 02:09:38 +08:00 |
|
TongTongStudio
|
537644ab2e
|
refactor(device): 重命名硬件信息为系统信息
将 Hardware 相关类、接口、方法、API 端点统一重命名为 SystemInfo,包括实体、VO、Req、Mapper、Service 及 Controller,并更新数据库表名映射。
|
2026-08-04 22:12:50 +08:00 |
|
TongTongStudio
|
5915da6517
|
fix(log): 修复设备类接口无用户上下文时操作日志报错
- 新增兜底操作人ID常量(99L)和X-Device-SN头解析
- 无登录用户时使用兜底ID和设备SN标识操作来源
- 调整文件上传临时目录为/tmp/ttstd/uploads
|
2026-08-04 21:56:45 +08:00 |
|
|
|
fb75cce427
|
Merge branch 'master' of https://gitee.com/youlaiorg/youlai-boot
|
2026-08-02 15:22:39 +08:00 |
|
Ray.Hao
|
155fc69a78
|
refactor: 移除 project.version 配置避免启动解析异常
- 删除 application.yml 的 project.version 段,banner 与 OpenApi 不再读取该属性
- 移除 banner.txt 的 YouLai Boot Version 行
- OpenApiConfig 不再显示接口文档版本号,删除无用的 Environment 依赖
- 为 config.import: classpath:codegen.yml 补充代码生成模块配置说明注释
|
2026-08-02 14:18:44 +08:00 |
|
Ray.Hao
|
afc1780705
|
fix: 角色分页缺少 updateTime,重构 mybatis 自动填充处理器
AutoFillMetaObjectHandler 重命名为 MetaFieldFillHandler,移除 handler 子包
添加 spring-boot-starter-webmvc-test 测试依赖
|
2026-08-02 09:16:29 +08:00 |
|
|
|
519f582f86
|
Merge branch 'master' of gitee.com:youlaiorg/youlai-boot
|
2026-07-31 11:52:06 +08:00 |
|
Ray.Hao
|
27ea1cf114
|
refactor(system): 重命名包名和类名
- system/security/port → adapter
- system/job → schedule
- system/handler/XxlJobSampleHandler → schedule/XxlJobSample
- system/listener/UserImportListener → service/UserImportReader
- framework/security/port: Javadoc @see 同步更新
|
2026-07-31 09:35:35 +08:00 |
|
TongTongStudio
|
ba216da55b
|
Merge branch 'master' of gitee.com:youlaiorg/youlai-boot
# Conflicts:
# src/main/java/com/youlai/boot/config/SecurityConfig.java
# src/main/java/com/youlai/boot/config/property/TencentSmsProperties.java
# src/main/java/com/youlai/boot/support/sms/impl/AliyunSmsServiceImpl.java
# src/main/java/com/youlai/boot/support/sms/impl/TencentSmsService.java
# src/main/resources/application-dev.yml
# src/main/resources/application-prod.yml
|
2026-07-31 02:32:01 +08:00 |
|
TongTongStudio
|
924d4af5e6
|
feat(developer): 完善开发者选项CRUD与SN查询逻辑
|
2026-07-31 02:15:17 +08:00 |
|
Ray.Hao
|
07616d9118
|
refactor: 项目包结构优化
|
2026-07-31 00:21:49 +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 |
|