uhf.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package initialize
  2. import (
  3. "fmt"
  4. "go.uber.org/zap"
  5. "wails-app/internal/dao"
  6. "wails-app/internal/global"
  7. parkingService "wails-app/internal/service/parking"
  8. "wails-app/internal/service/uhf"
  9. )
  10. // InitGateController 根据配置初始化真实设备或模拟道闸控制器。
  11. func InitGateController() {
  12. if global.GVA_CONFIG.System.GateSimulator {
  13. parkingService.SetGateController(parkingService.NewSimulatedGateController())
  14. // 生产防护:模拟模式下开闸"永远成功"且 RFID 全部停用,
  15. // 误配会造成"记录显示放行成功但真实道闸从未动作",必须显著告警。
  16. msg := "道闸模拟模式已启用(gate-simulator=true):真实道闸不会动作、UHF/RFID 已停用;生产环境必须关闭!"
  17. global.GVA_LOG.Error(msg)
  18. fmt.Println()
  19. fmt.Println("======================================================================")
  20. fmt.Println("!!! " + msg)
  21. fmt.Println("======================================================================")
  22. fmt.Println()
  23. return
  24. }
  25. InitUHFDevices()
  26. }
  27. func InitUHFDevices() {
  28. var devices []dao.UHFReader
  29. // 从数据库查询所有激活的设备
  30. if err := global.GVA_DB.Where("is_active = ?", true).Find(&devices).Error; err != nil {
  31. return
  32. }
  33. // 逐个启动设备处理协程
  34. for _, d := range devices {
  35. go func(device dao.UHFReader) {
  36. if err := uhf.StartDeviceHandler(&device); err != nil {
  37. global.GVA_LOG.Error("启动设备失败", zap.String("code", device.DeviceCode), zap.Error(err))
  38. }
  39. }(d)
  40. }
  41. }