From 76706e083e2f5d91b4d3346ffead2e6bce2d09c5 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Tue, 15 Aug 2023 17:00:28 +0800
Subject: [PATCH] 后台修改
---
src/main/java/cc/mrbird/febs/dapp/enumerate/FundFlowEnum.java | 4
src/main/java/cc/mrbird/febs/dapp/service/impl/DappSystemServiceImpl.java | 87 +++++++++++-
src/main/resources/templates/febs/views/dapp/member.html | 8 +
src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java | 2
src/main/resources/mapper/dapp/DappMemberDao.xml | 3
src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java | 15 ++
src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java | 5
src/main/java/cc/mrbird/febs/job/BnbTransferJob.java | 11 +
src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java | 248 +++++++++++++++++++++++++++++++++++
src/main/java/cc/mrbird/febs/dapp/controller/MemberController.java | 6
src/main/resources/templates/febs/views/dapp/money-change-flow.html | 7
11 files changed, 382 insertions(+), 14 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/dapp/controller/MemberController.java b/src/main/java/cc/mrbird/febs/dapp/controller/MemberController.java
index d9623b5..9920b8c 100644
--- a/src/main/java/cc/mrbird/febs/dapp/controller/MemberController.java
+++ b/src/main/java/cc/mrbird/febs/dapp/controller/MemberController.java
@@ -201,4 +201,10 @@
return new FebsResponse().success().data(dataTable);
}
+ @GetMapping(value = "/balanceSystem")
+ public FebsResponse balanceSystem() {
+ return dappMemberService.balanceSystem();
+// return new FebsResponse().success().message("操作成功");
+ }
+
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java b/src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java
index 71685f2..2080552 100644
--- a/src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java
+++ b/src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java
@@ -6,6 +6,21 @@
public enum DataDictionaryEnum {
/**
+ * 团队产生的收益1%奖励积分
+ */
+ PACKAGE_TEAM_PERK_PERCENT("PACKAGE_TEAM_PERK_PERCENT","PACKAGE_TEAM_PERK_PERCENT"),
+
+ /**
+ * 团队产生的收益1%奖励积分的总数量
+ */
+ PACKAGE_TEAM_PERK_CNT("PACKAGE_TEAM_PERK_CNT","PACKAGE_TEAM_PERK_CNT"),
+
+ /**
+ * 资产包已销毁数量
+ */
+ PACKAGE_AVA_CNT("PACKAGE_AVA_CNT","PACKAGE_AVA_CNT"),
+
+ /**
* 提现手续费
*/
WITHDRAW_FEE("WITHDRAW_FEE","WITHDRAW_FEE"),
diff --git a/src/main/java/cc/mrbird/febs/dapp/enumerate/FundFlowEnum.java b/src/main/java/cc/mrbird/febs/dapp/enumerate/FundFlowEnum.java
index 588626d..b2c2689 100644
--- a/src/main/java/cc/mrbird/febs/dapp/enumerate/FundFlowEnum.java
+++ b/src/main/java/cc/mrbird/febs/dapp/enumerate/FundFlowEnum.java
@@ -7,6 +7,10 @@
*/
@Getter
public enum FundFlowEnum {
+ //资产包增加
+ PACKAGE_ADD("PACKAGE_ADD", 42),
+ //系统回购
+ SYSTEM_PACKAGE_SALE("SYSTEM_PACKAGE_SALE", 41),
//提现
WITHDRAW_USDT("WITHDRAW_USDT", 40),
//充值
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java b/src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java
index 0d6a11e..0c6f445 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java
@@ -98,4 +98,6 @@
void updateAddress(CreateAddressDto createAddressDto);
List<MallGoodsCategory> categoryList();
+
+ FebsResponse balanceSystem();
}
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 84acd89..8e6a81d 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/DappSystemService.java
@@ -7,6 +7,7 @@
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
+import java.util.Set;
public interface DappSystemService {
@@ -117,7 +118,9 @@
void teamStaticPerk();
- void updateAchieve();
+ Set<DappMemberEntity> updateAchieve();
void speedSalePackageMsg(Long flowId);
+
+ void updatePackage(Set<DappMemberEntity> dappMemberEntities);
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
index d37bb77..da79277 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
@@ -975,6 +975,254 @@
return mallGoodsCategoryMapper.selectRecommendCategoryList();
}
+ @Override
+ public FebsResponse balanceSystem() {
+
+ List<DappMemberEntity> dappMemberEntities = dappMemberDao.selectAllMemberForInCome();
+ if(CollUtil.isNotEmpty(dappMemberEntities)){
+ if(dappMemberEntities.size() <= 100){
+ for(DappMemberEntity dappMemberEntity : dappMemberEntities){
+ Long memberId = dappMemberEntity.getId();
+ BigDecimal balance = dappMemberEntity.getBalance();
+
+ BigDecimal cnt = balance.divide(new BigDecimal(2) , 2 ,BigDecimal.ROUND_DOWN);
+ dappMemberEntity.setBalance(balance.subtract(cnt));
+ dappMemberDao.updateById(dappMemberEntity);
+
+ DataDictionaryCustom packageScorePriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.PACKAGE_SCORE_PRICE.getType(),
+ DataDictionaryEnum.PACKAGE_SCORE_PRICE.getCode()
+ );
+ BigDecimal packageScorePrice = new BigDecimal(ObjectUtil.isEmpty(packageScorePriceDic) ? "0" : packageScorePriceDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+ //卖出资产乘以价格获取到预期获取的总额
+ BigDecimal totalAmount = cnt.multiply(packageScorePrice).setScale(2, BigDecimal.ROUND_DOWN);
+ //资产包卖出划入底池比例
+ DataDictionaryCustom packageToPoorPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.PACKAGE_SALE_TO_POOR_PERCENT.getType(),
+ DataDictionaryEnum.PACKAGE_SALE_TO_POOR_PERCENT.getCode()
+ );
+ BigDecimal packageToPoorPercent = new BigDecimal(ObjectUtil.isEmpty(packageToPoorPercentDic) ? "0.1" : packageToPoorPercentDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+ //划入底池的金额
+ BigDecimal poorAmount = totalAmount.multiply(packageToPoorPercent).setScale(2, BigDecimal.ROUND_DOWN);
+ //实际获取的金额
+ BigDecimal realAmount = totalAmount.subtract(poorAmount);
+ //生成一条资金流水
+ DappFundFlowEntity scoreFlow = new DappFundFlowEntity(
+ memberId,
+ realAmount,
+ FundFlowEnum.SYSTEM_PACKAGE_SALE.getCode(),
+ DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
+ BigDecimal.ZERO);
+ dappFundFlowDao.insert(scoreFlow);
+ dappWalletCoinDao.addTotalAndaddAvailableByMemberId(memberId,realAmount);
+ DappFundFlowEntity feeFlow = new DappFundFlowEntity(
+ memberId,
+ poorAmount.negate(),
+ FundFlowEnum.SYSTEM_PACKAGE_SALE.getCode(),
+ DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
+ BigDecimal.ZERO);
+ dappFundFlowDao.insert(feeFlow);
+
+ //卖出积分直接销毁。
+ DataDictionaryCustom packageTotalScoreDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.PACKAGE_TOTAL_SCORE.getType(),
+ DataDictionaryEnum.PACKAGE_TOTAL_SCORE.getCode()
+ );
+ BigDecimal avaPackageTotalScore = new BigDecimal(ObjectUtil.isEmpty(packageTotalScoreDic) ? "21000" : packageTotalScoreDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+ //更新USDT底池
+ DataDictionaryCustom packagePoorDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.PACKAGE_POOR.getType(),
+ DataDictionaryEnum.PACKAGE_POOR.getCode()
+ );
+ BigDecimal packagePoor = new BigDecimal(ObjectUtil.isEmpty(packagePoorDic) ? "0" : packagePoorDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+ BigDecimal avaPackagePoor = packagePoor.add(poorAmount);
+ packagePoorDic.setValue(avaPackagePoor.toString());
+ dataDictionaryCustomMapper.updateById(packagePoorDic);
+ //计算当前价格
+ BigDecimal divide = avaPackagePoor.divide(avaPackageTotalScore, 8, BigDecimal.ROUND_DOWN);
+ packageScorePriceDic.setValue(divide.toString());
+ dataDictionaryCustomMapper.updateById(packageScorePriceDic);
+ }
+ return new FebsResponse().success();
+ }
+ List<MallAchieveRecord> mallAchieveRecordList = new ArrayList<>();
+ for(DappMemberEntity dappMemberEntity : dappMemberEntities){
+ //获取每个人的业绩
+ //业绩集合
+ List<BigDecimal> list = new ArrayList<>();
+ //总业绩
+ BigDecimal teamIncomeMax = BigDecimal.ZERO;
+ //所有直推团队,就是这个会员的所有区域的业绩。
+
+ // 直推用户
+ List<DappMemberEntity> childs = dappMemberDao.selectMemberInfoByRefererId(dappMemberEntity.getInviteId());
+ List<String> childsInviteIds = childs.stream().map(DappMemberEntity::getInviteId).collect(Collectors.toList());
+ if(CollUtil.isNotEmpty(childsInviteIds)){
+ for(String inviteId : childsInviteIds){
+ BigDecimal totalIncomeMember = dappMemberDao.selectAchieveRecordByInviteId(inviteId);
+ teamIncomeMax = teamIncomeMax.add(totalIncomeMember);
+ list.add(totalIncomeMember);
+ }
+ //去掉一个最大区的业绩
+ BigDecimal bigMax = list.stream().max(BigDecimal::compareTo).get();
+ teamIncomeMax = teamIncomeMax.subtract(bigMax);
+
+ MallAchieveRecord mallAchieveRecord = new MallAchieveRecord();
+ mallAchieveRecord.setMemberId(dappMemberEntity.getId());
+ mallAchieveRecord.setAmount(teamIncomeMax);
+ mallAchieveRecordList.add(mallAchieveRecord);
+ }
+ }
+ if(CollUtil.isNotEmpty(mallAchieveRecordList)){
+ //按照小区业绩的多少排名
+ List<MallAchieveRecord> collect = mallAchieveRecordList
+ .stream()
+ .sorted(Comparator.comparing(MallAchieveRecord::getAmount))
+ .collect(Collectors.toList());
+
+ List<MallAchieveRecord> top100Performances = collect.stream()
+ .limit(100)
+ .collect(Collectors.toList());
+ if(CollUtil.isNotEmpty(top100Performances)){
+ for(MallAchieveRecord mallAchieveRecord : top100Performances){
+ Long memberId = mallAchieveRecord.getMemberId();
+ DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
+ BigDecimal balance = dappMemberEntity.getBalance();
+
+ BigDecimal cnt = balance.divide(new BigDecimal(2) , 2 ,BigDecimal.ROUND_DOWN);
+ dappMemberEntity.setBalance(balance.subtract(cnt));
+ dappMemberDao.updateById(dappMemberEntity);
+ DataDictionaryCustom packageScorePriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.PACKAGE_SCORE_PRICE.getType(),
+ DataDictionaryEnum.PACKAGE_SCORE_PRICE.getCode()
+ );
+ BigDecimal packageScorePrice = new BigDecimal(ObjectUtil.isEmpty(packageScorePriceDic) ? "0" : packageScorePriceDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+ //卖出资产乘以价格获取到预期获取的总额
+ BigDecimal totalAmount = cnt.multiply(packageScorePrice).setScale(2, BigDecimal.ROUND_DOWN);
+ //资产包卖出划入底池比例
+ DataDictionaryCustom packageToPoorPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.PACKAGE_SALE_TO_POOR_PERCENT.getType(),
+ DataDictionaryEnum.PACKAGE_SALE_TO_POOR_PERCENT.getCode()
+ );
+ BigDecimal packageToPoorPercent = new BigDecimal(ObjectUtil.isEmpty(packageToPoorPercentDic) ? "0.1" : packageToPoorPercentDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+ //划入底池的金额
+ BigDecimal poorAmount = totalAmount.multiply(packageToPoorPercent).setScale(2, BigDecimal.ROUND_DOWN);
+ //实际获取的金额
+ BigDecimal realAmount = totalAmount.subtract(poorAmount);
+ //生成一条资金流水
+ DappFundFlowEntity scoreFlow = new DappFundFlowEntity(
+ memberId,
+ realAmount,
+ FundFlowEnum.SYSTEM_PACKAGE_SALE.getCode(),
+ DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
+ BigDecimal.ZERO);
+ dappFundFlowDao.insert(scoreFlow);
+ dappWalletCoinDao.addTotalAndaddAvailableByMemberId(memberId,realAmount);
+ DappFundFlowEntity feeFlow = new DappFundFlowEntity(
+ memberId,
+ poorAmount.negate(),
+ FundFlowEnum.SYSTEM_PACKAGE_SALE.getCode(),
+ DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
+ BigDecimal.ZERO);
+ dappFundFlowDao.insert(feeFlow);
+
+ //卖出积分直接销毁。
+ DataDictionaryCustom packageTotalScoreDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.PACKAGE_TOTAL_SCORE.getType(),
+ DataDictionaryEnum.PACKAGE_TOTAL_SCORE.getCode()
+ );
+ BigDecimal avaPackageTotalScore = new BigDecimal(ObjectUtil.isEmpty(packageTotalScoreDic) ? "21000" : packageTotalScoreDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+ //更新USDT底池
+ DataDictionaryCustom packagePoorDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.PACKAGE_POOR.getType(),
+ DataDictionaryEnum.PACKAGE_POOR.getCode()
+ );
+ BigDecimal packagePoor = new BigDecimal(ObjectUtil.isEmpty(packagePoorDic) ? "0" : packagePoorDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+ BigDecimal avaPackagePoor = packagePoor.add(poorAmount);
+ packagePoorDic.setValue(avaPackagePoor.toString());
+ dataDictionaryCustomMapper.updateById(packagePoorDic);
+ //计算当前价格
+ BigDecimal divide = avaPackagePoor.divide(avaPackageTotalScore, 8, BigDecimal.ROUND_DOWN);
+ packageScorePriceDic.setValue(divide.toString());
+ dataDictionaryCustomMapper.updateById(packageScorePriceDic);
+ }
+ }
+
+ List<MallAchieveRecord> remainingUsers = mallAchieveRecordList
+ .stream()
+ .sorted(Comparator.comparing(MallAchieveRecord::getAmount).reversed())
+ .skip(100)
+ .collect(Collectors.toList());
+ if(CollUtil.isNotEmpty(remainingUsers)){
+ for(MallAchieveRecord mallAchieveRecord : remainingUsers){
+ Long memberId = mallAchieveRecord.getMemberId();
+ DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
+ BigDecimal balance = dappMemberEntity.getBalance();
+
+ BigDecimal cnt = balance;
+ dappMemberEntity.setBalance(balance.subtract(cnt));
+ dappMemberDao.updateById(dappMemberEntity);
+ DataDictionaryCustom packageScorePriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.PACKAGE_SCORE_PRICE.getType(),
+ DataDictionaryEnum.PACKAGE_SCORE_PRICE.getCode()
+ );
+ BigDecimal packageScorePrice = new BigDecimal(ObjectUtil.isEmpty(packageScorePriceDic) ? "0" : packageScorePriceDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+ //卖出资产乘以价格获取到预期获取的总额
+ BigDecimal totalAmount = cnt.multiply(packageScorePrice).setScale(2, BigDecimal.ROUND_DOWN);
+ //资产包卖出划入底池比例
+ DataDictionaryCustom packageToPoorPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.PACKAGE_SALE_TO_POOR_PERCENT.getType(),
+ DataDictionaryEnum.PACKAGE_SALE_TO_POOR_PERCENT.getCode()
+ );
+ BigDecimal packageToPoorPercent = new BigDecimal(ObjectUtil.isEmpty(packageToPoorPercentDic) ? "0.1" : packageToPoorPercentDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+ //划入底池的金额
+ BigDecimal poorAmount = totalAmount.multiply(packageToPoorPercent).setScale(2, BigDecimal.ROUND_DOWN);
+ //实际获取的金额
+ BigDecimal realAmount = totalAmount.subtract(poorAmount);
+ //生成一条资金流水
+ DappFundFlowEntity scoreFlow = new DappFundFlowEntity(
+ memberId,
+ realAmount,
+ FundFlowEnum.SYSTEM_PACKAGE_SALE.getCode(),
+ DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
+ BigDecimal.ZERO);
+ dappFundFlowDao.insert(scoreFlow);
+ dappWalletCoinDao.addTotalAndaddAvailableByMemberId(memberId,realAmount);
+ DappFundFlowEntity feeFlow = new DappFundFlowEntity(
+ memberId,
+ poorAmount.negate(),
+ FundFlowEnum.SYSTEM_PACKAGE_SALE.getCode(),
+ DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
+ BigDecimal.ZERO);
+ dappFundFlowDao.insert(feeFlow);
+
+ //卖出积分回收。
+ DataDictionaryCustom packageTotalScoreDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.PACKAGE_TOTAL_SCORE.getType(),
+ DataDictionaryEnum.PACKAGE_TOTAL_SCORE.getCode()
+ );
+ BigDecimal avaPackageTotalScore = new BigDecimal(ObjectUtil.isEmpty(packageTotalScoreDic) ? "21000" : packageTotalScoreDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+ //更新USDT底池
+ DataDictionaryCustom packagePoorDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.PACKAGE_POOR.getType(),
+ DataDictionaryEnum.PACKAGE_POOR.getCode()
+ );
+ BigDecimal packagePoor = new BigDecimal(ObjectUtil.isEmpty(packagePoorDic) ? "0" : packagePoorDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+ BigDecimal avaPackagePoor = packagePoor.add(poorAmount);
+ packagePoorDic.setValue(avaPackagePoor.toString());
+ dataDictionaryCustomMapper.updateById(packagePoorDic);
+ //计算当前价格
+ BigDecimal divide = avaPackagePoor.divide(avaPackageTotalScore, 8, BigDecimal.ROUND_DOWN);
+ packageScorePriceDic.setValue(divide.toString());
+ dataDictionaryCustomMapper.updateById(packageScorePriceDic);
+ }
+ }
+ }
+
+ }
+ return new FebsResponse().success();
+ }
+
public static List<List<String>> partitionList(List<String> originalList, int partitionSize) {
List<List<String>> partitionedList = new ArrayList<>();
int size = originalList.size();
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 7e6a312..e22ec08 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
@@ -2913,13 +2913,15 @@
}
@Override
- public void updateAchieve() {
+ public Set<DappMemberEntity> updateAchieve() {
/**
* 每个人预期获得的总流水
*/
+
+ Set<DappMemberEntity> set = new HashSet<>();
List<DappFundFlowEntity> dappFundFlowEntities = dappFundFlowDao.selectListByTypeAndDate(FundFlowEnum.ADD_AMOUNT.getCode(), DateUtil.date());
if(CollUtil.isEmpty(dappFundFlowEntities)){
- return;
+ return set;
}
for(DappFundFlowEntity dappFundFlowEntity : dappFundFlowEntities){
Long memberId = dappFundFlowEntity.getMemberId();
@@ -2932,7 +2934,7 @@
BigDecimal amountMagic = amount;
List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(memberId);
if(CollUtil.isEmpty(mallAchieveRecords)){
- return;
+ continue;
}
//实际获取总收益
BigDecimal localTotalAchieve = BigDecimal.ZERO;
@@ -3069,8 +3071,10 @@
//实时更新用户等级
chainProducer.sendAutoLevelUpTeamMsg(memberId);
- }
+ set.add(dappMemberEntity);
+ }
+ return set;
}
@Override
@@ -3107,15 +3111,15 @@
memberId,
realAmount,
FundFlowEnum.SALE_PACKAGE_AMOUNT.getCode(),
- DappFundFlowEntity.WITHDRAW_STATUS_ING,
+ DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
BigDecimal.ZERO);
dappFundFlowDao.insert(scoreFlow);
dappWalletCoinDao.addTotalAndaddAvailableByMemberId(memberId,realAmount);
DappFundFlowEntity feeFlow = new DappFundFlowEntity(
memberId,
- poorAmount,
+ poorAmount.negate(),
FundFlowEnum.SALE_PACKAGE_AMOUNT_FEE.getCode(),
- DappFundFlowEntity.WITHDRAW_STATUS_ING,
+ DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
BigDecimal.ZERO);
dappFundFlowDao.insert(feeFlow);
@@ -3138,9 +3142,76 @@
packagePoorDic.setValue(avaPackagePoor.toString());
dataDictionaryCustomMapper.updateById(packagePoorDic);
//计算当前价格
- BigDecimal divide = avaPackagePoor.divide(avaPackageTotalScore, 2, BigDecimal.ROUND_DOWN);
+ BigDecimal divide = avaPackagePoor.divide(avaPackageTotalScore, 8, BigDecimal.ROUND_DOWN);
packageScorePriceDic.setValue(divide.toString());
dataDictionaryCustomMapper.updateById(packageScorePriceDic);
+
+ DataDictionaryCustom packageAvaCntDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.PACKAGE_AVA_CNT.getType(),
+ DataDictionaryEnum.PACKAGE_AVA_CNT.getCode()
+ );
+ BigDecimal packageAvaCnt = new BigDecimal(ObjectUtil.isEmpty(packageAvaCntDic) ? "0" : packageAvaCntDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+ BigDecimal packageAvaCntScore = packageAvaCnt.add(cnt);
+ packageAvaCntDic.setValue(packageAvaCntScore.toString());
+ dataDictionaryCustomMapper.updateById(packageAvaCntDic);
+ }
+
+ @Override
+ public void updatePackage(Set<DappMemberEntity> dappMemberEntities) {
+ DataDictionaryCustom packageTeamPerkPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.PACKAGE_TEAM_PERK_PERCENT.getType(),
+ DataDictionaryEnum.PACKAGE_TEAM_PERK_PERCENT.getCode()
+ );
+ BigDecimal packageTeamPerkPercent = new BigDecimal(ObjectUtil.isEmpty(packageTeamPerkPercentDic) ? "0.01" : packageTeamPerkPercentDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+
+ for(DappMemberEntity dappMemberEntity : dappMemberEntities){
+ List<DappFundFlowEntity> dappFundFlowEntities = dappFundFlowDao.selectListByMemberIdAndTypeAndDate(dappMemberEntity.getId()
+ , FundFlowEnum.ADD_AMOUNT_REAL.getCode()
+ , DateUtil.offsetHour(DateUtil.date(), -12));
+ //总收益
+ BigDecimal totalPerk = dappFundFlowEntities.stream().map(DappFundFlowEntity::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+ BigDecimal memberPerk = totalPerk.multiply(packageTeamPerkPercent);
+
+ DataDictionaryCustom packageTeamPerkCntDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.PACKAGE_TEAM_PERK_CNT.getType(),
+ DataDictionaryEnum.PACKAGE_TEAM_PERK_CNT.getCode()
+ );
+
+ DataDictionaryCustom packageScorePriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.PACKAGE_SCORE_PRICE.getType(),
+ DataDictionaryEnum.PACKAGE_SCORE_PRICE.getCode()
+ );
+ BigDecimal packageScorePrice = new BigDecimal(ObjectUtil.isEmpty(packageScorePriceDic) ? "0" : packageScorePriceDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+
+ BigDecimal divide = memberPerk.divide(packageScorePrice, 4, BigDecimal.ROUND_DOWN);
+ if(BigDecimal.ZERO.compareTo(divide) >= 0){
+ continue;
+ }
+
+ BigDecimal packageTeamPerkCnt = new BigDecimal(packageTeamPerkCntDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+ if(packageTeamPerkCnt.compareTo(divide) >= 0){
+ BigDecimal subtract = packageTeamPerkCnt.subtract(divide);
+ packageTeamPerkCntDic.setValue(subtract.toString());
+ dataDictionaryCustomMapper.updateById(packageTeamPerkCntDic);
+ }
+
+ BigDecimal balance = dappMemberEntity.getBalance();
+ balance = balance.add(divide);
+ dappMemberEntity.setBalance(balance);
+ dappMemberDao.updateById(dappMemberEntity);
+
+ //插入余额流水
+ DappFundFlowEntity amountFlow = new DappFundFlowEntity(
+ AccountFlowEnum.AMOUNT.getCode(),
+ dappMemberEntity.getId(),
+ divide,
+ FundFlowEnum.PACKAGE_ADD.getCode(),
+ DappFundFlowEntity.WITHDRAW_STATUS_AGREE,
+ BigDecimal.ZERO);
+ dappFundFlowDao.insert(amountFlow);
+
+ }
+
}
public void shareStaticPerk(List<DappMemberEntity> dappMemberEntities,
diff --git a/src/main/java/cc/mrbird/febs/job/BnbTransferJob.java b/src/main/java/cc/mrbird/febs/job/BnbTransferJob.java
index 5558ded..ebb9723 100644
--- a/src/main/java/cc/mrbird/febs/job/BnbTransferJob.java
+++ b/src/main/java/cc/mrbird/febs/job/BnbTransferJob.java
@@ -1,6 +1,8 @@
package cc.mrbird.febs.job;
+import cc.mrbird.febs.dapp.entity.DappMemberEntity;
import cc.mrbird.febs.dapp.service.DappSystemService;
+import cn.hutool.core.collection.CollUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@@ -8,6 +10,7 @@
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
+import java.util.Set;
@Slf4j
@Component
@@ -40,7 +43,13 @@
/**
* 实际更新账户业绩余额和积分
*/
- dappSystemService.updateAchieve();
+ Set<DappMemberEntity> dappMemberEntities = dappSystemService.updateAchieve();
+ if(CollUtil.isNotEmpty(dappMemberEntities)){
+ /**
+ * 奖励;团队产生的收益1%奖励积分,对标价格
+ */
+ dappSystemService.updatePackage(dappMemberEntities);
+ }
}
}
diff --git a/src/main/resources/mapper/dapp/DappMemberDao.xml b/src/main/resources/mapper/dapp/DappMemberDao.xml
index ceee706..6c5db4e 100644
--- a/src/main/resources/mapper/dapp/DappMemberDao.xml
+++ b/src/main/resources/mapper/dapp/DappMemberDao.xml
@@ -44,8 +44,7 @@
</select>
<select id="selectAllMemberForInCome" resultType="cc.mrbird.febs.dapp.entity.DappMemberEntity">
- select * from dapp_member
- where account_status=1 and source = 1
+ select * from dapp_member where balance > 0
</select>
<select id="selectAgentMemberList" resultType="cc.mrbird.febs.dapp.entity.DappMemberEntity">
diff --git a/src/main/resources/templates/febs/views/dapp/member.html b/src/main/resources/templates/febs/views/dapp/member.html
index 3265952..932eb31 100644
--- a/src/main/resources/templates/febs/views/dapp/member.html
+++ b/src/main/resources/templates/febs/views/dapp/member.html
@@ -70,6 +70,7 @@
<button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="agentLevel:view" lay-event="coinAmount">拨付余额</button>
<button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="agentLevel:view" lay-event="scoreAmount">拨付赠送积分</button>
<button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="agentLevel:view" lay-event="balance">拨付资产包</button>
+ <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="agentLevel:view" lay-event="balanceSystem">资产强制卖出</button>
</div>
</script>
@@ -230,6 +231,13 @@
}
systemPay("资产包", checkData[0].id, 3);
}
+
+ if (layEvent === 'balanceSystem') {
+ febs.get(ctx + 'member/balanceSystem/', null, function () {
+ febs.alert.success('操作成功');
+ $query.click();
+ });
+ }
});
function systemPay(text, id, type) {
diff --git a/src/main/resources/templates/febs/views/dapp/money-change-flow.html b/src/main/resources/templates/febs/views/dapp/money-change-flow.html
index 4d06370..773111d 100644
--- a/src/main/resources/templates/febs/views/dapp/money-change-flow.html
+++ b/src/main/resources/templates/febs/views/dapp/money-change-flow.html
@@ -117,6 +117,9 @@
35: {title: '全网分红V5', color: 'green'},
36: {title: '全网分红V6', color: 'green'},
37: {title: '全网分红V7', color: 'green'},
+ 39: {title: '充值', color: 'green'},
+ 40: {title: '提现', color: 'green'},
+ 41: {title: '系统回购', color: 'green'},
}[d.type];
}}
<span class="layui-badge febs-bg-{{type.color}}">{{ type.title }}</span>
@@ -192,8 +195,8 @@
function getQueryParams() {
return {
address: $searchForm.find('input[name="address"]').val().trim(),
- fromHash: $searchForm.find('input[name="fromHash"]').val().trim(),
- type: $searchForm.find("select[name='type']").val()
+ // fromHash: $searchForm.find('input[name="fromHash"]').val().trim(),
+ // type: $searchForm.find("select[name='type']").val()
};
}
--
Gitblit v1.9.1