89 lines
2.6 KiB
Go
89 lines
2.6 KiB
Go
// @title 智能心率采集分析平台 API
|
||
// @version 1.0
|
||
// @description 智能心率采集分析平台后端服务,基于 Gin 框架,提供心率采集、AI 分析、教案管理、设备管理等功能
|
||
// @host localhost:8081
|
||
// @BasePath /api/v1
|
||
// @securityDefinitions.apikey BearerAuth
|
||
// @in header
|
||
// @name Authorization
|
||
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")
|
||
}
|