fix
Helius
2022-08-27 4f1ee115be474ff9b6621fa24a23c0fc2be8c963
fix
14 files modified
1 files added
1 files deleted
291 ■■■■■ changed files
src/main/java/cc/mrbird/febs/dapp/controller/MemberMoneyFlowController.java 12 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/mapper/DappAchieveMemberTreeDao.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/mapper/DappAchieveTreeDao.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java 69 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/job/MatrixResetJob.java 38 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/job/SystemTradeJob.java 71 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java 24 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java 25 ●●●●● patch | view | raw | blame | history
src/main/resources/application-dev.yml 2 ●●● patch | view | raw | blame | history
src/main/resources/application-prod.yml 2 ●●● patch | view | raw | blame | history
src/main/resources/application-test.yml 2 ●●● patch | view | raw | blame | history
src/main/resources/mapper/dapp/DappAchieveMemberTreeDao.xml 5 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/dapp/DappAchieveTreeDao.xml 23 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/dapp/DappMemberDao.xml 6 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/controller/MemberMoneyFlowController.java
@@ -38,18 +38,6 @@
        return new FebsResponse().success().data(getDataTable(dappWalletService.fundFlowInPage(dappFundFlowEntity, request)));
    }
    @PostMapping(value = "/withdrawAgree/{id}")
    public FebsResponse withdrawAgree(@PathVariable("id") Long id) {
        dappWalletService.withdrawAgreeOrNot(id, 1);
        return new FebsResponse().success();
    }
    @PostMapping(value = "/withdrawDisAgree/{id}")
    public FebsResponse withdrawDisAgree(@PathVariable("id") Long id) {
        dappWalletService.withdrawAgreeOrNot(id, 2);
        return new FebsResponse().success();
    }
    @RequestMapping(value = "accountMoneyChangeFlow")
    public FebsResponse accountMoneyChangeFlow(DappAccountMoneyChangeEntity record, QueryRequest request) {
        return new FebsResponse().success().data(getDataTable(dappWalletService.accountMoneyChangeInPage(record, request)));
src/main/java/cc/mrbird/febs/dapp/mapper/DappAchieveMemberTreeDao.java
@@ -19,4 +19,6 @@
    int resetMatrixTree(@Param("memberId") Long memberId);
    int reentryMoney(@Param("memberId") Long memberId);
    int emptyTable();
}
src/main/java/cc/mrbird/febs/dapp/mapper/DappAchieveTreeDao.java
@@ -11,4 +11,10 @@
    DappAchieveTreeEntity selectByMidNode(@Param("memberId") Long memberId);
    List<DappAchieveTreeEntity> selectTreeList();
    DappAchieveTreeEntity selectNewestTreeNode();
    List<DappAchieveTreeEntity> selectLastCountTreeNode(@Param("count") int count);
    int updateNodeValidState();
}
src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java
@@ -38,4 +38,6 @@
    BigDecimal selectChildHoldAmount(@Param("inviteId") String inviteId);
    List<DappMemberEntity> selectMakerAddress();
    int updateMemberActive();
}
src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java
@@ -20,4 +20,6 @@
    void putIntoProfit(Long memberId, int isReIn);
    void tfcNewPrice(String data);
    void resetMatrix();
}
src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java
@@ -3,45 +3,22 @@
import cc.mrbird.febs.common.contants.AppContants;
import cc.mrbird.febs.common.utils.LoginUserUtil;
import cc.mrbird.febs.common.utils.RedisUtils;
import cc.mrbird.febs.dapp.chain.ChainEnum;
import cc.mrbird.febs.dapp.chain.ChainService;
import cc.mrbird.febs.dapp.chain.ContractChainService;
import cc.mrbird.febs.dapp.dto.SystemDto;
import cc.mrbird.febs.dapp.entity.*;
import cc.mrbird.febs.dapp.enumerate.CardPeriod;
import cc.mrbird.febs.dapp.mapper.*;
import cc.mrbird.febs.dapp.service.DappSystemService;
import cc.mrbird.febs.dapp.service.DappWalletService;
import cc.mrbird.febs.dapp.utils.OnlineTransferUtil;
import cc.mrbird.febs.dapp.vo.RedisTransferPoolVo;
import cc.mrbird.febs.dapp.vo.SlipSettingVo;
import cc.mrbird.febs.job.SystemTradeJob;
import cc.mrbird.febs.rabbit.producer.ChainProducer;
import cc.mrbird.febs.tree.MatrixTree;
import cc.mrbird.febs.tree.MemberNode;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.RoundingMode;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.*;
/**
@@ -54,16 +31,9 @@
public class DappSystemServiceImpl implements DappSystemService {
    private final DappSystemDao dappSystemDao;
    private final DappReturnRatioDao dappReturnRatioDao;
    private final RedisUtils redisUtils;
    private final DappFundFlowDao dappFundFlowDao;
    private final DappMemberDao dappMemberDao;
    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
    private final DappOnlineTransferDao dappOnlineTransferDao;
    private final ChainProducer chainProducer;
    private final DappSymbolDailyPriceMapper dappSymbolDailyPriceMapper;
    private final DappMemberBoxRecordMapper dappMemberBoxRecordMapper;
    private final DappWalletCoinDao dappWalletCoinDao;
    private final DappAchieveTreeDao dappAchieveTreeDao;
    private final DappAchieveMemberTreeDao dappAchieveMemberTreeDao;
@@ -79,20 +49,26 @@
        return system;
    }
    // 最低容量(百分比)
    private final BigDecimal volProp = new BigDecimal("2");
    // 每日增/减百分比
    private final BigDecimal changeProp = new BigDecimal("1");
    @Override
    @Transactional(rollbackFor = Exception.class)
    public synchronized void achieveTree(Long memberId) {
        DappMemberEntity member = dappMemberDao.selectById(memberId);
        int batchNo = 0;
        DappAchieveTreeEntity newestTreeNode = dappAchieveTreeDao.selectNewestTreeNode();
        if (newestTreeNode != null) {
            if (newestTreeNode.getValidState() == 2) {
                batchNo = newestTreeNode.getBatchNo() + 1;
            } else {
                batchNo = newestTreeNode.getBatchNo();
            }
        }
        // 在大树中,插入当前节点
        DappAchieveTreeEntity achieveTree = new DappAchieveTreeEntity();
        achieveTree.setMidNode(memberId);
        achieveTree.setValidState(1);
        achieveTree.setBatchNo(batchNo);
        dappAchieveTreeDao.insert(achieveTree);
        // 在内存树(大树)中插入当前节点,并返回父节点
@@ -177,9 +153,6 @@
        DappMemberEntity member = dappMemberDao.selectById(memberId);
        DappMemberEntity parent = dappMemberDao.selectMemberInfoByInviteId(member.getRefererId());
        member.setOutCnt(member.getOutCnt() + 1);
        dappMemberDao.updateById(member);
        if (parent != null) {
            BigDecimal directProfit = new BigDecimal("100").multiply(new BigDecimal("0.15"));
            dappWalletService.updateWalletCoinWithLock(directProfit, parent.getId());
@@ -190,6 +163,9 @@
        // 如果是复投的,则需奖励
        if (isReIn == 1) {
            member.setOutCnt(member.getOutCnt() + 1);
            dappMemberDao.updateById(member);
            dappWalletService.updateWalletCoinWithLock(new BigDecimal(190), member.getId());
            DappFundFlowEntity matrixProfitFlow = new DappFundFlowEntity(memberId, new BigDecimal("190"), 2, 2, null, null);
@@ -211,4 +187,21 @@
    public void tfcNewPrice(String data) {
        redisUtils.set(AppContants.REDIS_KEY_TFC_NEW_PRICE, new BigDecimal(data));
    }
    @Override
    public void resetMatrix() {
        DappAchieveTreeEntity node = dappAchieveTreeDao.selectNewestTreeNode();
        if (node.getValidState() == 2) {
            return;
        }
        long days = DateUtil.between(node.getCreateTime(), new Date(), DateUnit.DAY);
        if (days < 7) {
            return;
        }
        dappAchieveTreeDao.updateNodeValidState();
        dappAchieveMemberTreeDao.emptyTable();
        dappMemberDao.updateMemberActive();
    }
}
src/main/java/cc/mrbird/febs/job/MatrixResetJob.java
New file
@@ -0,0 +1,38 @@
package cc.mrbird.febs.job;
import cc.mrbird.febs.common.contants.AppContants;
import cc.mrbird.febs.common.utils.RedisUtils;
import cc.mrbird.febs.dapp.chain.ChainEnum;
import cc.mrbird.febs.dapp.chain.ChainService;
import cc.mrbird.febs.dapp.entity.DataDictionaryCustom;
import cc.mrbird.febs.dapp.mapper.DataDictionaryCustomMapper;
import cc.mrbird.febs.dapp.service.DappSystemService;
import cc.mrbird.febs.dapp.vo.RedisTransferPoolVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
/**
 * @author wzy
 * @date 2022-05-30
 **/
@Slf4j
@Component
@ConditionalOnProperty(prefix = "system", name = "reset-job", havingValue = "true")
public class MatrixResetJob {
    @Autowired
    private DappSystemService systemService;
    @Scheduled(cron = "0 0 0 * * ?")
    public void resetMatrix() {
        log.info("重置");
        systemService.resetMatrix();
    }
}
src/main/java/cc/mrbird/febs/job/SystemTradeJob.java
File was deleted
src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java
@@ -22,30 +22,6 @@
    @Autowired
    private DappSystemService dappSystemService;
//    @RabbitListener(queues = QueueConstants.ONLINE_TRANSFER)
//    public void onlineTransfer(String batchNo) {
//        log.info("收到链上转账消息:{}", batchNo);
//        dappSystemService.onlineTransfer(batchNo);
//    }
//
//    @RabbitListener(queues = QueueConstants.DISTRIB_PROFIT)
//    public void distrbProfit(String id) {
//        log.info("收到滑点分配消息:{}", id);
//        dappSystemService.tradeNftProfitDistribute(Long.parseLong(id));
//    }
//
//    @RabbitListener(queues = QueueConstants.USER_BUY_REWARD)
//    public void userBuyReward(String id) {
//        log.info("收到用户购买奖励消息:{}", id);
//        dappSystemService.userBuyReward(Long.parseLong(id));
//    }
//
//    @RabbitListener(queues = QueueConstants.NFT_BOX)
//    public void nftBox(String id) {
//        log.info("收到nft盲盒消息:{}", id);
//        dappSystemService.boxCnt(Long.parseLong(id));
//    }
    @RabbitListener(queues = QueueConstants.ACHIEVE_TREE)
    public void achieveTree(String id) {
        log.info("收到业绩树消息");
src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java
@@ -33,31 +33,6 @@
    }
    public void sendOnlineTransfer(String batchNo) {
        log.info("发送链上转账消息:{}", batchNo);
        CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
        rabbitTemplate.convertAndSend(QueueEnum.ONLINE_TRANSFER.getExchange(), QueueEnum.ONLINE_TRANSFER.getRoute(), batchNo, correlationData);
    }
    public void sendDitribProfit(Long id) {
        log.info("发送滑点分配消息:{}", id);
        CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
        rabbitTemplate.convertAndSend(QueueEnum.DISTRIB_PROFIT.getExchange(), QueueEnum.DISTRIB_PROFIT.getRoute(), id, correlationData);
    }
    public void sendUserBuyReward(Long id) {
        log.info("发送用户购买奖励消息:{}", id);
        CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
        rabbitTemplate.convertAndSend(QueueEnum.USER_BUY_REWARD.getExchange(), QueueEnum.USER_BUY_REWARD.getRoute(), id, correlationData);
    }
    public void sendNftBoxMsg(Long id) {
        log.info("发送NFT盲盒消息:{}", id);
        CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
        rabbitTemplate.convertAndSend(QueueEnum.NFT_BOX.getExchange(), QueueEnum.NFT_BOX.getRoute(), id, correlationData);
    }
    public void sendAchieveTreeMsg(Long id) {
        log.info("发送业绩树消息:{}", id);
        CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
src/main/resources/application-dev.yml
@@ -50,5 +50,5 @@
system:
  online-transfer: true
  chain-listener: false
  trade-job: false
  reset-job: false
  debug: false
src/main/resources/application-prod.yml
@@ -55,5 +55,5 @@
system:
  online-transfer: true
  chain-listener: true
  trade-job: true
  reset-job: true
  debug: false
src/main/resources/application-test.yml
@@ -51,5 +51,5 @@
system:
  online-transfer: false
  chain-listener: false
  trade-job: false
  reset-job: false
  debug: false
src/main/resources/mapper/dapp/DappAchieveMemberTreeDao.xml
@@ -36,4 +36,9 @@
        set has_money=1
        where tree_node=#{memberId}
    </update>
    <delete id="emptyTable">
        delete from dapp_achieve_member_tree
        where 1=1
    </delete>
</mapper>
src/main/resources/mapper/dapp/DappAchieveTreeDao.xml
@@ -3,12 +3,31 @@
<mapper namespace="cc.mrbird.febs.dapp.mapper.DappAchieveTreeDao">
    <select id="selectByMidNode" resultType="cc.mrbird.febs.dapp.entity.DappAchieveTreeEntity">
        select * from dapp_achieve_tree where mid_node=#{memberId}
        select * from dapp_achieve_tree where mid_node=#{memberId} and valid_state=1
    </select>
    <select id="selectTreeList" resultType="cc.mrbird.febs.dapp.entity.DappAchieveTreeEntity">
        select a.*, b.address, b.invite_id, b.referer_id from dapp_achieve_tree a
        inner join dapp_member b on a.mid_node=b.id
        inner join dapp_member b on a.mid_node=b.id and valid_state=1
        order by a.id
    </select>
    <select id="selectNewestTreeNode" resultType="cc.mrbird.febs.dapp.entity.DappAchieveTreeEntity">
        select * from dapp_achieve_tree a
        order by a.id desc
        limit 1
    </select>
    <select id="selectLastCountTreeNode" resultType="cc.mrbird.febs.dapp.entity.DappAchieveTreeEntity">
        select * from dapp_achieve_tree a
        where valid_state=1
        order by a.id desc
        limit #{count}
    </select>
    <update id="updateNodeValidState">
        update dapp_achieve_tree
            set valid_state=2
        where valid_state=1
    </update>
</mapper>
src/main/resources/mapper/dapp/DappMemberDao.xml
@@ -114,4 +114,10 @@
        select * from dapp_member
        where maker_type=1 and account_type='normal'
    </select>
    <update id="updateMemberActive">
        update dapp_member
            set active_status = 2
        where active_status = 1
    </update>
</mapper>