worker.go 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. package advertise
  2. import (
  3. "Wine-Server/utils"
  4. "Wine-Server/utils/tables"
  5. "github.com/gorilla/websocket"
  6. "os"
  7. )
  8. func Query(conn *websocket.Conn, manager *tables.ManagerTable, data any) {
  9. if !manager.Super {
  10. _ = conn.WriteJSON(utils.WsError("auth failed."))
  11. return
  12. }
  13. var param queryParam
  14. err := utils.AnyTrans(data, &param)
  15. if err != nil {
  16. _ = conn.WriteJSON(utils.WsError("param error"))
  17. return
  18. }
  19. total, ads, err := tables.AdvertisesQuery(param.Desc, param.Type, param.Limit, param.Page)
  20. if err != nil {
  21. utils.Logger.Println(err)
  22. _ = conn.WriteJSON(utils.WsError("query advertises failed"))
  23. return
  24. }
  25. _ = conn.WriteJSON(utils.WsEvent("superConfigAdvertiseQueryRes", utils.JsonType{"total": total, "ads": ads}))
  26. }
  27. func Delete(conn *websocket.Conn, manager *tables.ManagerTable, data any) {
  28. if !manager.Super {
  29. _ = conn.WriteJSON(utils.WsError("auth failed."))
  30. return
  31. }
  32. var ids []uint32
  33. err := utils.AnyTrans(data, &ids)
  34. if err != nil {
  35. _ = conn.WriteJSON(utils.WsError("param error"))
  36. return
  37. }
  38. Err := false
  39. for _, aid := range ids {
  40. adv := tables.AdvertiseTable{Id: aid}
  41. err = adv.Get()
  42. if err != nil {
  43. utils.Logger.Println(err)
  44. Err = true
  45. } else {
  46. err = os.Remove(adv.Src)
  47. if err != nil {
  48. utils.Logger.Println(err)
  49. Err = true
  50. } else {
  51. _ = adv.Delete()
  52. }
  53. }
  54. }
  55. if Err {
  56. _ = conn.WriteJSON(utils.WsEvent("superConfigAdvertiseDeleteRes", utils.Fail("删除失败")))
  57. return
  58. }
  59. _ = conn.WriteJSON(utils.WsEvent("superConfigAdvertiseDeleteRes", utils.Success(nil)))
  60. go informDevices()
  61. operate := tables.OperationTable{
  62. UserType: 0, UserId: manager.Id, OpType: 2, Level: 1,
  63. Describe: utils.Format("删除广告:[%s]", utils.Uint32ListJoin(ids)),
  64. }
  65. _ = operate.Insert()
  66. }
  67. func Update(conn *websocket.Conn, manager *tables.ManagerTable, data any) {
  68. if !manager.Super {
  69. _ = conn.WriteJSON(utils.WsError("auth failed."))
  70. return
  71. }
  72. var param updateParam
  73. err := utils.AnyTrans(data, &param)
  74. if err != nil {
  75. _ = conn.WriteJSON(utils.WsError("param error"))
  76. return
  77. }
  78. adv := tables.AdvertiseTable{Id: param.Id}
  79. err = adv.Get()
  80. if err != nil {
  81. _ = conn.WriteJSON(utils.WsEvent("superConfigAdvertiseUpdateRes", utils.Fail("no such advertise")))
  82. return
  83. }
  84. if param.Base64 != "" {
  85. var ext string
  86. var reason string
  87. ext, reason, err = utils.SaveBase64(param.Base64, utils.Format("static/adv/%d", param.Id))
  88. if err != nil {
  89. _ = conn.WriteJSON(utils.WsEvent("superConfigAdvertiseUpdateRes", utils.Fail(reason)))
  90. return
  91. }
  92. adv.Src = utils.Format("static/adv/%d.%s", utils.ServerPrefix, param.Id, ext)
  93. }
  94. adv.Order, adv.Type, adv.Time = param.Order, param.Type, utils.TimeNow()
  95. adv.Duration, adv.Describe = param.Duration, param.Describe
  96. err = adv.UpdateSelf()
  97. if err != nil {
  98. _ = conn.WriteJSON(utils.WsEvent("superConfigAdvertiseUpdateRes", utils.Fail("更新失败")))
  99. return
  100. }
  101. _ = conn.WriteJSON(utils.WsEvent("superConfigAdvertiseUpdateRes", utils.Success(nil)))
  102. go informDevices()
  103. operate := tables.OperationTable{
  104. UserType: 0, UserId: manager.Id, OpType: 1, Level: 0,
  105. Describe: utils.Format("更新广告:%d", param.Id),
  106. }
  107. _ = operate.Insert()
  108. }
  109. func Add(conn *websocket.Conn, manager *tables.ManagerTable, data any) {
  110. if !manager.Super {
  111. _ = conn.WriteJSON(utils.WsError("auth failed."))
  112. return
  113. }
  114. var param addParam
  115. err := utils.AnyTrans(data, &param)
  116. if err != nil {
  117. _ = conn.WriteJSON(utils.WsError("param error"))
  118. return
  119. }
  120. if param.Base64 == "" {
  121. _ = conn.WriteJSON(utils.WsEvent("superConfigAdvertiseAddRes", utils.Fail("资源不可为空")))
  122. return
  123. }
  124. var id uint32
  125. id, err = tables.AdvertiseQueryMaxId()
  126. if err != nil {
  127. _ = conn.WriteJSON(utils.WsEvent("superConfigAdvertiseAddRes", utils.Fail("添加失败 01")))
  128. return
  129. }
  130. id++
  131. var ext string
  132. var reason string
  133. ext, reason, err = utils.SaveBase64(param.Base64, utils.Format("static/adv/%d", id))
  134. if err != nil {
  135. _ = conn.WriteJSON(utils.WsEvent("superConfigAdvertiseAddRes", utils.Fail(reason)))
  136. return
  137. }
  138. adv := tables.AdvertiseTable{
  139. Id: id, Order: param.Order, Type: param.Type, Duration: param.Duration, Describe: param.Describe,
  140. Src: utils.Format("static/adv/%d.%s", utils.ServerPrefix, id, ext),
  141. }
  142. err = adv.Insert()
  143. if err != nil {
  144. _ = conn.WriteJSON(utils.WsEvent("superConfigAdvertiseAddRes", utils.Fail("添加失败 02")))
  145. return
  146. }
  147. _ = conn.WriteJSON(utils.WsEvent("superConfigAdvertiseAddRes", utils.Success(nil)))
  148. go informDevices()
  149. operate := tables.OperationTable{
  150. UserType: 0, UserId: manager.Id, OpType: 0, Level: 0,
  151. Describe: utils.Format("新增广告:%d", adv.Id),
  152. }
  153. _ = operate.Insert()
  154. }
  155. func informDevices() {
  156. ads, err := tables.AdvertiseListAll()
  157. if err != nil {
  158. return
  159. }
  160. for _, item := range utils.SellerDevices {
  161. if item.Online {
  162. _ = item.Conn.WriteJSON(utils.WsEvent("advertiseUpdate", ads))
  163. }
  164. }
  165. }