src/main/java/com/xcong/excoin/modules/member/dao/MemberDao.java
@@ -23,4 +23,5 @@ public List<MemberEntity> selectAllMember(); List<MemberEntity> selectMemberListByReferer(@Param("list") List<String> list); } src/main/java/com/xcong/excoin/modules/member/entity/MemberSettingEntity.java
@@ -35,4 +35,8 @@ */ private Integer messageReminder; private BigDecimal otcReturnFirst; private BigDecimal otcReturnSecond; } src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
@@ -180,6 +180,8 @@ memberSettingEntity.setClosingSpread(BigDecimal.valueOf(2)); memberSettingEntity.setForceParam(BigDecimal.valueOf(0.0085)); memberSettingEntity.setMemberId(member.getId()); memberSettingEntity.setOtcReturnFirst(BigDecimal.valueOf(0.0002)); memberSettingEntity.setOtcReturnFirst(BigDecimal.valueOf(0.0001)); memberSettingDao.insert(memberSettingEntity); String inviteId = ShareCodeUtil.toSerialCode(member.getId()); src/main/java/com/xcong/excoin/modules/otc/dao/OtcOrderDao.java
@@ -39,4 +39,8 @@ List<ChatOrderVo> selectByMemberIdAndTargetId(@Param("memberId")Long memberId, @Param("targetId")long targetId); List<ChatOrderVo> selectOneByMemberIdAndTargetId(@Param("memberId")Long memberId, @Param("targetId")long targetId); int updateIsReturnByOrderNo(@Param("isReturn") Integer isReturn, @Param("orderNo") String orderNo); OtcOrder selectOrderUnEntrust(@Param("orderNo") String orderNo); } src/main/java/com/xcong/excoin/modules/otc/entity/OtcOrder.java
@@ -91,4 +91,6 @@ private String cardName; private String payType; private Integer isReturn; } src/main/java/com/xcong/excoin/modules/otc/service/impl/OtcOrderServiceImpl.java
@@ -320,6 +320,7 @@ this.baseMapper.updateOrderStatusByOrderNo(OtcOrder.STATUS_FINISH, null, otcOrder.getOrderNo()); otcProducter.sendMarketBussinessMsg(otcOrder.getEntrustOrderId(), OtcOrder.STATUS_FINISH); otcProducter.sendOrderReturn(buyOrder.getOrderNo()); } @Override src/main/java/com/xcong/excoin/rabbit/consumer/OtcConsumer.java
@@ -1,21 +1,32 @@ 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.entity.OtcEntrustOrder; import com.xcong.excoin.modules.otc.entity.OtcMarketBussiness; import com.xcong.excoin.modules.otc.entity.OtcOrder; 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 @@ -31,6 +42,15 @@ @Autowired private OtcOrderDao otcOrderDao; @Autowired private MemberDao memberDao; @Autowired private MemberSettingDao memberSettingDao; @Autowired private MemberWalletCoinDao memberWalletCoinDao; @RabbitListener(queues = RabbitMqConfig.QUEUE_MARKET_BUSSINESS) public void marketBussiness(String content) { @@ -89,11 +109,40 @@ @RabbitListener(queues = RabbitMqConfig.QUEUE_ORDER_RETURN) @Transactional(rollbackFor = Exception.class) public void orderReturn(String content) { log.info("收到返佣消息:{}", content); OtcOrder order = otcOrderDao.selectOrderByOrderNoAndType(content, OtcEntrustOrder.ORDER_TYPE_B); 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); isFirst = 0; } } order.setIsReturn(1); otcOrderDao.updateIsReturnByOrderNo(1, content); } } src/main/resources/mapper/member/MemberDao.xml
@@ -49,4 +49,13 @@ <select id="selectAllMember" resultType="com.xcong.excoin.modules.member.entity.MemberEntity"> select * from member </select> <select id="selectMemberListByReferer" resultType="com.xcong.excoin.modules.member.entity.MemberEntity"> select * from member where invite_id!='rxadr3' and invite_id in <foreach collection = "list" item = "item" separator="," open = "(" close = ")" > #{item} </foreach > order by id desc limit 2 </select> </mapper> src/main/resources/mapper/otc/OtcOrderDao.xml
@@ -139,4 +139,15 @@ </select> <update id="updateIsReturnByOrderNo"> update otc_order set is_return=#{isReturn} where order_no=#{orderNo} </update> <select id="selectOrderUnEntrust" resultType="com.xcong.excoin.modules.otc.entity.OtcOrder"> select * from otc_order where order_no=#{orderNo} and member_id!=entrust_member_id </select> </mapper> src/test/java/com/xcong/excoin/OtcTest.java
@@ -9,6 +9,7 @@ import com.xcong.excoin.modules.otc.dao.OtcMarketBussinessDao; import com.xcong.excoin.modules.otc.entity.OtcMarketBussiness; import com.xcong.excoin.quartz.job.OtcOrderJob; import com.xcong.excoin.rabbit.consumer.OtcConsumer; import com.xcong.excoin.rabbit.producer.OtcProducter; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; @@ -110,4 +111,13 @@ System.out.println(one.multiply(two)); } @Autowired private OtcConsumer otcConsumer; @Test public void returnMoneyTest() { // otcConsumer.orderReturn("20210605446780002"); otcProducter.sendOrderReturn("20210605446780002"); } }