worker.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package debugger
  2. import (
  3. "Wine-Server/utils"
  4. "Wine-Server/utils/tables"
  5. "github.com/gorilla/websocket"
  6. )
  7. func keepAlive(conn *websocket.Conn) {
  8. _ = conn.WriteJSON(utils.WsEvent("pon", nil))
  9. }
  10. func listDevices(conn *websocket.Conn) {
  11. result := utils.JsonType{}
  12. for seq, device := range utils.SellerDevices {
  13. table := tables.DeviceTable{Id: seq}
  14. _ = table.Get()
  15. result[seq] = utils.JsonType{
  16. "seq": seq, "online": device.Online, "location": table.Addr,
  17. "ppv1": table.Wines[0].Ppv, "ppv2": table.Wines[1].Ppv,
  18. "ppv3": table.Wines[2].Ppv, "ppv4": table.Wines[3].Ppv,
  19. }
  20. }
  21. _ = conn.WriteJSON(utils.WsEvent("devices", result))
  22. }
  23. func setDebug(conn *websocket.Conn, data any) {
  24. var param debugParam
  25. err := utils.AnyTrans(data, &param)
  26. if err != nil {
  27. _ = conn.WriteJSON(utils.WsError("params error"))
  28. return
  29. }
  30. if device, exist := utils.SellerDevices[param.Seq]; exist {
  31. if device.Online {
  32. _ = device.Conn.WriteJSON(utils.WsEvent("setDebug", param.Debug))
  33. return
  34. }
  35. _ = conn.WriteJSON(utils.WsError("device offline"))
  36. return
  37. }
  38. _ = conn.WriteJSON(utils.WsError("no such device"))
  39. }
  40. func openGate(conn *websocket.Conn, who string, data any) {
  41. var param openParam
  42. err := utils.AnyTrans(data, &param)
  43. if err != nil {
  44. _ = conn.WriteJSON(utils.WsError("params error"))
  45. return
  46. }
  47. if device, exist := utils.SellerDevices[param.Seq]; exist {
  48. if device.Online {
  49. _ = device.Conn.WriteJSON(utils.WsEvent("openGate", utils.JsonType{
  50. "kind": param.Kind,
  51. "who": who,
  52. }))
  53. return
  54. }
  55. _ = conn.WriteJSON(utils.WsError("device offline"))
  56. return
  57. }
  58. _ = conn.WriteJSON(utils.WsError("no such device"))
  59. }
  60. func setLocation(conn *websocket.Conn, data any) {
  61. var param locationParam
  62. err := utils.AnyTrans(data, &param)
  63. if err != nil {
  64. _ = conn.WriteJSON(utils.WsError("params error"))
  65. return
  66. }
  67. table := tables.DeviceTable{Id: param.Seq}
  68. _ = table.Get()
  69. err = table.Update(utils.JsonType{"addr": param.Loc})
  70. if err != nil {
  71. utils.Logger.Printf("update location failed, device[%s], addr[%s], error: %s\n", param.Seq, param.Loc, err)
  72. _ = conn.WriteJSON(utils.WsError("update location failed"))
  73. }
  74. _ = conn.WriteJSON(utils.WsEvent("locationUpdated", nil))
  75. }
  76. func setPpv(conn *websocket.Conn, data any) {
  77. var param ppvParam
  78. err := utils.AnyTrans(data, &param)
  79. if err != nil {
  80. _ = conn.WriteJSON(utils.WsError("params error"))
  81. return
  82. }
  83. table := tables.DeviceTable{Id: param.Seq}
  84. _ = table.Get()
  85. err = table.Update(utils.JsonType{utils.Format("ppv%d", param.Index+1): param.Value})
  86. if err != nil {
  87. utils.Logger.Printf(
  88. "update location failed, device[%s], ppv%d[%s], error: %s\n",
  89. param.Seq, param.Index, param.Value, err,
  90. )
  91. _ = conn.WriteJSON(utils.WsError("update ppv failed"))
  92. }
  93. if device, exist := utils.SellerDevices[param.Seq]; exist {
  94. if device.Online {
  95. _ = device.Conn.WriteJSON(utils.WsEvent("ppvUpdate", utils.JsonType{
  96. "index": param.Index,
  97. "value": param.Value,
  98. }))
  99. return
  100. }
  101. _ = conn.WriteJSON(utils.WsError("device offline"))
  102. return
  103. }
  104. _ = conn.WriteJSON(utils.WsError("no such device"))
  105. }