package main import ( "ZhenTuLocalPassiveAdapter/api" "ZhenTuLocalPassiveAdapter/config" "ZhenTuLocalPassiveAdapter/core" "ZhenTuLocalPassiveAdapter/dto" "log" "os" "time" ) func startTask(device config.DeviceMapping, task dto.Task) { fo, err := core.HandleTask(device, task) if err != nil { log.Printf("处理任务失败, TaskID:【%s】, DeviceNo: %s, 错误: %v\n", task.TaskID, task.DeviceNo, err) api.ReportTaskFailure(task.TaskID) return } log.Printf("处理任务成功, TaskID:【%s】, DeviceNo: %s\n", task.TaskID, task.DeviceNo) err = api.UploadTaskFile(task, *fo) if err != nil { log.Printf("上传文件失败, TaskID:【%s】, DeviceNo: %s, 错误: %v\n", task.TaskID, task.DeviceNo, err) api.ReportTaskFailure(task.TaskID) return } log.Printf("上传文件成功, TaskID:【%s】, DeviceNo: %s\n", task.TaskID, task.DeviceNo) api.ReportTaskSuccess(task.TaskID, fo) } func main() { err := config.LoadConfig() if err != nil { log.Println("加载配置文件失败:", err) return } // 日志文件路径 logFilePath := "app.log" // 创建或打开日志文件 logFile, err := os.OpenFile(logFilePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666) if err != nil { log.Fatalf("Failed to open log file: %v", err) } defer logFile.Close() // 设置日志输出到文件 log.SetOutput(logFile) if config.Config.Record.Storage.Type == "local" { _, err = os.Stat(config.Config.Record.Storage.Path) if err != nil { log.Println("录像文件夹配置失败", err) return } else { log.Println("录像文件夹配置有效") } } else { log.Println("录像文件夹配置为OSS") } // 每两秒定时执行 for { // 执行任务 tasks, err := api.SyncTask() if err == nil { for _, task := range tasks { log.Printf("开始处理任务, TaskID:【%s】,DeviceNo: %s,开始时间: %s,结束时间: %s\n", task.TaskID, task.DeviceNo, task.StartTime, task.EndTime) // 处理任务 for _, device := range config.Config.Devices { if device.DeviceNo == task.DeviceNo { // 处理任务 go startTask(device, task) break // 提前返回,避免不必要的循环 } } } } else { log.Println("同步任务失败:", err) } // 等待两秒 <-time.After(2 * time.Second) } }