GeneralDeviceService 改为全局唯一使用靠注入

This commit is contained in:
2025-09-27 00:30:47 +08:00
parent 23b7f66d74
commit 29fa23ba36
4 changed files with 44 additions and 45 deletions

View File

@@ -8,6 +8,7 @@ import (
"time"
"git.huangwc.com/pig/pig-farm-controller/internal/app/api"
"git.huangwc.com/pig/pig-farm-controller/internal/app/service/device"
"git.huangwc.com/pig/pig-farm-controller/internal/app/service/task"
"git.huangwc.com/pig/pig-farm-controller/internal/app/service/token"
"git.huangwc.com/pig/pig-farm-controller/internal/app/service/transport"
@@ -89,6 +90,15 @@ func NewApplication(configPath string) (*Application, error) {
// 初始化设备通信器 (纯粹的通信客户端)
comm := lora.NewChirpStackTransport(cfg.ChirpStack, logger)
// 初始化通用设备服务
generalDeviceService := device.NewGeneralDeviceService(
deviceRepo,
deviceCommandLogRepo,
pendingCollectionRepo,
logger,
comm,
)
// 初始化任务执行器
executor := task.NewScheduler(
pendingTaskRepo,
@@ -96,26 +106,32 @@ func NewApplication(configPath string) (*Application, error) {
deviceRepo,
sensorDataRepo,
planRepo,
comm,
analysisPlanTaskManager,
logger,
deviceCommandLogRepo,
pendingCollectionRepo,
generalDeviceService,
time.Duration(cfg.Task.Interval)*time.Second,
cfg.Task.NumWorkers,
)
// 初始化 API 服务器
apiServer := api.NewAPI(cfg.Server, logger, userRepo, deviceRepo, planRepo, sensorDataRepo, executionLogRepo, tokenService, listenHandler, analysisPlanTaskManager)
apiServer := api.NewAPI(
cfg.Server,
logger,
userRepo,
deviceRepo,
planRepo,
tokenService,
listenHandler,
analysisPlanTaskManager,
)
// 组装 Application 对象
app := &Application{
Config: cfg,
Logger: logger,
Storage: storage,
Executor: executor,
API: apiServer,
// 填充新增的字段
Config: cfg,
Logger: logger,
Storage: storage,
Executor: executor,
API: apiServer,
planRepo: planRepo,
pendingTaskRepo: pendingTaskRepo,
executionLogRepo: executionLogRepo,