123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- 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<User> userPage = new Page(page, limit);
- QueryWrapper<User> 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<User> 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<TradeQueryVo> userPage = new Page(page, limit);
- List<TradeQueryVo> 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<Refund> 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) {
- }
- }
|