feat(task): 新增定时任务控制系统与分享码配置

- 增加设备持久化、阻抗数据持久化、分享码持久化定时任务
- 通过环境变量 ENABLE_PERSIST_TASK 和 ENABLE_IMPEDANCE_PERSIST_TASK 控制任务启用
- 分享码配置新增最大数量和TTL时间支持多种时间单位(m/h/d)
- 实现任务批量处理、锁机制及失败重试保障数据一致性
- 定时任务启动集成至服务主流程,增强系统可配置性和运维便利性

feat(ota): 新增根据设备型号和版本号查询版本名称接口

- 实现 GET /audio/getVerName 接口返回唯一 OTA 版本名称 verName
- 添加请求参数校验及错误处理逻辑
- 在仓库层新增按型号和版本号查询版本名称的方法
- 完善接口文档及Swagger定义,支持前端调用查询版本名称功能
This commit is contained in:
eafonyang
2026-09-02 11:13:14 +08:00
parent ceea657ccf
commit dd92845bc2
8 changed files with 273 additions and 21 deletions
+15
View File
@@ -131,6 +131,21 @@ func (r *OTARepository) GetLatestOTANotTarget(ctx context.Context, modelVal stri
return &o, nil
}
// GetVerNameByVersion 按 model+verCode 查询版本名称
func (r *OTARepository) GetVerNameByVersion(ctx context.Context, modelVal string, version int) (string, bool, error) {
const query = `SELECT verName FROM ota WHERE model = ? AND verCode = ? LIMIT 1`
var verName string
err := r.db.QueryRowContext(ctx, query, modelVal, version).Scan(&verName)
if err == sql.ErrNoRows {
return "", false, nil
}
if err != nil {
return "", false, fmt.Errorf("query ota verName: %w", err)
}
return verName, true, nil
}
// IsInBlackList 检查 mac 是否在指定 ota_id 的黑名单中
func (r *OTARepository) IsInBlackList(ctx context.Context, otaID int, mac string) (bool, error) {
const query = `SELECT COUNT(*) FROM black_list WHERE ota_id = ? AND mac = ?`