KKSU
2024-01-18 bf3ed43e5e1b981121a97a98b52c7e871755d082
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");//减少权益积分