worker.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package trade
  2. import (
  3. "Wine-Server/utils"
  4. "Wine-Server/utils/tables"
  5. "github.com/gorilla/websocket"
  6. )
  7. func QueryUser(conn *websocket.Conn, manager *tables.ManagerTable, data any) {
  8. if !manager.Super {
  9. _ = conn.WriteJSON(utils.WsEvent("superOrderTradeQueryUserRes", utils.Fail("权限不足")))
  10. return
  11. }
  12. var param queryUserParam
  13. err := utils.AnyTrans(data, &param)
  14. if err != nil {
  15. utils.Logger.Println(err)
  16. _ = conn.WriteJSON(utils.WsEvent("superOrderTradeQueryUserRes", utils.Fail("参数错误")))
  17. return
  18. }
  19. total, users, err := tables.UserQuery(param.Id, param.Vip, param.Limit, param.Page)
  20. if err != nil {
  21. utils.Logger.Println(err)
  22. _ = conn.WriteJSON(utils.WsEvent("superOrderTradeQueryUserRes", utils.Fail("查询用户失败")))
  23. return
  24. }
  25. _ = conn.WriteJSON(utils.WsEvent(
  26. "superOrderTradeQueryUserRes",
  27. utils.Success(utils.JsonType{"total": total, "list": users}),
  28. ))
  29. }
  30. func QueryTrade(conn *websocket.Conn, manager *tables.ManagerTable, data any) {
  31. if !manager.Super {
  32. _ = conn.WriteJSON(utils.WsEvent("superOrderTradeQueryTradeRes", utils.Fail("权限不足")))
  33. return
  34. }
  35. var param queryTradeParam
  36. err := utils.AnyTrans(data, &param)
  37. if err != nil {
  38. utils.Logger.Println(err)
  39. _ = conn.WriteJSON(utils.WsEvent("superOrderTradeQueryTradeRes", utils.Fail("参数错误")))
  40. return
  41. }
  42. total, trades, err := tables.TradeQuery(param.Cond, param.Uid, param.Limit, param.Page)
  43. if err != nil {
  44. utils.Logger.Println(err)
  45. _ = conn.WriteJSON(utils.WsEvent("superOrderTradeQueryTradeRes", utils.Fail("查询订单失败")))
  46. return
  47. }
  48. _ = conn.WriteJSON(utils.WsEvent(
  49. "superOrderTradeQueryTradeRes",
  50. utils.Success(utils.JsonType{"total": total, "list": trades}),
  51. ))
  52. }
  53. func Refund(conn *websocket.Conn, manager *tables.ManagerTable, data any) {
  54. if !manager.Super {
  55. _ = conn.WriteJSON(utils.WsEvent("superOrderTradeRefundRes", utils.Fail("权限不足")))
  56. return
  57. }
  58. var param refundParam
  59. err := utils.AnyTrans(data, &param)
  60. if err != nil {
  61. utils.Logger.Println(err)
  62. _ = conn.WriteJSON(utils.WsEvent("superOrderTradeRefundRes", utils.Fail("参数错误")))
  63. return
  64. }
  65. trade := tables.TradeTable{Id: param.Tid}
  66. err = trade.Get()
  67. if err != nil {
  68. utils.Logger.Println(err)
  69. _ = conn.WriteJSON(utils.WsEvent("superOrderTradeRefundRes", utils.Fail("订单查询失败")))
  70. return
  71. }
  72. if trade.Cash < param.Cash {
  73. utils.Logger.Println(err)
  74. _ = conn.WriteJSON(utils.WsEvent("superOrderTradeRefundRes", utils.Fail("超出原订单金额")))
  75. return
  76. }
  77. refund := tables.RefundTable{Tid: param.Tid, Manager: manager.Id, Cash: param.Cash, Reason: param.Reason}
  78. err = refund.Insert()
  79. if err != nil {
  80. err = refund.Get()
  81. refund.Manager, refund.Cash, refund.Reason = manager.Id, param.Cash, param.Reason
  82. err = refund.UpdateSelf()
  83. }
  84. _ = conn.WriteJSON(utils.WsEvent("superOrderTradeRefundRes", utils.Success(nil)))
  85. user := tables.UserTable{Id: trade.Payer}
  86. _ = user.Get()
  87. user.RefundCount++
  88. user.BuyCost -= uint64(param.Cash)
  89. user.RefundCost += uint64(param.Cash)
  90. _ = user.UpdateSelf()
  91. operate := tables.OperationTable{
  92. UserType: 0, UserId: manager.Id, OpType: 5, Level: 2,
  93. Describe: utils.Format("订单号:%s,用户:%s,退款金额:%d", param.Tid, trade.Payer, param.Cash),
  94. }
  95. _ = operate.Insert()
  96. }