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