From 0d30c93d000413c6eb34f489ef17688ad4175201 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Mon, 29 Apr 2024 18:18:21 +0800 Subject: [PATCH] 55测试环境 --- src/main/java/com/xcong/excoin/rabbit/consumer/OtcConsumer.java | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 102 insertions(+), 5 deletions(-) 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 0625f7e..3766adb 100644 --- a/src/main/java/com/xcong/excoin/rabbit/consumer/OtcConsumer.java +++ b/src/main/java/com/xcong/excoin/rabbit/consumer/OtcConsumer.java @@ -1,20 +1,34 @@ package com.xcong.excoin.rabbit.consumer; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.xcong.excoin.configurations.RabbitMqConfig; +import com.xcong.excoin.modules.member.dao.MemberDao; +import com.xcong.excoin.modules.member.dao.MemberSettingDao; +import com.xcong.excoin.modules.member.dao.MemberWalletCoinDao; +import com.xcong.excoin.modules.member.entity.MemberEntity; +import com.xcong.excoin.modules.member.entity.MemberSettingEntity; +import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity; import com.xcong.excoin.modules.otc.dao.OtcEntrustOrderDao; import com.xcong.excoin.modules.otc.dao.OtcMarketBussinessDao; +import com.xcong.excoin.modules.otc.dao.OtcOrderDao; +import com.xcong.excoin.modules.otc.dao.OtcReturnMoneyDao; 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 com.xcong.excoin.modules.otc.entity.OtcReturnMoney; +import com.xcong.excoin.utils.LogRecordUtils; 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 org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.Date; +import java.util.List; import java.util.Map; @Slf4j @@ -28,6 +42,21 @@ @Autowired private OtcEntrustOrderDao otcEntrustOrderDao; + @Autowired + private OtcOrderDao otcOrderDao; + + @Autowired + private MemberDao memberDao; + + @Autowired + private MemberSettingDao memberSettingDao; + + @Autowired + private MemberWalletCoinDao memberWalletCoinDao; + + @Autowired + private OtcReturnMoneyDao otcReturnMoneyDao; + @RabbitListener(queues = RabbitMqConfig.QUEUE_MARKET_BUSSINESS) public void marketBussiness(String content) { log.info("收到市商消息:{}", content); @@ -39,19 +68,40 @@ 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); + mb.setSaleTotalCnt(mb.getSaleTotalCnt() + 1); } else { mb.setBuyOrderCnt(mb.getBuyOrderCnt() + 1); + mb.setTotalOrderCnt(mb.getTotalOrderCnt() + 1); + } + } else { + if (OtcEntrustOrder.ORDER_TYPE_S.equals(entrustOrder.getOrderType())) { + mb.setSaleTotalCnt(mb.getSaleTotalCnt() + 1); + } else { + mb.setTotalOrderCnt(mb.getTotalOrderCnt() + 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); + if (mb.getTotalOrderCnt() != 0) { + BigDecimal buyFinishRatio = BigDecimal.valueOf(mb.getBuyOrderCnt()).divide(BigDecimal.valueOf(mb.getTotalOrderCnt()), 8, BigDecimal.ROUND_DOWN); + mb.setFinishRatio(buyFinishRatio); + } + + if (mb.getSaleTotalCnt() != 0) { + BigDecimal saleFinishRatio = BigDecimal.valueOf(mb.getSaleOrderCnt()).divide(BigDecimal.valueOf(mb.getSaleTotalCnt()), 8, BigDecimal.ROUND_DOWN); + mb.setSaleFinishRatio(saleFinishRatio); + } + + + // 平均付款时间 +// BigDecimal avgPayTime = otcOrderDao.selectMemberAvgPayTime(mb.getMemberId()); +// // 平均放币时间 +// BigDecimal avgCoinTime = otcOrderDao.selectMemberAvgCoinTime(mb.getMemberId()); +// +// mb.setAvgPayTime(avgPayTime.intValue()); +// mb.setAvgCoinTime(avgCoinTime.intValue()); otcMarketBussinessDao.updateById(mb); } @@ -61,4 +111,51 @@ public void delayOrder(String content) { log.info("--{}-->{}", new Date(), content); } + + + @RabbitListener(queues = RabbitMqConfig.QUEUE_ORDER_RETURN) + @Transactional(rollbackFor = Exception.class) + public void orderReturn(String content) { + log.info("收到返佣消息:{}", content); + OtcOrder order = otcOrderDao.selectOrderUnEntrust(content); + + MemberEntity member = memberDao.selectById(order.getMemberId()); + List<String> refererIds = StrUtil.split(member.getRefererIds(), ','); + + List<MemberEntity> parentMembers = memberDao.selectMemberListByReferer(refererIds); + + if (CollUtil.isNotEmpty(parentMembers)) { + int isFirst = 1; + for (MemberEntity parent : parentMembers) { + MemberSettingEntity memberSetting = memberSettingDao.selectMemberSettingByMemberId(parent.getId()); + + BigDecimal returnRatio = BigDecimal.ZERO; + if (isFirst == 1) { + returnRatio = memberSetting.getOtcReturnFirst(); + } else { + returnRatio = memberSetting.getOtcReturnSecond(); + } + + BigDecimal returnAmount = order.getCoinAmount().multiply(returnRatio); + + MemberWalletCoinEntity wallet = memberWalletCoinDao.selectWalletCoinBymIdAndCode(parent.getId(), "USDT"); + memberWalletCoinDao.updateBlockBalance(wallet.getId(), returnAmount, BigDecimal.ZERO, 0); + + LogRecordUtils.insertMemberAccountMoneyChange(parent.getId(),"订单返利:" + content, returnAmount, "USDT", 1, 1); + + OtcReturnMoney otcReturnMoney = new OtcReturnMoney(); + otcReturnMoney.setToMemberId(parent.getId()); + otcReturnMoney.setOrderNo(content); + otcReturnMoney.setFromMemberId(member.getId()); + otcReturnMoney.setAmount(returnAmount); + otcReturnMoneyDao.insert(otcReturnMoney); + + isFirst = 0; + } + } + + order.setIsReturn(1); + otcOrderDao.updateIsReturnByOrderNo(1, content); + } + } -- Gitblit v1.9.1