From 4f1ee115be474ff9b6621fa24a23c0fc2be8c963 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Sat, 27 Aug 2022 23:23:43 +0800 Subject: [PATCH] fix --- src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java | 69 ++++++------- src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java | 24 ---- src/main/java/cc/mrbird/febs/dapp/mapper/DappAchieveMemberTreeDao.java | 2 src/main/java/cc/mrbird/febs/job/MatrixResetJob.java | 38 +++++++ src/main/resources/application-prod.yml | 2 src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java | 25 ----- src/main/resources/application-test.yml | 2 /dev/null | 71 -------------- src/main/resources/mapper/dapp/DappAchieveTreeDao.xml | 23 ++++ src/main/resources/mapper/dapp/DappMemberDao.xml | 6 + src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java | 2 src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java | 2 src/main/resources/mapper/dapp/DappAchieveMemberTreeDao.xml | 5 + src/main/java/cc/mrbird/febs/dapp/controller/MemberMoneyFlowController.java | 12 -- src/main/resources/application-dev.yml | 2 src/main/java/cc/mrbird/febs/dapp/mapper/DappAchieveTreeDao.java | 6 + 16 files changed, 116 insertions(+), 175 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/dapp/controller/MemberMoneyFlowController.java b/src/main/java/cc/mrbird/febs/dapp/controller/MemberMoneyFlowController.java index 60e8ffc..5d085b1 100644 --- a/src/main/java/cc/mrbird/febs/dapp/controller/MemberMoneyFlowController.java +++ b/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))); diff --git a/src/main/java/cc/mrbird/febs/dapp/mapper/DappAchieveMemberTreeDao.java b/src/main/java/cc/mrbird/febs/dapp/mapper/DappAchieveMemberTreeDao.java index 62ec4f1..1c05270 100644 --- a/src/main/java/cc/mrbird/febs/dapp/mapper/DappAchieveMemberTreeDao.java +++ b/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(); } diff --git a/src/main/java/cc/mrbird/febs/dapp/mapper/DappAchieveTreeDao.java b/src/main/java/cc/mrbird/febs/dapp/mapper/DappAchieveTreeDao.java index 301d67b..5939be1 100644 --- a/src/main/java/cc/mrbird/febs/dapp/mapper/DappAchieveTreeDao.java +++ b/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(); } diff --git a/src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java b/src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java index 15107c2..a6b328d 100644 --- a/src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java +++ b/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(); } diff --git a/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java b/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java index ef9c4ef..b3c6361 100644 --- a/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java +++ b/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(); } diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java index 1d60942..bb18c7b 100644 --- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java +++ b/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(); + } } diff --git a/src/main/java/cc/mrbird/febs/job/MatrixResetJob.java b/src/main/java/cc/mrbird/febs/job/MatrixResetJob.java new file mode 100644 index 0000000..e67f084 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/job/MatrixResetJob.java @@ -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(); + } +} diff --git a/src/main/java/cc/mrbird/febs/job/SystemTradeJob.java b/src/main/java/cc/mrbird/febs/job/SystemTradeJob.java deleted file mode 100644 index 92c36d2..0000000 --- a/src/main/java/cc/mrbird/febs/job/SystemTradeJob.java +++ /dev/null @@ -1,71 +0,0 @@ -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 = "trade-job", havingValue = "true") -public class SystemTradeJob { - -// @Autowired -// private DappSystemService systemService; -// -// /** -// * 中转池容量计算 -// * -// * 源池出币量最低为0.5%每天基础量,作为可s交易量 -// * 按当天交易完成量的百分比,第二天出币补齐已成交部分 -// * 按每天的基础量,同一阶段累计完成5次100%交易量后增加0.5%基础出币量比例出币,无上限…… -// * 当一个阶段的当日量72小时未100%交易完成,中转池回到上一阶段阶容量。 -// * 例:当进入一个新阶段为每天出币量为3%时,此笔出量累计72小时未完全成交,源池出币量回到上一阶段每天出币2.5%,需重计5倍量,……以此类推增加或递减 -// */ -// @Scheduled(cron = "0 0 0 * * ?") -// public void transferPoolVol() { -// log.info("中转池容量"); -// systemService.transferPoolSetting(); -// } -// -// /** -// * 源池每日出U限制 -// * -// * 源池每天可交易量为源池总USDT数量的10%,以上一天00:00时读取源池实时USDT数量为参考,作为当天可交易USDT数量。 -// */ -// @Scheduled(cron = "0 0 0 * * ?") -// public void sourcePoolUsdtOutLimit() { -// log.info("源池每日出U限制"); -// systemService.sourcePoolUsdtOutLimitSetting(); -// } -// -// /** -// * 挖矿 -// * -// * 以中转池成交数1:0.2出矿(中转池卖出多少,矿池则1:0.2出币),每个地址所得=出币量*(单个地址持币量/全网持币量) -// * source限矿算法: -// * 按前一天价格,有跌幅则按实际产矿量减半。 -// */ -// @Scheduled(cron = "0 0 1 * * ?") -// public void mineJob() { -// log.info("挖矿"); -// systemService.mining(); -// } -} diff --git a/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java b/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java index 8c1ff81..36b35d8 100644 --- a/src/main/java/cc/mrbird/febs/rabbit/consumer/ChainConsumer.java +++ b/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("收到业绩树消息"); diff --git a/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java b/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java index 031dad6..fcae1bf 100644 --- a/src/main/java/cc/mrbird/febs/rabbit/producer/ChainProducer.java +++ b/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()); diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 14b02a1..60d3c52 100644 --- a/src/main/resources/application-dev.yml +++ b/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 \ No newline at end of file diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 54a6926..fc138eb 100644 --- a/src/main/resources/application-prod.yml +++ b/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 \ No newline at end of file diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml index c3e6b75..56975be 100644 --- a/src/main/resources/application-test.yml +++ b/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 diff --git a/src/main/resources/mapper/dapp/DappAchieveMemberTreeDao.xml b/src/main/resources/mapper/dapp/DappAchieveMemberTreeDao.xml index eed99ef..552bdc3 100644 --- a/src/main/resources/mapper/dapp/DappAchieveMemberTreeDao.xml +++ b/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> \ No newline at end of file diff --git a/src/main/resources/mapper/dapp/DappAchieveTreeDao.xml b/src/main/resources/mapper/dapp/DappAchieveTreeDao.xml index 65653a0..7cde4a1 100644 --- a/src/main/resources/mapper/dapp/DappAchieveTreeDao.xml +++ b/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> \ No newline at end of file diff --git a/src/main/resources/mapper/dapp/DappMemberDao.xml b/src/main/resources/mapper/dapp/DappMemberDao.xml index 8041ce9..02b9685 100644 --- a/src/main/resources/mapper/dapp/DappMemberDao.xml +++ b/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> \ No newline at end of file -- Gitblit v1.9.1