|
@@ -1,12 +1,14 @@
|
|
|
package com.huimv.wine.ws.admin;
|
|
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.huimv.wine.common.EventWsErrUtil;
|
|
|
-import com.huimv.wine.entity.Manager;
|
|
|
-import com.huimv.wine.entity.User;
|
|
|
-import com.huimv.wine.entity.vo.AdminTradeQueryUserParam;
|
|
|
-import com.huimv.wine.entity.vo.WsEvent;
|
|
|
+import com.huimv.wine.entity.*;
|
|
|
+import com.huimv.wine.entity.vo.*;
|
|
|
+import com.huimv.wine.mapper.OperationMapper;
|
|
|
+import com.huimv.wine.mapper.RefundMapper;
|
|
|
+import com.huimv.wine.mapper.TradeMapper;
|
|
|
import com.huimv.wine.mapper.UserMapper;
|
|
|
import com.huimv.wine.utils.Result;
|
|
|
import com.huimv.wine.utils.SpringContextUtil;
|
|
@@ -21,15 +23,18 @@ public class AdminTrade {
|
|
|
String event = message.getString("event");
|
|
|
JSONObject data = message.getJSONObject("data");
|
|
|
UserMapper userMapper = SpringContextUtil.getBean(UserMapper.class);
|
|
|
+ TradeMapper tradeMapper = SpringContextUtil.getBean(TradeMapper.class);
|
|
|
+ RefundMapper refundMapper = SpringContextUtil.getBean(RefundMapper.class);
|
|
|
+ OperationMapper operationMapper = SpringContextUtil.getBean(OperationMapper.class);
|
|
|
switch (event) {
|
|
|
case "adminTradeQueryUser":
|
|
|
queryUser(session, manager, data, userMapper);
|
|
|
break;
|
|
|
case "adminTradeQueryTrade":
|
|
|
- queryTrade(session, data);
|
|
|
+ queryTrade(session, manager, data,tradeMapper);
|
|
|
break;
|
|
|
case "adminTradeRefund":
|
|
|
- refund(session, manager, data);
|
|
|
+ refund(session, manager, data, tradeMapper, refundMapper, userMapper, operationMapper);
|
|
|
break;
|
|
|
default:
|
|
|
WsEvent wsEvent = EventWsErrUtil.getWsErr("unrecognized event");
|
|
@@ -48,10 +53,53 @@ public class AdminTrade {
|
|
|
WebsocketManagerUtil.sendMessage(session,wsEvent);
|
|
|
}
|
|
|
|
|
|
- private void queryTrade(Session session, JSONObject data) {
|
|
|
+ private void queryTrade(Session session, Manager manager, JSONObject data, TradeMapper tradeMapper) {
|
|
|
+ AdminTradeQueryTradeParam queryTradeParam = JSONObject.toJavaObject(data, AdminTradeQueryTradeParam.class);
|
|
|
+ Page<TradeQueryForAdminResult> page = new Page<>(queryTradeParam.getPage(),queryTradeParam.getLimit());
|
|
|
+ String like = "%" + queryTradeParam.getCond() + "%";
|
|
|
+ Page<TradeQueryForAdminResult> resultPage = tradeMapper.tradeQueryForAdmin(page,manager.getId(),like,queryTradeParam.getUid());
|
|
|
|
|
|
+ WsEvent wsEvent = new WsEvent("adminTradeQueryTradeRes", Result.success(resultPage));
|
|
|
+ WebsocketManagerUtil.sendMessage(session,wsEvent);
|
|
|
}
|
|
|
|
|
|
- private void refund(Session session, Manager manager, JSONObject data) {
|
|
|
+ private void refund(Session session, Manager manager, JSONObject data, TradeMapper tradeMapper, RefundMapper refundMapper, UserMapper userMapper, OperationMapper operationMapper) {
|
|
|
+ AdminTradeRefundParam refundParam = JSONObject.toJavaObject(data, AdminTradeRefundParam.class);
|
|
|
+ Trade trade = tradeMapper.selectById(refundParam.getTid());
|
|
|
+ if (ObjectUtil.isEmpty(trade)){
|
|
|
+ WsEvent wsEvent = new WsEvent("adminTradeRefundRes", Result.fail("订单查询失败"));
|
|
|
+ WebsocketManagerUtil.sendMessage(session,wsEvent);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (trade.getCash() < refundParam.getCash()){
|
|
|
+ WsEvent wsEvent = new WsEvent("adminTradeRefundRes", Result.fail("超出原订单金额"));
|
|
|
+ WebsocketManagerUtil.sendMessage(session,wsEvent);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Refund refund = new Refund();
|
|
|
+ refund.setTid(refundParam.getTid());
|
|
|
+ refund.setManager(manager.getId());
|
|
|
+ refund.setCash(refundParam.getCash());
|
|
|
+ refund.setReason(refundParam.getReason());
|
|
|
+
|
|
|
+ if (refundMapper.insert(refund) != 1) {
|
|
|
+ refund = refundMapper.selectById(refundParam.getTid());
|
|
|
+ refund.setManager(manager.getId());
|
|
|
+ refund.setCash(refundParam.getCash());
|
|
|
+ refund.setReason(refundParam.getReason());
|
|
|
+ refundMapper.updateById(refund);
|
|
|
+ }
|
|
|
+ WsEvent wsEvent = new WsEvent("adminTradeRefundRes", Result.success(null));
|
|
|
+ WebsocketManagerUtil.sendMessage(session,wsEvent);
|
|
|
+
|
|
|
+ User user = userMapper.selectById(trade.getPayer());
|
|
|
+ user.setRefundCount(user.getRefundCount() + 1);
|
|
|
+ user.setBuyCost(user.getBuyCost() - refundParam.getCash());
|
|
|
+ user.setRefundCost(user.getRefundCost() + refundParam.getCash());
|
|
|
+ userMapper.updateById(user);
|
|
|
+
|
|
|
+ Operation operation = new Operation(0,manager.getId(),5,2,String.format("订单号:%s,用户:%s,退款金额:%d",refundParam.getTid(),trade.getPayer(),refundParam.getCash()));
|
|
|
+ operationMapper.insert(operation);
|
|
|
+
|
|
|
}
|
|
|
}
|