wzy
2021-06-05 70ad97e3d7047adba6a1a136d4d6b7cb7d697b28
modify
10 files modified
95 ■■■■■ changed files
src/main/java/com/xcong/excoin/modules/member/dao/MemberDao.java 1 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/entity/MemberSettingEntity.java 4 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/otc/dao/OtcOrderDao.java 4 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/otc/entity/OtcOrder.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/otc/service/impl/OtcOrderServiceImpl.java 1 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/rabbit/consumer/OtcConsumer.java 51 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/member/MemberDao.xml 9 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/otc/OtcOrderDao.xml 11 ●●●●● patch | view | raw | blame | history
src/test/java/com/xcong/excoin/OtcTest.java 10 ●●●●● patch | view | raw | blame | history
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");
    }
}