From 89dfa27310651f6d9a2648f976687ca335c5c6ab Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Tue, 01 Jun 2021 11:07:39 +0800 Subject: [PATCH] modify --- src/main/java/com/xcong/excoin/rabbit/producer/OtcProducter.java | 11 ++++- src/main/java/com/xcong/excoin/modules/otc/entity/OtcMarketBussiness.java | 8 ++++ src/main/java/com/xcong/excoin/modules/otc/service/impl/OtcOrderServiceImpl.java | 5 ++ src/main/java/com/xcong/excoin/quartz/job/OtcOrderJob.java | 2 src/main/java/com/xcong/excoin/rabbit/consumer/OtcConsumer.java | 40 +++++++++++++++++++- 5 files changed, 61 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/xcong/excoin/modules/otc/entity/OtcMarketBussiness.java b/src/main/java/com/xcong/excoin/modules/otc/entity/OtcMarketBussiness.java index 029d111..34350f2 100644 --- a/src/main/java/com/xcong/excoin/modules/otc/entity/OtcMarketBussiness.java +++ b/src/main/java/com/xcong/excoin/modules/otc/entity/OtcMarketBussiness.java @@ -44,7 +44,15 @@ */ private BigDecimal hasBackMoney; + /** + * 卖单数 + */ private Integer saleOrderCnt; private BigDecimal saleFinishRatio; + + /** + * 买单数 + */ + private Integer buyOrderCnt; } diff --git a/src/main/java/com/xcong/excoin/modules/otc/service/impl/OtcOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/otc/service/impl/OtcOrderServiceImpl.java index c28621f..38de88b 100644 --- a/src/main/java/com/xcong/excoin/modules/otc/service/impl/OtcOrderServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/otc/service/impl/OtcOrderServiceImpl.java @@ -32,6 +32,7 @@ import com.xcong.excoin.modules.otc.vo.BuyOrderDetailVo; import com.xcong.excoin.modules.otc.vo.OrderListVo; import com.xcong.excoin.modules.otc.vo.SaleOrderDetailVo; +import com.xcong.excoin.rabbit.producer.OtcProducter; import com.xcong.excoin.utils.RedisUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -57,6 +58,7 @@ private final OtcBlackListDao otcBlackListDao; private final OtcSettingDao otcSettingDao; private final RedisUtils redisUtils; + private final OtcProducter otcProducter; @Override @@ -315,6 +317,7 @@ memberWalletCoinDao.reduceFrozenBalance(saleWallet.getId(), buyOrder.getCoinAmount()); this.baseMapper.updateOrderStatusByOrderNo(OtcOrder.STATUS_FINISH, null, otcOrder.getOrderNo()); + otcProducter.sendMarketBussinessMsg(otcOrder.getEntrustOrderId(), OtcOrder.STATUS_FINISH); } @Override @@ -464,6 +467,8 @@ otcEntrustOrderDao.updateRemainAmount(otcOrder.getEntrustOrderId(), otcOrder.getCoinAmount()); this.baseMapper.updateOrderStatusByOrderNo(OtcOrder.STATUS_CANCEL, null, otcOrder.getOrderNo()); + + otcProducter.sendMarketBussinessMsg(otcOrder.getEntrustOrderId(), OtcOrder.STATUS_CANCEL); } @Override diff --git a/src/main/java/com/xcong/excoin/quartz/job/OtcOrderJob.java b/src/main/java/com/xcong/excoin/quartz/job/OtcOrderJob.java index 220f934..669e0d4 100644 --- a/src/main/java/com/xcong/excoin/quartz/job/OtcOrderJob.java +++ b/src/main/java/com/xcong/excoin/quartz/job/OtcOrderJob.java @@ -88,7 +88,7 @@ } } - @Scheduled(cron = "0 0/5 * * * ? ") +// @Scheduled(cron = "0 0/5 * * * ? ") public void marketBussinessJob() { List<OtcMarketBussiness> list = otcMarketBussinessDao.selectList(null); if (CollUtil.isNotEmpty(list)) { diff --git a/src/main/java/com/xcong/excoin/rabbit/consumer/OtcConsumer.java b/src/main/java/com/xcong/excoin/rabbit/consumer/OtcConsumer.java index 60a6b43..c794c2c 100644 --- a/src/main/java/com/xcong/excoin/rabbit/consumer/OtcConsumer.java +++ b/src/main/java/com/xcong/excoin/rabbit/consumer/OtcConsumer.java @@ -1,22 +1,58 @@ package com.xcong.excoin.rabbit.consumer; +import com.alibaba.fastjson.JSONObject; import com.xcong.excoin.configurations.RabbitMqConfig; +import com.xcong.excoin.modules.otc.dao.OtcEntrustOrderDao; +import com.xcong.excoin.modules.otc.dao.OtcMarketBussinessDao; +import com.xcong.excoin.modules.otc.entity.OtcEntrustOrder; +import com.xcong.excoin.modules.otc.entity.OtcMarketBussiness; +import com.xcong.excoin.modules.otc.entity.OtcOrder; import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Component; +import java.math.BigDecimal; import java.util.Date; +import java.util.Map; @Slf4j @Component @ConditionalOnProperty(prefix = "app", name = "otc-job", havingValue = "true") public class OtcConsumer { + @Autowired + private OtcMarketBussinessDao otcMarketBussinessDao; -// @RabbitListener(queues = RabbitMqConfig.QUEUE_MARKET_BUSSINESS) + @Autowired + private OtcEntrustOrderDao otcEntrustOrderDao; + + @RabbitListener(queues = RabbitMqConfig.QUEUE_MARKET_BUSSINESS) public void marketBussiness(String content) { - log.info("---->{}", content); + log.info("收到市商消息:{}", content); + JSONObject jsonObject = JSONObject.parseObject(content); + Long entrustOrderId = (Long) jsonObject.get("entrustOrderId"); + Integer status = jsonObject.getInteger("status"); + OtcEntrustOrder entrustOrder = otcEntrustOrderDao.selectById(entrustOrderId); + + OtcMarketBussiness mb = otcMarketBussinessDao.selectMarketBussinessByMemberId(entrustOrder.getMemberId()); + + mb.setTotalOrderCnt(mb.getTotalOrderCnt() + 1); + if (!OtcOrder.STATUS_CANCEL.equals(status)) { + if (OtcEntrustOrder.ORDER_TYPE_S.equals(entrustOrder.getOrderType())) { + mb.setSaleOrderCnt(mb.getSaleOrderCnt() + 1); + } else { + mb.setBuyOrderCnt(mb.getBuyOrderCnt() + 1); + } + } + + BigDecimal buyFinishRatio = BigDecimal.valueOf(mb.getBuyOrderCnt()).divide(BigDecimal.valueOf(mb.getTotalOrderCnt()), 8, BigDecimal.ROUND_DOWN); + BigDecimal saleFinishRatio = BigDecimal.valueOf(mb.getSaleOrderCnt()).divide(BigDecimal.valueOf(mb.getTotalOrderCnt()), 8, BigDecimal.ROUND_DOWN); + mb.setFinishRatio(buyFinishRatio); + mb.setSaleFinishRatio(saleFinishRatio); + + otcMarketBussinessDao.updateById(mb); } diff --git a/src/main/java/com/xcong/excoin/rabbit/producer/OtcProducter.java b/src/main/java/com/xcong/excoin/rabbit/producer/OtcProducter.java index 7d530f3..e52c731 100644 --- a/src/main/java/com/xcong/excoin/rabbit/producer/OtcProducter.java +++ b/src/main/java/com/xcong/excoin/rabbit/producer/OtcProducter.java @@ -2,6 +2,7 @@ import cn.hutool.core.util.IdUtil; +import com.alibaba.fastjson.JSONObject; import com.xcong.excoin.configurations.RabbitMqConfig; import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.AmqpException; @@ -15,6 +16,8 @@ import org.springframework.stereotype.Component; import java.util.Date; +import java.util.HashMap; +import java.util.Map; @Slf4j @Component @@ -32,10 +35,14 @@ rabbitTemplate.setConfirmCallback(this); } - public void sendMarketBussinessMsg(String content) { + public void sendMarketBussinessMsg(Long entrustOrderId, Integer status) { log.info("发送市商消息"); CorrelationData correlationData = new CorrelationData(IdUtil.simpleUUID()); - rabbitTemplate.convertAndSend(RabbitMqConfig.EXCHANGE_ONE, RabbitMqConfig.ROUTINGKEY_MARKET_BUSSINESS, content, correlationData); + Map<String, Object> map = new HashMap<>(); + map.put("entrustOrderId", entrustOrderId); + map.put("status", status); + String s = JSONObject.toJSONString(map); + rabbitTemplate.convertAndSend(RabbitMqConfig.EXCHANGE_ONE, RabbitMqConfig.ROUTINGKEY_MARKET_BUSSINESS, s, correlationData); } public void sendDelayOrderMsg(String content) { -- Gitblit v1.9.1