From 74cae02c58eb057e6f9422038d5b3ed30b7c9a2f Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Sat, 11 May 2024 10:40:07 +0800
Subject: [PATCH] 香港新环境
---
src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java | 172 ++++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 144 insertions(+), 28 deletions(-)
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 920b1be..778c238 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
@@ -1,17 +1,14 @@
package cc.mrbird.febs.dapp.service.impl;
import cc.mrbird.febs.common.contants.AppContants;
-import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.tree.MatrixTree;
import cc.mrbird.febs.common.tree.MemberNode;
import cc.mrbird.febs.common.utils.LoginUserUtil;
import cc.mrbird.febs.common.utils.RedisUtils;
-import cc.mrbird.febs.common.utils.SpringContextUtil;
import cc.mrbird.febs.dapp.chain.ChainEnum;
import cc.mrbird.febs.dapp.chain.ChainService;
import cc.mrbird.febs.dapp.contract.ContractMain;
import cc.mrbird.febs.dapp.dto.SystemDto;
-import cc.mrbird.febs.dapp.dto.TransferDto;
import cc.mrbird.febs.dapp.entity.*;
import cc.mrbird.febs.dapp.enumerate.*;
import cc.mrbird.febs.dapp.mapper.*;
@@ -25,24 +22,18 @@
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.date.Week;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.jline.utils.Log;
import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.web3j.utils.Convert;
import java.math.BigDecimal;
-import java.math.BigInteger;
import java.math.RoundingMode;
import java.util.*;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
import java.util.stream.Collectors;
/**
@@ -2469,7 +2460,7 @@
* 新增一条业绩
*/
MallAchieveRecord mallAchieveRecord = new MallAchieveRecord(
- memberId,amount,amount,DateUtil.date(),orderId,1,mallOrderInfo.getPayTime()
+ memberId,donateScore,donateScore,amount,amount,DateUtil.date(),orderId,1,mallOrderInfo.getPayTime()
);
mallAchieveRecordMapper.insert(mallAchieveRecord);
@@ -2629,7 +2620,8 @@
}
Long perkMemberId = dappMemberEntity.getId();
//获取当前用户所有进行中的业绩释放
- List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(perkMemberId);
+// List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(perkMemberId);
+ List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberIdAndScore(perkMemberId);
if(CollUtil.isEmpty(mallAchieveRecords)){
continue;
@@ -2943,6 +2935,9 @@
}
for(DappFundFlowEntity dappFundFlowEntity : dappFundFlowEntities){
Long memberId = dappFundFlowEntity.getMemberId();
+ if(memberId == 2852L){
+ Log.info("1");
+ }
//当日预期总收益
BigDecimal amount = dappFundFlowEntity.getAmount();
if(BigDecimal.ZERO.compareTo(amount) >= 0){
@@ -2950,13 +2945,116 @@
}
//当日预期总收益
BigDecimal amountMagic = amount;
- List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(memberId);
- if(CollUtil.isEmpty(mallAchieveRecords)){
+// List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(memberId);
+ List<MallAchieveRecord> mallAchieveRecordsScore = mallAchieveRecordMapper.selectListByMemberIdAndScore(memberId);
+ if(CollUtil.isEmpty(mallAchieveRecordsScore)){
+
+ BigDecimal localTotalAchieve = amount;
+ /**
+ * 用户减少赠送积分
+ */
+ DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
+ DappWalletMineEntity dappWalletMineEntity = dappWalletMineDao.selectByMemberId(memberId);
+ BigDecimal totalScore = dappWalletMineEntity.getTotalAmount();
+ BigDecimal availableScore = dappWalletMineEntity.getAvailableAmount();
+ if(BigDecimal.ZERO.compareTo(totalScore) >= 0){
+ continue;
+ }
+ if(localTotalAchieve.compareTo(totalScore) >= 0){
+ localTotalAchieve = totalScore;
+ //当实际获取大于用户的赠送积分,将用户更新为未激活
+ dappMemberEntity.setActiveStatus(2);
+ dappMemberDao.updateById(dappMemberEntity);
+ }
+
+ DappAccountMoneyChangeEntity reduceScoreAMC = new DappAccountMoneyChangeEntity(
+ memberId,
+ totalScore,
+ amountMagic.negate(),
+ localTotalAchieve.negate(),
+ AccountFlowEnum.SCORE.getCode(),
+ null);
+ dappAccountMoneyChangeDao.insert(reduceScoreAMC);
+
+ //插入积分流水
+ DappFundFlowEntity scoreFlow = new DappFundFlowEntity(
+ AccountFlowEnum.SCORE.getCode(),
+ memberId,
+ localTotalAchieve.negate(),
+ FundFlowEnum.REDUCE_SCORE_REAL.getCode(),
+ DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
+ BigDecimal.ZERO);
+ dappFundFlowDao.insert(scoreFlow);
+
+ BigDecimal totalScoreRelease = totalScore.subtract(localTotalAchieve);
+ BigDecimal availableScoreRelease = availableScore.subtract(localTotalAchieve);
+ //更新积分账户
+ dappWalletMineEntity.setTotalAmount(totalScoreRelease);
+ dappWalletMineEntity.setAvailableAmount(availableScoreRelease);
+ dappWalletMineDao.updateById(dappWalletMineEntity);
+
+
+ //用户增加余额
+ DappWalletCoinEntity dappWalletCoinEntity = dappWalletCoinDao.selectByMemberId(memberId);
+ BigDecimal totalAmount = dappWalletCoinEntity.getTotalAmount();
+ BigDecimal availableAmount = dappWalletCoinEntity.getAvailableAmount();
+
+ DappAccountMoneyChangeEntity addAmountAMC = new DappAccountMoneyChangeEntity(
+ memberId,
+ totalAmount,
+ amountMagic,
+ localTotalAchieve,
+ AccountFlowEnum.AMOUNT.getCode(),
+ null);
+ dappAccountMoneyChangeDao.insert(addAmountAMC);
+ //插入余额流水
+ DappFundFlowEntity amountFlow = new DappFundFlowEntity(
+ AccountFlowEnum.AMOUNT.getCode(),
+ memberId,
+ localTotalAchieve,
+ FundFlowEnum.ADD_AMOUNT_REAL.getCode(),
+ DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
+ BigDecimal.ZERO);
+ dappFundFlowDao.insert(amountFlow);
+
+ BigDecimal totalAmountRelease = totalAmount.add(localTotalAchieve);
+ BigDecimal availableAmountRelease = availableAmount.add(localTotalAchieve);
+ //更新余额账户
+ dappWalletCoinEntity.setTotalAmount(totalAmountRelease);
+ dappWalletCoinEntity.setAvailableAmount(availableAmountRelease);
+ dappWalletCoinDao.updateById(dappWalletCoinEntity);
+
+ StringBuffer content = new StringBuffer();
+ if(amountMagic.compareTo(localTotalAchieve) > 0){
+ content.append("今日可加速"+amountMagic.setScale(2,BigDecimal.ROUND_DOWN)+",实际加速"+localTotalAchieve.setScale(2,BigDecimal.ROUND_DOWN)+"" +
+ "烧伤"+amountMagic.subtract(localTotalAchieve).setScale(2,BigDecimal.ROUND_DOWN)+",原因消费金额1%加速上" +
+ "限,增加消费金额可获得更多收益");
+ }else{
+ content.append("今日可加速"+amountMagic.setScale(2,BigDecimal.ROUND_DOWN)+",实际加速"+localTotalAchieve.setScale(2,BigDecimal.ROUND_DOWN)+"" +
+ "烧伤"+amountMagic.subtract(localTotalAchieve).setScale(2,BigDecimal.ROUND_DOWN));
+ }
+ DappAccountMoneyChangeEntity record = new DappAccountMoneyChangeEntity(
+ memberId,
+ totalAmount,
+ amountMagic,
+ localTotalAchieve,
+ AccountFlowEnum.AMOUNT_RECORD.getCode(),
+ content.toString());
+ dappAccountMoneyChangeDao.insert(record);
+
+ //实时更新用户等级
+// chainProducer.sendAutoLevelUpTeamMsg(memberId);
+
+ set.add(dappMemberEntity);
continue;
}
+
+
//实际获取总收益
BigDecimal localTotalAchieve = BigDecimal.ZERO;
- BigDecimal totalAchieve = mallAchieveRecords.stream().map(MallAchieveRecord::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+ BigDecimal totalAchieve = mallAchieveRecordsScore.stream().map(MallAchieveRecord::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+ BigDecimal totalAchieveCostAmount = mallAchieveRecordsScore.stream().map(MallAchieveRecord::getCostAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+ BigDecimal totalScoreAva = mallAchieveRecordsScore.stream().map(MallAchieveRecord::getScore).reduce(BigDecimal.ZERO, BigDecimal::add);
//用户每日获取的最大值
DataDictionaryCustom maxReleaseDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
@@ -2965,19 +3063,23 @@
);
BigDecimal maxRelease = new BigDecimal(ObjectUtil.isEmpty(maxReleaseDic) ? "1" : maxReleaseDic.getValue());
//用户每日获取的最大值
- BigDecimal maxReleaseMember = totalAchieve.multiply(maxRelease).setScale(2, BigDecimal.ROUND_DOWN);
+ BigDecimal maxReleaseMember = totalAchieveCostAmount.multiply(maxRelease).setScale(2, BigDecimal.ROUND_DOWN);
if(amount.compareTo(maxReleaseMember) > 0){
amount = maxReleaseMember;
}
//当日获取总收益大于总业绩
- if(amount.compareTo(totalAchieve) >= 0){
- for(MallAchieveRecord memberAchieve : mallAchieveRecords){
+// if(amount.compareTo(totalAchieve) >= 0){
+ if(amount.compareTo(totalScoreAva) >= 0){
+ for(MallAchieveRecord memberAchieve : mallAchieveRecordsScore){
memberAchieve.setIsNormal(2);
memberAchieve.setAmount(BigDecimal.ZERO);
+ memberAchieve.setScore(BigDecimal.ZERO);
mallAchieveRecordMapper.updateById(memberAchieve);
}
- localTotalAchieve = totalAchieve;
- amount = amount.subtract(totalAchieve);
+// localTotalAchieve = totalAchieve;
+// amount = amount.subtract(totalAchieve);
+ localTotalAchieve = totalScoreAva;
+ amount = amount.subtract(totalScoreAva);
}else{
/**
*
@@ -2986,12 +3088,18 @@
* amount 0 0
*
*/
- for(MallAchieveRecord memberAchieve : mallAchieveRecords){
+ for(MallAchieveRecord memberAchieve : mallAchieveRecordsScore){
BigDecimal achieveAmount = memberAchieve.getAmount();
- if(BigDecimal.ZERO.compareTo(amount) >= 0){
+ BigDecimal achieveScoreAva = memberAchieve.getScore();
+ if(BigDecimal.ZERO.compareTo(achieveScoreAva) >= 0){
break;
- }else if(amount.compareTo(achieveAmount) < 0){
- memberAchieve.setAmount(achieveAmount.subtract(amount).setScale(2,BigDecimal.ROUND_DOWN));
+ }else if(amount.compareTo(achieveScoreAva) < 0){
+ if(BigDecimal.ZERO.compareTo(achieveAmount.subtract(amount)) >= 0){
+ memberAchieve.setAmount(BigDecimal.ZERO);
+ }else{
+ memberAchieve.setAmount(achieveAmount.subtract(amount).setScale(2,BigDecimal.ROUND_DOWN));
+ }
+ memberAchieve.setScore(achieveScoreAva.subtract(amount).setScale(2,BigDecimal.ROUND_DOWN));
mallAchieveRecordMapper.updateById(memberAchieve);
localTotalAchieve = localTotalAchieve.add(amount);
amount = BigDecimal.ZERO;
@@ -2999,9 +3107,10 @@
}else{
memberAchieve.setIsNormal(2);
memberAchieve.setAmount(BigDecimal.ZERO);
+ memberAchieve.setScore(BigDecimal.ZERO);
mallAchieveRecordMapper.updateById(memberAchieve);
- localTotalAchieve = localTotalAchieve.add(achieveAmount);
- amount = amount.subtract(achieveAmount);
+ localTotalAchieve = localTotalAchieve.add(achieveScoreAva);
+ amount = amount.subtract(achieveScoreAva);
}
}
}
@@ -3097,7 +3206,7 @@
dappAccountMoneyChangeDao.insert(record);
//实时更新用户等级
- chainProducer.sendAutoLevelUpTeamMsg(memberId);
+// chainProducer.sendAutoLevelUpTeamMsg(memberId);
set.add(dappMemberEntity);
}
@@ -3239,6 +3348,9 @@
}
BigDecimal packageTeamPerkCnt = new BigDecimal(packageTeamPerkCntDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+ if(BigDecimal.ZERO.compareTo(packageTeamPerkCnt) >= 0){
+ return;
+ }
if(packageTeamPerkCnt.compareTo(divide) >= 0){
BigDecimal subtract = packageTeamPerkCnt.subtract(divide);
packageTeamPerkCntDic.setValue(subtract.toString());
@@ -3270,10 +3382,14 @@
return;
}
for(DappMemberEntity dappMemberEntity : dappMemberEntities){
+ if(dappMemberEntity.getId() == 2852){
+ Log.info("1");
+ }
/**
* 每个人的第一次入单之后的业绩不一样
*/
- List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(dappMemberEntity.getId());
+// List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(dappMemberEntity.getId());
+ List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberIdAndScore(dappMemberEntity.getId());
if(CollUtil.isEmpty(mallAchieveRecords)){
continue;
}
--
Gitblit v1.9.1