package main import ( "hr_receiver/config" "hr_receiver/controllers" "hr_receiver/models" "hr_receiver/mqtt" "hr_receiver/routes" "log" ) func main() { // 初始化配置 config.InitConfig() // 连接数据库 config.ConnectDB() config.DB.Debug() // 自动迁移模型 config.DB.AutoMigrate(&models.TrainRecord{}, &models.TrainingData{}, &models.Belt{}, &models.HeartRate{}, &models.BeltAnalysis{}, &models.StepTrainRecord{}, &models.StepHeartRate{}, &models.StepStrideFreq{}, &models.RegressionResult{}, &models.User{}, &models.UserRegionBinding{}, &models.Kindergarten{}, &models.AppFile{}, &models.AppFileShareCode{}, &models.MqttHeartRateRecord{}, &models.MqttStepCountRecord{}, &models.MqttGatewayStatusRecord{}, &models.MqttTrainingSessionRecord{}, &models.Gateway{}, ) if err := models.BackfillLegacyUserPermissions(config.DB); err != nil { log.Printf("legacy user permission backfill failed: %v", err) } if err := models.EnsureDefaultAdmin(config.DB); err != nil { log.Printf("default admin init failed: %v", err) } if err := mqtt.Start(config.DB, config.App.MQTT); err != nil { log.Printf("mqtt listener start failed: %v", err) } mqtt.InitDebugService(config.DB, config.App.MQTT) controllers.StartLessonPlanCleanupJob(config.DB) // 启动服务 r := routes.SetupRouter() r.Run(":8081") }