| | |
| | | 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.*; |
| | |
| | | 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; |
| | |
| | | |
| | | @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; |