From ae9faa12e8cc7984dfba8631a17e32b216a86508 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Mon, 26 Feb 2024 10:41:37 +0800 Subject: [PATCH] 抽奖 --- src/test/java/cc/mrbird/febs/ProfitTest.java | 128 +++++++++++++++++++++++++++++++++++++++--- 1 files changed, 118 insertions(+), 10 deletions(-) diff --git a/src/test/java/cc/mrbird/febs/ProfitTest.java b/src/test/java/cc/mrbird/febs/ProfitTest.java index 7290970..f40d7c3 100644 --- a/src/test/java/cc/mrbird/febs/ProfitTest.java +++ b/src/test/java/cc/mrbird/febs/ProfitTest.java @@ -1,28 +1,39 @@ 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; import cc.mrbird.febs.mall.quartz.OrderSettlementJob; import cc.mrbird.febs.mall.service.IAgentService; +import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; import cc.mrbird.febs.mall.service.IMallAchieveService; import cc.mrbird.febs.mall.service.IMemberProfitService; import cc.mrbird.febs.pay.model.*; import cc.mrbird.febs.pay.service.UnipayService; import cc.mrbird.febs.rabbit.consumer.AgentConsumer; +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 @@ -34,17 +45,114 @@ // @Autowired // private AgentConsumer agentConsumer; // -// @Autowired -// private IAgentService agentService; + @Autowired + private IAgentService agentService; + @Autowired + private MallMemberMapper mallMemberMapper; // // @Autowired // private IMemberProfitService memberProfitService; // -// @Test -// public void dynamicProfit() { -//// agentService.returnMoneyToAgent(578L); + + + @Autowired + private IApiMallMemberWalletService walletService; + @Autowired + private DataDictionaryCustomMapper dataDictionaryCustomMapper; + @Test + public void dynamicProfit() { + 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); + } + } + } + + + } +// 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");//减少权益积分 +// agentService.returnMoneyToAgent(3323L); // agentService.autoUpAgentLevel(640L); -// } + } // @Test // public void agentProfit() { // memberProfitService.agentProfit(null); -- Gitblit v1.9.1