-
- 通过统一配置选择设备属性历史和消息日志的存储后端,默认 TDengine - 抽取存储 DAO,下沉字段映射、表结构同步和查询逻辑 - 新增 IoTDB 表模型实现、数据源配置、驱动和启动校验 - 使用 device_id 作为唯一 TAG,避免消息 ID 导致元数据基数增长 - 完善字段校验、历史查询过滤及相关单测
-
【背景】 yudao.api-encrypt 开启时,ApiEncryptFilter 构造函数会调用 hutool 的 SecureUtil.aes() 创建 AES 加密器,底层经 JCE(javax.crypto.Cipher)加载 BouncyCastle Provider。在低版本 JDK 8(8u120 以下)上,bcprov-jdk18on 无法通过 JCE 签名认证,导致 Fat Jar 启动失败: Failed to instantiate [apiEncryptFilter]; nested exception is cn.hutool.crypto.CryptoException: SecurityException: JCE cannot authenticate the provider BC at javax.crypto.Cipher.getInstance(Cipher.java:652) 【JCE 根因】 bcprov jar 是 BouncyCastle 自签名(BC2048KE.DSA),非 Oracle 信任的 CA。 JDK 8u120 及更早版本的 JCE 对 Provider jar 做强签名校验且存在认证缺陷, 对自签名证书校验失败;8u121 起修复,9+ 彻底移除该强校验机制。 实测同一 bcprov-jdk18on-1.80.jar: JDK 8u20 → JCE cannot authenticate the provider BC ❌ JDK 8u121+ → 正常 ✅ JDK 17/25 → 正常 ✅(JDK9+ 已无此机制) 故该报错为低版本 JDK 8 的环境问题,非项目代码 bug。 【改动】 将 api-encrypt.enable 默认值改为 false,规避低版本 JDK 8 启动失败。 不影响加密功能本身:需要 API 加密的用户改成 enable: true 即可, 建议同时将 JDK 升级到 8u121 以上(或 17/25)。 【性能】 已实测:开启 vs 关闭的启动耗时基本无差异(JDK25 实测各 3 轮, 平均 17.7s vs 17.0s,差值在误差范围内),关闭不带来启动加速, 仅用于兼容低版本 JDK 8。
-
…portForm 组件对齐 user 模块,补齐 Vben5 4 套 frontType 单测与 importEnable=true 断言 基于 #1082 #1083 的二开
-
# Conflicts: # yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/handler/GlobalExceptionHandler.java # yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/vo/device/IotDeviceMqttConnectionParamsRespVO.java # yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/vo/device/IotDeviceRespVO.java # yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/ota/IotOtaFirmwareController.java # yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/ota/IotOtaUpgradeRecordController.java # yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/thingmodel/vo/IotThingModelRespVO.java