worker.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. package device
  2. import (
  3. "Wine-Server/utils"
  4. "Wine-Server/utils/tables"
  5. "github.com/gorilla/websocket"
  6. )
  7. // TODO: record operation
  8. func QueryManager(conn *websocket.Conn, manager *tables.ManagerTable, data any) {
  9. if !manager.Super {
  10. _ = conn.WriteJSON(utils.WsError("auth failed."))
  11. return
  12. }
  13. name, _ := data.(string)
  14. res, err := tables.ManagerQuery(name)
  15. if err != nil {
  16. utils.Logger.Println(err)
  17. _ = conn.WriteJSON(utils.WsError("query manager failed"))
  18. return
  19. }
  20. _ = conn.WriteJSON(utils.WsEvent("superConfigDeviceQueryManagerRes", res))
  21. }
  22. func Query(conn *websocket.Conn, manager *tables.ManagerTable, data any) {
  23. if !manager.Super {
  24. _ = conn.WriteJSON(utils.WsError("auth failed."))
  25. return
  26. }
  27. var param queryParam
  28. err := utils.AnyTrans(data, &param)
  29. if err != nil {
  30. _ = conn.WriteJSON(utils.WsError("param error"))
  31. return
  32. }
  33. total, devices, err := tables.DevicesQuery(param.Manager, param.Cond, param.Limit, param.Page)
  34. if err != nil {
  35. utils.Logger.Println(err)
  36. _ = conn.WriteJSON(utils.WsError("query devices failed"))
  37. return
  38. }
  39. _ = conn.WriteJSON(
  40. utils.WsEvent("superConfigDeviceQueryRes", utils.JsonType{"total": total, "devices": devices}),
  41. )
  42. }
  43. func Update(conn *websocket.Conn, manager *tables.ManagerTable, data any) {
  44. if !manager.Super {
  45. _ = conn.WriteJSON(utils.WsError("auth failed."))
  46. return
  47. }
  48. var param updateParam
  49. err := utils.AnyTrans(data, &param)
  50. if err != nil {
  51. _ = conn.WriteJSON(utils.WsError("param error"))
  52. return
  53. }
  54. device := tables.DeviceTable{Id: param.Did}
  55. err = device.Get()
  56. if err != nil {
  57. _ = conn.WriteJSON(utils.WsEvent("superConfigDeviceUpdateRes", utils.Fail("no such device")))
  58. return
  59. }
  60. device.Manager, device.Addr, device.Mark = param.Mid, param.Addr, param.Mark
  61. err = device.UpdateSelf()
  62. if err != nil {
  63. utils.Logger.Println(err)
  64. _ = conn.WriteJSON(utils.WsEvent("superConfigDeviceUpdateRes", utils.Fail("更新失败")))
  65. return
  66. }
  67. _ = conn.WriteJSON(utils.WsEvent("superConfigDeviceUpdateRes", utils.Success(nil)))
  68. operate := tables.OperationTable{
  69. UserType: 0, UserId: manager.Id, OpType: 1, Level: 0, Describe: "修改设备信息",
  70. }
  71. _ = operate.Insert()
  72. }
  73. func Assign(conn *websocket.Conn, manager *tables.ManagerTable, data any) {
  74. if !manager.Super {
  75. _ = conn.WriteJSON(utils.WsError("auth failed."))
  76. return
  77. }
  78. var param assignParam
  79. err := utils.AnyTrans(data, &param)
  80. if err != nil {
  81. _ = conn.WriteJSON(utils.WsError("param error"))
  82. return
  83. }
  84. err = tables.DevicesAssignManager(param.Devices, param.Manager)
  85. if err != nil {
  86. utils.Logger.Println(err)
  87. _ = conn.WriteJSON(utils.WsEvent("superConfigDeviceAssignRes", utils.Fail("分配失败")))
  88. return
  89. }
  90. _ = conn.WriteJSON(utils.WsEvent("superConfigDeviceAssignRes", utils.Success(nil)))
  91. operate := tables.OperationTable{
  92. UserType: 0, UserId: manager.Id, OpType: 1, Level: 0, Describe: "修改设备管理员",
  93. }
  94. _ = operate.Insert()
  95. }