From 70ad97e3d7047adba6a1a136d4d6b7cb7d697b28 Mon Sep 17 00:00:00 2001 From: wzy <wzy19931122ai@163.com> Date: Sat, 05 Jun 2021 18:40:09 +0800 Subject: [PATCH] modify --- src/main/java/com/xcong/excoin/modules/member/entity/MemberSettingEntity.java | 4 ++ src/main/java/com/xcong/excoin/modules/otc/dao/OtcOrderDao.java | 4 ++ src/main/java/com/xcong/excoin/modules/otc/service/impl/OtcOrderServiceImpl.java | 1 src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java | 2 + src/main/resources/mapper/member/MemberDao.xml | 9 ++++ src/main/resources/mapper/otc/OtcOrderDao.xml | 11 +++++ src/test/java/com/xcong/excoin/OtcTest.java | 10 +++++ src/main/java/com/xcong/excoin/rabbit/consumer/OtcConsumer.java | 51 +++++++++++++++++++++++++ src/main/java/com/xcong/excoin/modules/otc/entity/OtcOrder.java | 2 + src/main/java/com/xcong/excoin/modules/member/dao/MemberDao.java | 1 10 files changed, 94 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/xcong/excoin/modules/member/dao/MemberDao.java b/src/main/java/com/xcong/excoin/modules/member/dao/MemberDao.java index ad95e15..2310b26 100644 --- a/src/main/java/com/xcong/excoin/modules/member/dao/MemberDao.java +++ b/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); } diff --git a/src/main/java/com/xcong/excoin/modules/member/entity/MemberSettingEntity.java b/src/main/java/com/xcong/excoin/modules/member/entity/MemberSettingEntity.java index 17d4448..8346487 100644 --- a/src/main/java/com/xcong/excoin/modules/member/entity/MemberSettingEntity.java +++ b/src/main/java/com/xcong/excoin/modules/member/entity/MemberSettingEntity.java @@ -35,4 +35,8 @@ */ private Integer messageReminder; + private BigDecimal otcReturnFirst; + + private BigDecimal otcReturnSecond; + } diff --git a/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java b/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java index ee0f5f4..0e42a48 100644 --- a/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java +++ b/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()); diff --git a/src/main/java/com/xcong/excoin/modules/otc/dao/OtcOrderDao.java b/src/main/java/com/xcong/excoin/modules/otc/dao/OtcOrderDao.java index 99ddf7b..a71c727 100644 --- a/src/main/java/com/xcong/excoin/modules/otc/dao/OtcOrderDao.java +++ b/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); } diff --git a/src/main/java/com/xcong/excoin/modules/otc/entity/OtcOrder.java b/src/main/java/com/xcong/excoin/modules/otc/entity/OtcOrder.java index 0a7ee2f..dade3e0 100644 --- a/src/main/java/com/xcong/excoin/modules/otc/entity/OtcOrder.java +++ b/src/main/java/com/xcong/excoin/modules/otc/entity/OtcOrder.java @@ -91,4 +91,6 @@ private String cardName; private String payType; + + private Integer isReturn; } 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 e925174..6d93c0f 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 @@ -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 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 5ab02e6..1b615a3 100644 --- a/src/main/java/com/xcong/excoin/rabbit/consumer/OtcConsumer.java +++ b/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); } + } diff --git a/src/main/resources/mapper/member/MemberDao.xml b/src/main/resources/mapper/member/MemberDao.xml index 27fb5e7..1d46325 100644 --- a/src/main/resources/mapper/member/MemberDao.xml +++ b/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> \ No newline at end of file diff --git a/src/main/resources/mapper/otc/OtcOrderDao.xml b/src/main/resources/mapper/otc/OtcOrderDao.xml index abc90d5..4928e5b 100644 --- a/src/main/resources/mapper/otc/OtcOrderDao.xml +++ b/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> \ No newline at end of file diff --git a/src/test/java/com/xcong/excoin/OtcTest.java b/src/test/java/com/xcong/excoin/OtcTest.java index c939525..2f2a67e 100644 --- a/src/test/java/com/xcong/excoin/OtcTest.java +++ b/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"); + } } -- Gitblit v1.9.1