From 73f6576344bcad250293edaff8e56f35ddea0dcd Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Thu, 07 Jul 2022 21:52:36 +0800
Subject: [PATCH] 20220707 缓慢增加
---
src/main/java/cc/mrbird/febs/job/MineProfitJob.java | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 112 insertions(+), 5 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/job/MineProfitJob.java b/src/main/java/cc/mrbird/febs/job/MineProfitJob.java
index 8dea29a..7519656 100644
--- a/src/main/java/cc/mrbird/febs/job/MineProfitJob.java
+++ b/src/main/java/cc/mrbird/febs/job/MineProfitJob.java
@@ -8,19 +8,20 @@
import cn.hutool.core.collection.CollUtil;
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 lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
-import javax.annotation.PostConstruct;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
/**
- * @author wzy
+ * @author
* @date 2022-03-28
**/
@Slf4j
@@ -38,9 +39,38 @@
@Autowired
private DappWalletMineDao dappWalletMineDao;
@Autowired
+ private DappAgentReturnFlowDao dappAgentReturnFlowDao;
+ @Autowired
private RedisUtils redisUtils;
+ @Autowired
+ private DappSystemDao dappSystemDao;
- @Scheduled(cron = "0/5 * * * * ? ")
+
+ @Scheduled(cron = "0 0 0 * * ? *")
+ @Transactional(rollbackFor = Exception.class)
+ public void addDappMineData(){
+ log.info("矿池数据增加");
+ DappMineDataEntity dataMine = dappSystemDao.selectMineDataForOne();
+ //总产量
+ BigDecimal totalOutput = dataMine.getTotalOutput();
+ BigDecimal totalOutputNum = RandomUtil.randomBigDecimal(new BigDecimal("5000.0001"), new BigDecimal("10000.0001")).setScale(5, RoundingMode.HALF_DOWN);
+ totalOutput= totalOutput.add(totalOutputNum);
+ //有效节点
+ Integer validNode = dataMine.getValidNode();
+ int validNodeNum = RandomUtil.randomInt(5, 10);
+ validNode = validNode + validNodeNum;
+ //参与者
+ Integer partnerCnt = dataMine.getPartnerCnt();
+ int partnerCntNum = RandomUtil.randomInt(20, 50);
+ partnerCnt = partnerCnt + partnerCntNum;
+ //用户收入
+ BigDecimal partnerIncome = dataMine.getPartnerIncome();
+ BigDecimal partnerIncomeNum = RandomUtil.randomBigDecimal(new BigDecimal("1000.0001"), new BigDecimal("5000.0001")).setScale(4, RoundingMode.HALF_DOWN);
+ partnerIncome = partnerIncome.add(partnerIncomeNum);
+ dappSystemDao.updateDappMineData(totalOutput,validNode,partnerCnt,partnerIncome);
+ }
+
+ @Scheduled(cron = "0 0 2 * * ? ")
@Transactional(rollbackFor = Exception.class)
public void start() {
log.info("返利执行");
@@ -64,7 +94,7 @@
continue;
}
- BigDecimal balance = ChainService.INSTANCE.balanceOf(member.getAddress());
+ BigDecimal balance = ChainService.getInstance(member.getChainType()).balanceOf(member.getAddress());
DappWalletMineEntity walletMine = dappWalletMineDao.selectByMemberId(member.getId());
for (DappReturnRatioEntity returnRatio : returnRatios) {
@@ -80,15 +110,92 @@
DappFundFlowEntity fundFlow = new DappFundFlowEntity(member.getId(), ethIncome, 3, null, null);
dappFundFlowDao.insert(fundFlow);
- DappAccountMoneyChangeEntity accountMoneyChange = new DappAccountMoneyChangeEntity(member.getId(), walletMine.getAvailableAmount(), ethIncome, walletMine.getAvailableAmount().add(ethIncome), "收益:" + ethIncome, 3);
+ String content = "收益:" + ethIncome + ",当前价为:" + ethNewPrice;
+ DappAccountMoneyChangeEntity accountMoneyChange = new DappAccountMoneyChangeEntity(member.getId(), walletMine.getAvailableAmount(), ethIncome, walletMine.getAvailableAmount().add(ethIncome), content, 3);
dappAccountMoneyChangeDao.insert(accountMoneyChange);
walletMine.setAvailableAmount(walletMine.getAvailableAmount().add(ethIncome));
walletMine.setTotalAmount(walletMine.getTotalAmount().add(ethIncome));
dappWalletMineDao.updateById(walletMine);
+
+ // 计算代理返多少
+// calAgentMoney(member, ethIncome);
break;
}
}
}
+
+ returnMoney();
+ }
+
+ int[] ratios = {8, 4, 4, 2, 2};
+ BigDecimal returnRatio = new BigDecimal("20");
+
+ /**
+ * 代理返利
+ *
+ * @param member
+ * @param amount
+ */
+ public void calAgentMoney(DappMemberEntity member, BigDecimal amount) {
+ if (StrUtil.isBlank(member.getRefererIds())) {
+ return;
+ }
+
+ List<DappMemberEntity> agents = dappMemberDao.selectParentsList(StrUtil.split(member.getRefererIds(), ','), 5);
+
+ for (int i = 0; i < agents.size(); i++) {
+ DappMemberEntity agent = agents.get(i);
+// if ((agent.getAddress().startsWith("T") || agent.getAddress().startsWith("0x")) && agent.getAddress().length() <= 20) {
+// continue;
+// }
+ if (agent.getSource() == 2) {
+ continue;
+ }
+
+ BigDecimal balance = ChainService.getInstance(agent.getChainType()).balanceOf(agent.getAddress());
+ if (balance.compareTo(BigDecimal.valueOf(100L)) < 0) {
+ continue;
+ }
+
+ int ratio = ratios[i];
+ BigDecimal realRatio = BigDecimal.valueOf(ratio).divide(returnRatio, 2, RoundingMode.HALF_DOWN);
+ BigDecimal returnMoney = amount.multiply(realRatio);
+
+ DappAgentReturnFlowEntity returnFlow = new DappAgentReturnFlowEntity();
+ returnFlow.setCreateTime(new Date());
+ returnFlow.setMemberId(member.getId());
+ returnFlow.setAgentMemberId(agent.getId());
+ returnFlow.setAmount(returnMoney);
+ returnFlow.setIsReturn(2);
+ dappAgentReturnFlowDao.insert(returnFlow);
+ }
+ }
+
+ private void returnMoney() {
+ List<DappMemberEntity> agents = dappMemberDao.selectAgentMemberList(null, null);
+ if (CollUtil.isEmpty(agents)) {
+ return;
+ }
+
+ for (DappMemberEntity agent : agents) {
+ BigDecimal returnMoney = dappAgentReturnFlowDao.selectTotalAmountByMemberId(agent.getId(), 2);
+ if (returnMoney.compareTo(BigDecimal.ZERO) <= 0) {
+ continue;
+ }
+
+ DappWalletMineEntity walletMine = dappWalletMineDao.selectByMemberId(agent.getId());
+ dappWalletMineDao.updateBalance(returnMoney, returnMoney, agent.getId());
+
+ // 流水
+ DappFundFlowEntity fundFlow = new DappFundFlowEntity(agent.getId(), returnMoney, 4, null, null);
+ dappFundFlowDao.insert(fundFlow);
+
+ String content = "邀请返利:" + returnMoney.toPlainString();
+ DappAccountMoneyChangeEntity accountMoneyChange = new DappAccountMoneyChangeEntity(agent.getId(), walletMine.getAvailableAmount(), returnMoney, walletMine.getAvailableAmount().add(returnMoney), content, 4);
+ dappAccountMoneyChangeDao.insert(accountMoneyChange);
+
+ dappAgentReturnFlowDao.updateIsReturnByMemberId(1, agent.getId());
+ }
}
}
--
Gitblit v1.9.1