Helius
2021-06-01 89dfa27310651f6d9a2648f976687ca335c5c6ab
modify
5 files modified
66 ■■■■■ changed files
src/main/java/com/xcong/excoin/modules/otc/entity/OtcMarketBussiness.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/otc/service/impl/OtcOrderServiceImpl.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/quartz/job/OtcOrderJob.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/rabbit/consumer/OtcConsumer.java 40 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/rabbit/producer/OtcProducter.java 11 ●●●● patch | view | raw | blame | history
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;
}
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
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)) {
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);
    }
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) {