SuperOrder.java 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. package com.huimv.wine.ws.su;
  2. import cn.hutool.core.util.ObjectUtil;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  6. import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  7. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  8. import com.huimv.wine.common.EventWsErrUtil;
  9. import com.huimv.wine.entity.*;
  10. import com.huimv.wine.entity.vo.TradeQueryVo;
  11. import com.huimv.wine.entity.vo.WsEvent;
  12. import com.huimv.wine.mapper.OperationMapper;
  13. import com.huimv.wine.mapper.RefundMapper;
  14. import com.huimv.wine.mapper.TradeMapper;
  15. import com.huimv.wine.mapper.UserMapper;
  16. import com.huimv.wine.utils.Result;
  17. import com.huimv.wine.utils.WebsocketManagerUtil;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.stereotype.Component;
  20. import javax.websocket.Session;
  21. import java.util.ArrayList;
  22. import java.util.Date;
  23. import java.util.List;
  24. @Component
  25. public class SuperOrder {
  26. @Autowired
  27. private UserMapper userMapper;
  28. @Autowired
  29. private TradeMapper tradeMapper;
  30. @Autowired
  31. private RefundMapper refundMapper;
  32. @Autowired
  33. private OperationMapper operationMapper;
  34. public void handle(String event, JSONObject data, Session session, Manager manager) {
  35. switch (event) {
  36. case "superOrderTradeQueryUser":
  37. QueryUser(session, manager, data);
  38. break;
  39. case "superOrderTradeQueryTrade":
  40. QueryTrade(session, manager, data);
  41. break;
  42. case "superOrderTradeRefund":
  43. Refund(session, manager, data);
  44. break;
  45. case "superOrderChangeQueryWorker":
  46. QueryWorker(session, manager, data);
  47. break;
  48. case "superOrderChangeQueryOrder":
  49. QueryOrder(session, manager, data);
  50. break;
  51. default:
  52. WsEvent wsEvent = EventWsErrUtil.getWsErr("unrecognized event");
  53. WebsocketManagerUtil.sendMessage(session, wsEvent);
  54. break;
  55. }
  56. }
  57. public void QueryUser(Session session, Manager manager, JSONObject data) {
  58. if (!manager.getIsSuper()) {
  59. WsEvent wsEvent = new WsEvent("superOrderTradeQueryUserRes", Result.fail("权限不足"));
  60. WebsocketManagerUtil.sendMessage(session, wsEvent);
  61. return;
  62. }
  63. Integer page = data.getInteger("page");
  64. Integer limit = data.getInteger("limit");
  65. Page<User> userPage = new Page(page, limit);
  66. QueryWrapper<User> queryWrapper = new QueryWrapper<>();
  67. if (data.getInteger("vip") == -1) {
  68. queryWrapper.like("id", data.getString("id"));
  69. } else {
  70. queryWrapper.eq("vip", data.getInteger("vip")).like("id", data.getString("id"));
  71. }
  72. Page<User> selectPage = userMapper.selectPage(userPage, queryWrapper);
  73. WsEvent wsEvent = new WsEvent("superOrderTradeQueryUserRes", Result.success(selectPage));
  74. WebsocketManagerUtil.sendMessage(session, wsEvent);
  75. return;
  76. }
  77. public void QueryTrade(Session session, Manager manager, JSONObject data) {
  78. if (!manager.getIsSuper()) {
  79. WsEvent wsEvent = new WsEvent("superOrderTradeQueryTradeRes", Result.fail("权限不足"));
  80. WebsocketManagerUtil.sendMessage(session, wsEvent);
  81. return;
  82. }
  83. Integer page = data.getInteger("page");
  84. Integer limit = data.getInteger("limit");
  85. Page<TradeQueryVo> userPage = new Page(page, limit);
  86. List<TradeQueryVo> queryVos = tradeMapper.tradeQuery(userPage, data.getString("uid"), data.getString("cond"));
  87. WsEvent wsEvent = new WsEvent("superOrderTradeQueryTradeRes", Result.success(queryVos));
  88. WebsocketManagerUtil.sendMessage(session, wsEvent);
  89. return;
  90. }
  91. public void Refund(Session session, Manager manager, JSONObject data) {
  92. if (!manager.getIsSuper()) {
  93. WsEvent wsEvent = new WsEvent("superOrderTradeRefundRes", Result.fail("权限不足"));
  94. WebsocketManagerUtil.sendMessage(session, wsEvent);
  95. return;
  96. }
  97. Trade trade = tradeMapper.selectById(data.getString("tid"));
  98. if (ObjectUtil.isEmpty(trade)) {
  99. WsEvent wsEvent = new WsEvent("superOrderTradeRefundRes", Result.fail("订单查询失败"));
  100. WebsocketManagerUtil.sendMessage(session, wsEvent);
  101. return;
  102. }
  103. if (trade.getCash() < data.getInteger("cash")) {
  104. WsEvent wsEvent = new WsEvent("superOrderTradeRefundRes", Result.fail("超出原订单金额"));
  105. WebsocketManagerUtil.sendMessage(session, wsEvent);
  106. return;
  107. }
  108. QueryWrapper<Refund> queryWrapper = new QueryWrapper<>();
  109. queryWrapper.eq("tid", data.getString("tid"));
  110. Refund one = refundMapper.selectOne(queryWrapper);
  111. if (ObjectUtil.isEmpty(one)) {
  112. Refund refund = new Refund();
  113. refund.setTid(data.getString("tid"));
  114. refund.setManager(manager.getId());
  115. refund.setCash(data.getInteger("cash"));
  116. refund.setReason(data.getString("reason"));
  117. refund.setTime(new Date());
  118. refundMapper.insert(refund);
  119. } else {
  120. one.setTid(data.getString("tid"));
  121. one.setManager(manager.getId());
  122. one.setCash(data.getInteger("cash"));
  123. one.setReason(data.getString("reason"));
  124. one.setTime(new Date());
  125. refundMapper.updateById(one);
  126. }
  127. WsEvent wsEvent = new WsEvent("superOrderTradeRefundRes", Result.success(null));
  128. WebsocketManagerUtil.sendMessage(session, wsEvent);
  129. User user = userMapper.selectById(trade.getPayer());
  130. user.setRefundCount(user.getRefundCount() + 1);
  131. user.setBuyCost(user.getBuyCost() - data.getInteger("cash"));
  132. user.setRefundCost(user.getRefundCost() + data.getInteger("cash"));
  133. userMapper.updateById(user);
  134. Operation operation = new Operation();
  135. operation.setUserType(0);
  136. operation.setUserId(manager.getId());
  137. operation.setOpType(5);
  138. operation.setLevel(2);
  139. operation.setTime(new Date());
  140. operation.setDescribe(String.format("订单号:%s,用户:%s,退款金额:%d",
  141. data.getString("tid"), trade.getPayer(), data.getInteger("cash")));
  142. operationMapper.insert(operation);
  143. }
  144. public void QueryWorker(Session session, Manager manager, JSONObject data) {
  145. }
  146. public void QueryOrder(Session session, Manager manager, JSONObject data) {
  147. }
  148. }