From 68a3672999b666ca83dedf190849ac3c610b01e3 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Fri, 23 Feb 2024 11:41:04 +0800 Subject: [PATCH] 抽奖 --- src/test/java/cc/mrbird/febs/ProfitTest.java | 85 ++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 81 insertions(+), 4 deletions(-) diff --git a/src/test/java/cc/mrbird/febs/ProfitTest.java b/src/test/java/cc/mrbird/febs/ProfitTest.java index e99bf36..f1ce186 100644 --- a/src/test/java/cc/mrbird/febs/ProfitTest.java +++ b/src/test/java/cc/mrbird/febs/ProfitTest.java @@ -1,12 +1,15 @@ package cc.mrbird.febs; import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.common.enumerates.MemberLevelNewEnum; +import cc.mrbird.febs.common.enumerates.ProductEnum; import cc.mrbird.febs.common.utils.MallUtils; +import cc.mrbird.febs.mall.dto.TeamPerkDto; +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.MallMemberMapper; -import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper; -import cc.mrbird.febs.mall.mapper.MallOrderItemMapper; +import cc.mrbird.febs.mall.entity.MallProductBuy; +import cc.mrbird.febs.mall.mapper.*; import cc.mrbird.febs.mall.quartz.OrderSettlementJob; import cc.mrbird.febs.mall.service.*; import cc.mrbird.febs.pay.model.*; @@ -16,8 +19,11 @@ import cc.mrbird.febs.rabbit.producter.AgentProducer; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -39,9 +45,80 @@ @Autowired private IAgentService agentService; + @Autowired + private MallMemberMapper memberMapper; + @Autowired + private DataDictionaryCustomMapper dataDictionaryCustomMapper; + @Autowired + private MallProductBuyMapper mallProductBuyMapper; @Test public void dynamicProfit(){ - agentService.BuyToSell(); + + QueryWrapper<MallProductBuy> query = new QueryWrapper<>(); + query.eq("state", ProductEnum.PRODUCT_BUY_SUCCESS.getValue()); + query.eq("mate_state",ProductEnum.PRODUCT_BUY_MATE_STATE_FAIL.getValue()); + List<MallProductBuy> mallProductBuys = mallProductBuyMapper.selectList(query); + if(CollUtil.isEmpty(mallProductBuys)){ + return; + } + + Set<Long> collect = mallProductBuys.stream().map(MallProductBuy::getMemberId).collect(Collectors.toSet()); + if(CollUtil.isEmpty(collect)){ + return; + } + for(Long memberId : collect){ + MallMember mallMember = memberMapper.selectById(memberId); + if(ObjectUtil.isEmpty(mallMember)){ + continue; + } + //上级 + String referrerId = mallMember.getReferrerId(); + MallMember mallMemberRef = memberMapper.selectInfoByInviteId(referrerId); + if(ObjectUtil.isEmpty(mallMemberRef)){ + continue; + } + List<MallMember> mallMembersAll = memberMapper.selectAllChildAgentListByInviteId(referrerId); + + List<MallMember> mallMembers = memberMapper.selectByRefererId(referrerId); + Set<Long> mallMembersSet = mallMembers.stream().map(MallMember::getId).collect(Collectors.toSet()); + mallMembersSet.retainAll(collect); + List<Long> intersection = new ArrayList<>(mallMembersSet);//上级直推有效人数 + if(CollUtil.isEmpty(intersection)){ + mallMemberRef.setLevel(MemberLevelNewEnum.ZERO_LEVEL.getType()); + memberMapper.updateById(mallMemberRef); + continue; + } + /** + * 从会员等级最低到最高,比较intersection与会员设置的直推人数directCntLevel比较 + * directCntLevel >= intersection.size(),则满足升级会员等级条件,跳出循环 + * teamCnt >= mallMembersAll.size(),则满足升级会员等级条件,跳出循环 + * 达到最高级别后,升级会员等级,跳出循环 + */ + String level = MemberLevelNewEnum.ZERO_LEVEL.getType(); + boolean flag = false; + while (!flag){ + DataDictionaryCustom levelDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + level, level + ); + TeamPerkDto teamPerkDto = JSONObject.parseObject(levelDic.getValue(), TeamPerkDto.class); + Integer directCntLevel = teamPerkDto.getDirectCnt(); + Integer teamCnt = teamPerkDto.getTeamCnt(); + if(directCntLevel >= intersection.size() && + teamCnt >= mallMembersAll.size()){ + mallMemberRef.setLevel(level); + memberMapper.updateById(mallMemberRef); + flag = true; + } + String nextLevel = MemberLevelNewEnum.ZERO_LEVEL.getNextLevel(level); + level = nextLevel; + if(level.equals(MemberLevelNewEnum.WU_LEVEL.getType()) && + nextLevel.equals(MemberLevelNewEnum.WU_LEVEL.getType()) ){ + mallMemberRef.setLevel(level); + memberMapper.updateById(mallMemberRef); + flag = true; + } + } + } } // @Autowired // private AgentConsumer agentConsumer; -- Gitblit v1.9.1