c4cd8b6f5d
- 新增CurveCache实现Redis曲线数据缓存与分布式锁机制,避免重复请求 - 增加CurveHandler支持目标曲线接口,通过EQ API获取并缓存曲线数据 - Config新增EqualizeConfig配置,支持环境变量动态配置 - Repository新增CurveRepository,按brand和name查询模型与目标曲线数据 - 路由更新,集成/getCurve接口处理目标曲线请求 - OTA模型字段优化,bool类型改为BoolInt,实现数据库int与JSON bool映射 - 统一响应格式,调整response包中OK和Fail函数消息字段命名 - 修改服务端配置默认DB IP,支持Equalize参数传递到路由层 - 新增CSV解析实现,从文件读取测量与目标曲线数据 - 修改OTA处理逻辑,修复定向升级判断bug - Java层新增EqualizeController和ModelService对应功能,保持客户端接口兼容与调用逻辑一致
61 lines
1.7 KiB
Go
61 lines
1.7 KiB
Go
package router
|
|
|
|
import (
|
|
"database/sql"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/luxsin/app-api/internal/cache"
|
|
"github.com/luxsin/app-api/internal/config"
|
|
"github.com/luxsin/app-api/internal/handler"
|
|
"github.com/luxsin/app-api/internal/middleware"
|
|
"github.com/luxsin/app-api/internal/repository"
|
|
"github.com/luxsin/app-api/internal/search"
|
|
"github.com/redis/go-redis/v9"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
func New(log *zap.Logger, db *sql.DB, searchClient *search.Client, rdb *redis.Client, eqCfg config.EqualizeConfig) *gin.Engine {
|
|
r := gin.New()
|
|
r.Use(gin.Recovery())
|
|
r.Use(middleware.RequestID())
|
|
r.Use(middleware.Logger(log))
|
|
r.Use(middleware.CORS())
|
|
|
|
// Cache
|
|
brandCache := cache.NewBrandCache(rdb)
|
|
modelCache := cache.NewModelCache(rdb)
|
|
curveCache := cache.NewCurveCache(rdb)
|
|
|
|
// Repository
|
|
brandRepo := repository.NewBrandRepository(db, brandCache)
|
|
modelRepo := repository.NewModelRepository(db, modelCache)
|
|
otaRepo := repository.NewOTARepository(db)
|
|
curveRepo := repository.NewCurveRepository(db)
|
|
|
|
// Handler
|
|
health := handler.NewHealthHandler()
|
|
brand := handler.NewBrandHandler(brandRepo, log)
|
|
model := handler.NewModelHandler(modelRepo, log)
|
|
modelList := handler.NewModelListHandler(searchClient, log)
|
|
device := handler.NewDeviceHandler(rdb, log)
|
|
ota := handler.NewOTAHandler(otaRepo, log)
|
|
curve := handler.NewCurveHandler(curveRepo, curveCache, eqCfg, log)
|
|
|
|
v1 := r.Group("/api/v1")
|
|
{
|
|
v1.GET("/health", health.Check)
|
|
}
|
|
|
|
audio := r.Group("/audio")
|
|
{
|
|
audio.GET("/getBrand", brand.GetBrand)
|
|
audio.GET("/getModel", model.GetModel)
|
|
audio.GET("/modelList", modelList.ModelList)
|
|
audio.GET("/reportDevInfo", device.ReportDevInfo)
|
|
audio.GET("/ota", ota.GetOTA)
|
|
audio.GET("/getCurve", curve.GetCurve)
|
|
}
|
|
|
|
return r
|
|
}
|