package initialize import ( "fmt" "go.uber.org/zap" "wails-app/internal/dao" "wails-app/internal/global" parkingService "wails-app/internal/service/parking" "wails-app/internal/service/uhf" ) // InitGateController 根据配置初始化真实设备或模拟道闸控制器。 func InitGateController() { if global.GVA_CONFIG.System.GateSimulator { parkingService.SetGateController(parkingService.NewSimulatedGateController()) // 生产防护:模拟模式下开闸"永远成功"且 RFID 全部停用, // 误配会造成"记录显示放行成功但真实道闸从未动作",必须显著告警。 msg := "道闸模拟模式已启用(gate-simulator=true):真实道闸不会动作、UHF/RFID 已停用;生产环境必须关闭!" global.GVA_LOG.Error(msg) fmt.Println() fmt.Println("======================================================================") fmt.Println("!!! " + msg) fmt.Println("======================================================================") fmt.Println() return } InitUHFDevices() } func InitUHFDevices() { var devices []dao.UHFReader // 从数据库查询所有激活的设备 if err := global.GVA_DB.Where("is_active = ?", true).Find(&devices).Error; err != nil { return } // 逐个启动设备处理协程 for _, d := range devices { go func(device dao.UHFReader) { if err := uhf.StartDeviceHandler(&device); err != nil { global.GVA_LOG.Error("启动设备失败", zap.String("code", device.DeviceCode), zap.Error(err)) } }(d) } }