81 lines
2.2 KiB
Go
81 lines
2.2 KiB
Go
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.ProjectType{},
|
|
&models.ProductDefinition{},
|
|
&models.ProductPrototype{},
|
|
&models.ProjectProductTemplate{},
|
|
&models.ProductInventory{},
|
|
&models.ProductSuite{},
|
|
&models.AppFile{},
|
|
&models.AppFileShareCode{},
|
|
&models.MqttHeartRateRecord{},
|
|
&models.MqttStepCountRecord{},
|
|
&models.MqttGatewayStatusRecord{},
|
|
&models.MqttTrainingSessionRecord{},
|
|
&models.Gateway{},
|
|
&models.AIAnalysisRecord{},
|
|
&models.AIPricingConfig{},
|
|
)
|
|
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 := models.EnsureDefaultAIPricing(config.DB); err != nil {
|
|
log.Printf("default ai pricing init failed: %v", err)
|
|
}
|
|
if err := models.EnsureDefaultProjectTypes(config.DB); err != nil {
|
|
log.Printf("default project types init failed: %v", err)
|
|
}
|
|
if err := models.EnsureDefaultProductDefinitions(config.DB); err != nil {
|
|
log.Printf("default product definitions init failed: %v", err)
|
|
}
|
|
if err := models.EnsureDefaultProductPrototypes(config.DB); err != nil {
|
|
log.Printf("default product prototypes init failed: %v", err)
|
|
}
|
|
if err := models.EnsureDefaultProjectProductTemplates(config.DB); err != nil {
|
|
log.Printf("default project product templates 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")
|
|
}
|