| | |
| | | package cc.mrbird.febs.mall.quartz; |
| | | |
| | | import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; |
| | | import cc.mrbird.febs.common.enumerates.MemberAccountLevelEnum; |
| | | import cc.mrbird.febs.common.enumerates.MemberAgentLevelEnum; |
| | | import cc.mrbird.febs.common.enumerates.OrderStatusEnum; |
| | | import cc.mrbird.febs.mall.entity.DataDictionaryCustom; |
| | | import cc.mrbird.febs.mall.entity.MallMember; |
| | | import cc.mrbird.febs.mall.entity.MallOrderInfo; |
| | | import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper; |
| | | import cc.mrbird.febs.mall.mapper.MallMemberMapper; |
| | | import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.date.DateUnit; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.json.JSONObject; |
| | | import cn.hutool.json.JSONUtil; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | |
| | | @Autowired |
| | | private MallOrderInfoMapper orderInfoMapper; |
| | | |
| | | @Autowired |
| | | private MallMemberMapper mallMemberMapper; |
| | | |
| | | @Autowired |
| | | private DataDictionaryCustomMapper dataDictionaryCustomMapper; |
| | | |
| | | @Scheduled(cron = "0 0/5 * * * ? ") |
| | | public void overtimeJob() { |
| | | log.info("订单超时任务执行"); |
| | |
| | | } |
| | | |
| | | } |
| | | |
| | | @Scheduled(cron = "0 0 1 * * ? ") |
| | | public void updateMemberAgentLevel() { |
| | | log.info("会员代理等级升级任务执行"); |
| | | /** |
| | | * 获取会员信息 |
| | | * 1、已经升级成为一星 |
| | | */ |
| | | /** |
| | | * 区代 |
| | | * 1、自身一星 |
| | | * 2、直推三个星级 |
| | | * 3、团队五个星级 |
| | | */ |
| | | updateMemberAgentLevelByName(DataDictionaryEnum.AGENT_ONE.getType(),DataDictionaryEnum.AGENT_ONE.getCode()); |
| | | /** |
| | | * 县代 |
| | | * 1、自身2星 |
| | | * 2、直推5个星级 |
| | | * 3、团队50个星级 |
| | | */ |
| | | updateMemberAgentLevelByName(DataDictionaryEnum.AGENT_TWO.getType(),DataDictionaryEnum.AGENT_TWO.getCode()); |
| | | updateMemberAgentLevelByName(DataDictionaryEnum.AGENT_THREE.getType(),DataDictionaryEnum.AGENT_THREE.getCode()); |
| | | updateMemberAgentLevelByName(DataDictionaryEnum.AGENT_FOUR.getType(),DataDictionaryEnum.AGENT_FOUR.getCode()); |
| | | updateMemberAgentLevelByName(DataDictionaryEnum.AGENT_FIVE.getType(),DataDictionaryEnum.AGENT_FIVE.getCode()); |
| | | } |
| | | |
| | | private void updateMemberAgentLevelByName(String name,String code){ |
| | | DataDictionaryCustom agentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | name, |
| | | code |
| | | ); |
| | | JSONObject jsonObject = JSONUtil.parseObj(agentDic.getValue()); |
| | | //自身星级 |
| | | String levelSelf = jsonObject.get("levelSelf").toString(); |
| | | //直推星级数量 |
| | | String directLevelCnt = jsonObject.get("directLevelCnt").toString(); |
| | | //团队星级数量 |
| | | String teamLevelCnt = jsonObject.get("teamLevelCnt").toString(); |
| | | //两个市场均有上一个代理等级 |
| | | String minTeamLevelCnt = jsonObject.get("minTeamLevelCnt").toString(); |
| | | List<MallMember> agentLevelList = mallMemberMapper.selectByAccountLevel(levelSelf); |
| | | if(CollUtil.isNotEmpty(agentLevelList)){ |
| | | for(MallMember mallMember : agentLevelList){ |
| | | //有星级的直推 |
| | | Integer directCnt = mallMemberMapper.selectByRefererIdAndAccountLevel(mallMember.getInviteId(),MemberAccountLevelEnum.NORMAL.getName()); |
| | | //团队中星级会员数量 |
| | | Integer teamCnt = mallMemberMapper.selectByReferersIdAndAccountLevel(mallMember.getInviteId(),MemberAccountLevelEnum.NORMAL.getName()); |
| | | //两个市场均有上一个代理等级 |
| | | Integer minCnt = 0; |
| | | if(0 < Integer.parseInt(minTeamLevelCnt)){ |
| | | String minLevel = MemberAgentLevelEnum.AGENT_ONE.minLevel(code); |
| | | //获取所有直推用户 |
| | | List<MallMember> mallMembers = mallMemberMapper.selectByRefererId(mallMember.getInviteId()); |
| | | if(CollUtil.isNotEmpty(mallMembers) && mallMembers.size() > 2){ |
| | | Integer levelCnt = 0; |
| | | for(MallMember directMember : mallMembers){ |
| | | Integer minlevelCnt = mallMemberMapper.selectByReferersIdAndLevel(directMember.getInviteId(),minLevel); |
| | | if(0 < minlevelCnt){ |
| | | levelCnt = levelCnt + 1; |
| | | } |
| | | if(levelCnt >= Integer.parseInt(minTeamLevelCnt)){ |
| | | minCnt = 1; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | }else{ |
| | | //区代不需要判断这个市场条件 |
| | | minCnt = 1; |
| | | } |
| | | if(Integer.parseInt(directLevelCnt) <= directCnt |
| | | && Integer.parseInt(teamLevelCnt) <= teamCnt |
| | | && minCnt > 0){ |
| | | //更新会员代理等级 |
| | | mallMemberMapper.updateLevelById(MemberAgentLevelEnum.AGENT_ONE.getNameByCode(code),mallMember.getId()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |