From bf3ed43e5e1b981121a97a98b52c7e871755d082 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Thu, 18 Jan 2024 15:49:32 +0800 Subject: [PATCH] fapiao --- src/test/java/cc/mrbird/febs/ProfitTest.java | 126 +++++++++++++++++++++++++++++++---------- 1 files changed, 94 insertions(+), 32 deletions(-) diff --git a/src/test/java/cc/mrbird/febs/ProfitTest.java b/src/test/java/cc/mrbird/febs/ProfitTest.java index 6b0c7ef..f40d7c3 100644 --- a/src/test/java/cc/mrbird/febs/ProfitTest.java +++ b/src/test/java/cc/mrbird/febs/ProfitTest.java @@ -1,9 +1,17 @@ package cc.mrbird.febs; import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.common.enumerates.FlowTypeEnum; +import cc.mrbird.febs.common.enumerates.MemberLevelEnum; +import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; +import cc.mrbird.febs.common.enumerates.PerkEnum; +import cc.mrbird.febs.common.utils.AppContants; import cc.mrbird.febs.common.utils.MallUtils; +import cc.mrbird.febs.mall.entity.AdminAgentInfo; +import cc.mrbird.febs.mall.entity.DataDictionaryCustom; import cc.mrbird.febs.mall.entity.MallMember; import cc.mrbird.febs.mall.entity.MallOrderItem; +import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper; import cc.mrbird.febs.mall.mapper.MallMemberMapper; import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper; import cc.mrbird.febs.mall.mapper.MallOrderItemMapper; @@ -18,16 +26,14 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import java.math.BigDecimal; import java.text.DecimalFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * @author wzy @@ -51,40 +57,96 @@ @Autowired private IApiMallMemberWalletService walletService; + @Autowired + private DataDictionaryCustomMapper dataDictionaryCustomMapper; @Test public void dynamicProfit() { - List<MallMember> mallMembers = mallMemberMapper.selectList(null); - if(CollUtil.isEmpty(mallMembers)){ - return; - } - for(MallMember mallMember : mallMembers){ - boolean flag = false; - String parentId = mallMember.getReferrerId(); - if (StrUtil.isBlank(parentId)) { - flag = true; - } - String ids = ""; - while (!flag) { - if (StrUtil.isBlank(ids)) { - ids += parentId; - } else { - ids += ("," + parentId); - } - MallMember parentMember = mallMemberMapper.selectInfoByInviteId(parentId); - if (parentMember == null) { - break; - } - parentId = parentMember.getReferrerId(); - if (StrUtil.isBlank(parentMember.getReferrerId())) { - flag = true; + BigDecimal amountTC = new BigDecimal("100"); + MallMember mallMember = mallMemberMapper.selectById(921L); + if(StrUtil.isNotEmpty(mallMember.getReferrerIds())){ + //团队补贴对象 + String referrerIds = mallMember.getReferrerIds(); + List<String> referrerIdList = StrUtil.splitTrim(referrerIds, ","); + if(CollUtil.isNotEmpty(referrerIdList)){ + String levelNormal = MemberLevelEnum.V1.getType(); + BigDecimal cashPercentNormal = BigDecimal.ZERO; + BigDecimal scorePercentNormal = BigDecimal.ZERO; + + DataDictionaryCustom poolScorePriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + PerkEnum.POOL_SCORE_PRICE.getType(), + PerkEnum.POOL_SCORE_PRICE.getCode()); + BigDecimal poolScorePrice = new BigDecimal(poolScorePriceDic.getValue() == null ? "1" : poolScorePriceDic.getValue()); + for(String teamPerkMemberInviteId : referrerIdList){ + MallMember teamPerkMember = mallMemberMapper.selectInfoByInviteId(teamPerkMemberInviteId); + String level = teamPerkMember.getLevel(); + //比较两个级别的大小,level大于levelNormal返回1 + int compareMin = MemberLevelEnum.V1.compareLevel(level, levelNormal); + int compareMax = MemberLevelEnum.V1.compareLevel(MemberLevelEnum.V6.getType(), level); + if(compareMin >= 1 && compareMax >= 1){ + Long teamPerkMemberId = teamPerkMember.getId(); + DataDictionaryCustom teamPerkMemberDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + "AGENT_PERK_SET", level); + + AdminAgentInfo adminAgentInfo = JSONObject.parseObject(teamPerkMemberDic.getValue(), AdminAgentInfo.class); + BigDecimal cashPercent = adminAgentInfo.getCashPercent().multiply(AppContants.PERCENTAGE); + BigDecimal scorePercent = adminAgentInfo.getScorePercent().multiply(AppContants.PERCENTAGE); + //极差 + cashPercent = cashPercent.subtract(cashPercentNormal); + scorePercent = scorePercent.subtract(scorePercentNormal); + + BigDecimal cashAmount = amountTC.multiply(cashPercent).setScale(2, BigDecimal.ROUND_DOWN); + + //如果是H金劵,除以当前价格,得到数量。 + BigDecimal scoreCnt = amountTC.multiply(scorePercent).setScale(2, BigDecimal.ROUND_DOWN); + scoreCnt = scoreCnt.divide(poolScorePrice, 2 ,BigDecimal.ROUND_DOWN); + MallMember mallMember1 = mallMemberMapper.selectById(teamPerkMemberId); + if(cashAmount.compareTo(BigDecimal.ZERO) > 0){ + System.out.println(mallMember1.getName()+"获得:" + cashAmount); + } + if(scoreCnt.compareTo(BigDecimal.ZERO) > 0){ + System.out.println(mallMember1.getName()+"获得:" + scoreCnt); + } + levelNormal = level; + cashPercentNormal = adminAgentInfo.getCashPercent().multiply(AppContants.PERCENTAGE); + scorePercentNormal = adminAgentInfo.getScorePercent().multiply(AppContants.PERCENTAGE); + } } } - if (StrUtil.isNotBlank(ids)) { - mallMember.setReferrerIds(ids); - } - mallMemberMapper.updateById(mallMember); + } +// List<MallMember> mallMembers = mallMemberMapper.selectList(null); +// if(CollUtil.isEmpty(mallMembers)){ +// return; +// } +// for(MallMember mallMember : mallMembers){ +// boolean flag = false; +// String parentId = mallMember.getReferrerId(); +// if (StrUtil.isBlank(parentId)) { +// flag = true; +// } +// String ids = ""; +// while (!flag) { +// if (StrUtil.isBlank(ids)) { +// ids += parentId; +// } else { +// ids += ("," + parentId); +// } +// MallMember parentMember = mallMemberMapper.selectInfoByInviteId(parentId); +// if (parentMember == null) { +// break; +// } +// parentId = parentMember.getReferrerId(); +// if (StrUtil.isBlank(parentMember.getReferrerId())) { +// flag = true; +// } +// } +// +// if (StrUtil.isNotBlank(ids)) { +// mallMember.setReferrerIds(ids); +// } +// mallMemberMapper.updateById(mallMember); +// } // walletService.add(new BigDecimal(2000), 1L, "equityLimit");//减少权益积分 -- Gitblit v1.9.1