package com.huimv.wine.ws.su; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.huimv.wine.common.EventWsErrUtil; import com.huimv.wine.entity.*; import com.huimv.wine.entity.vo.TradeQueryVo; import com.huimv.wine.entity.vo.WsEvent; 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.WebsocketManagerUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.websocket.Session; import java.util.ArrayList; import java.util.Date; import java.util.List; @Component public class SuperOrder { @Autowired private UserMapper userMapper; @Autowired private TradeMapper tradeMapper; @Autowired private RefundMapper refundMapper; @Autowired private OperationMapper operationMapper; public void handle(String event, JSONObject data, Session session, Manager manager) { switch (event) { case "superOrderTradeQueryUser": QueryUser(session, manager, data); break; case "superOrderTradeQueryTrade": QueryTrade(session, manager, data); break; case "superOrderTradeRefund": Refund(session, manager, data); break; case "superOrderChangeQueryWorker": QueryWorker(session, manager, data); break; case "superOrderChangeQueryOrder": QueryOrder(session, manager, data); break; default: WsEvent wsEvent = EventWsErrUtil.getWsErr("unrecognized event"); WebsocketManagerUtil.sendMessage(session, wsEvent); break; } } public void QueryUser(Session session, Manager manager, JSONObject data) { if (!manager.getIsSuper()) { WsEvent wsEvent = new WsEvent("superOrderTradeQueryUserRes", Result.fail("权限不足")); WebsocketManagerUtil.sendMessage(session, wsEvent); return; } Integer page = data.getInteger("page"); Integer limit = data.getInteger("limit"); Page userPage = new Page(page, limit); QueryWrapper queryWrapper = new QueryWrapper<>(); if (data.getInteger("vip") == -1) { queryWrapper.like("id", data.getString("id")); } else { queryWrapper.eq("vip", data.getInteger("vip")).like("id", data.getString("id")); } Page selectPage = userMapper.selectPage(userPage, queryWrapper); WsEvent wsEvent = new WsEvent("superOrderTradeQueryUserRes", Result.success(selectPage)); WebsocketManagerUtil.sendMessage(session, wsEvent); return; } public void QueryTrade(Session session, Manager manager, JSONObject data) { if (!manager.getIsSuper()) { WsEvent wsEvent = new WsEvent("superOrderTradeQueryTradeRes", Result.fail("权限不足")); WebsocketManagerUtil.sendMessage(session, wsEvent); return; } Integer page = data.getInteger("page"); Integer limit = data.getInteger("limit"); Page userPage = new Page(page, limit); List queryVos = tradeMapper.tradeQuery(userPage, data.getString("uid"), data.getString("cond")); WsEvent wsEvent = new WsEvent("superOrderTradeQueryTradeRes", Result.success(queryVos)); WebsocketManagerUtil.sendMessage(session, wsEvent); return; } public void Refund(Session session, Manager manager, JSONObject data) { if (!manager.getIsSuper()) { WsEvent wsEvent = new WsEvent("superOrderTradeRefundRes", Result.fail("权限不足")); WebsocketManagerUtil.sendMessage(session, wsEvent); return; } Trade trade = tradeMapper.selectById(data.getString("tid")); if (ObjectUtil.isEmpty(trade)) { WsEvent wsEvent = new WsEvent("superOrderTradeRefundRes", Result.fail("订单查询失败")); WebsocketManagerUtil.sendMessage(session, wsEvent); return; } if (trade.getCash() < data.getInteger("cash")) { WsEvent wsEvent = new WsEvent("superOrderTradeRefundRes", Result.fail("超出原订单金额")); WebsocketManagerUtil.sendMessage(session, wsEvent); return; } QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("tid", data.getString("tid")); Refund one = refundMapper.selectOne(queryWrapper); if (ObjectUtil.isEmpty(one)) { Refund refund = new Refund(); refund.setTid(data.getString("tid")); refund.setManager(manager.getId()); refund.setCash(data.getInteger("cash")); refund.setReason(data.getString("reason")); refund.setTime(new Date()); refundMapper.insert(refund); } else { one.setTid(data.getString("tid")); one.setManager(manager.getId()); one.setCash(data.getInteger("cash")); one.setReason(data.getString("reason")); one.setTime(new Date()); refundMapper.updateById(one); } WsEvent wsEvent = new WsEvent("superOrderTradeRefundRes", Result.success(null)); WebsocketManagerUtil.sendMessage(session, wsEvent); User user = userMapper.selectById(trade.getPayer()); user.setRefundCount(user.getRefundCount() + 1); user.setBuyCost(user.getBuyCost() - data.getInteger("cash")); user.setRefundCost(user.getRefundCost() + data.getInteger("cash")); userMapper.updateById(user); Operation operation = new Operation(); operation.setUserType(0); operation.setUserId(manager.getId()); operation.setOpType(5); operation.setLevel(2); operation.setTime(new Date()); operation.setDescribe(String.format("订单号:%s,用户:%s,退款金额:%d", data.getString("tid"), trade.getPayer(), data.getInteger("cash"))); operationMapper.insert(operation); } public void QueryWorker(Session session, Manager manager, JSONObject data) { } public void QueryOrder(Session session, Manager manager, JSONObject data) { } }