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