| | |
| | | |
| | | import cc.mrbird.febs.common.contants.AppContants; |
| | | import cc.mrbird.febs.common.exception.FebsException; |
| | | import cc.mrbird.febs.common.tree.MatrixTree; |
| | | import cc.mrbird.febs.common.tree.MemberNode; |
| | | import cc.mrbird.febs.common.utils.LoginUserUtil; |
| | | import cc.mrbird.febs.common.utils.RedisUtils; |
| | |
| | | return; |
| | | } |
| | | |
| | | List<DataDictionaryCustom> dicList = dataDictionaryCustomMapper.selectDicByType(AppContants.AGENT_LEVEL); |
| | | DataDictionaryCustom dic = null; |
| | | for (DataDictionaryCustom dataDictionaryCustom : dicList) { |
| | | if (Integer.parseInt(dataDictionaryCustom.getValue()) == parentNode.CHILD.size()) { |
| | | dic = dataDictionaryCustom; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | if (dic == null) { |
| | | MatrixTree matrixTree = MatrixTree.getInstance(); |
| | | List<MemberNode> allNodes = matrixTree.getAllAncestors(parentNode); // 获取某一个MemberNode的所有上级节点 |
| | | allNodes.add(parentNode); |
| | | if(CollUtil.isEmpty(allNodes)){ |
| | | return; |
| | | } |
| | | /** |
| | | * 更新所有上级的小区业绩 |
| | | */ |
| | | for(MemberNode memberNode : allNodes){ |
| | | BigDecimal smallAchieve = BigDecimal.ZERO; |
| | | List<MemberNode> allNodesChildList = memberNode.getCHILD(); |
| | | if(CollUtil.isNotEmpty(allNodesChildList)){ |
| | | List<Long> left = allNodesChildList.stream().filter(allNodesChild -> allNodesChild.getType() == 1).map(MemberNode::getMemberId).collect(Collectors.toList()); |
| | | List<Long> right = allNodesChildList.stream().filter(allNodesChild -> allNodesChild.getType() == 2).map(MemberNode::getMemberId).collect(Collectors.toList()); |
| | | |
| | | MallMember parentMember = memberMapper.selectById(parentNode.getMemberId()); |
| | | parentMember.setChildNodeCnt(parentNode.CHILD.size()); |
| | | int levelCode = MemberLevelEnum.getLevelCode(parentMember.getLevel()); |
| | | if (Integer.parseInt(dic.getValue()) >= levelCode) { |
| | | parentMember.setLevel(dic.getCode()); |
| | | BigDecimal leftAmount = mallAchieveRecordMapper.selectSumAchieveByMemberIdList(left); |
| | | |
| | | BigDecimal rightAmount = mallAchieveRecordMapper.selectSumAchieveByMemberIdList(right); |
| | | if(leftAmount.compareTo(rightAmount) > 0){ |
| | | smallAchieve = rightAmount; |
| | | }else{ |
| | | smallAchieve = leftAmount; |
| | | } |
| | | //更新用户的区域业绩 |
| | | DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberNode.getMemberId()); |
| | | dappMemberEntity.setUsdtBalance(smallAchieve); |
| | | dappMemberEntity.setLeftAchieve(leftAmount); |
| | | dappMemberEntity.setRightAchieve(rightAmount); |
| | | dappMemberDao.updateById(dappMemberEntity); |
| | | log.info("用户:{},leftAchieve :{}, rightAchieve:{}, smallAchieve:{}", |
| | | dappMemberEntity.getAddress(), leftAmount, rightAmount, smallAchieve); |
| | | |
| | | /** |
| | | * 判断是否符合升级条件 |
| | | */ |
| | | String nextLevel = MemberLevelEnum.MEMBER.getNextLevel(dappMemberEntity.getAccountType()); |
| | | DataDictionaryCustom memberLevelDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.V1.getType() |
| | | , nextLevel); |
| | | if(ObjectUtil.isNotEmpty(memberLevelDic)){ |
| | | String value = memberLevelDic.getValue(); |
| | | cn.hutool.json.JSONObject parseObj = JSONUtil.parseObj(value); |
| | | BigDecimal smallAchieveDic = new BigDecimal(parseObj.get("smallAchieve").toString()); |
| | | if(smallAchieve.compareTo(smallAchieveDic) >= 0){ |
| | | //升级 |
| | | dappMemberEntity.setAccountType(nextLevel); |
| | | dappMemberDao.updateById(dappMemberEntity); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | memberMapper.updateById(parentMember); |
| | | } |
| | | |
| | | @Override |
| | | public void memberPerk() { |
| | | List<DappMemberEntity> dappMemberEntityList = dappMemberDao.selectMemberByActiveStatus(); |
| | | if(CollUtil.isEmpty(dappMemberEntityList)){ |
| | | return; |
| | | } |
| | | DataDictionaryCustom staticReleaseDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.STATIC_RELEASE.getType(), |
| | | DataDictionaryEnum.STATIC_RELEASE.getCode() |
| | | ); |
| | | if(ObjectUtil.isEmpty(staticReleaseDic)){ |
| | | return; |
| | | } |
| | | BigDecimal staticRelease = new BigDecimal(staticReleaseDic.getValue() == null ? "0" : staticReleaseDic.getValue()); |
| | | if(BigDecimal.ZERO.compareTo(staticRelease) >= 0){ |
| | | return; |
| | | } |
| | | for(DappMemberEntity dappMemberEntity : dappMemberEntityList){ |
| | | if(1 != dappMemberEntity.getActiveStatus()){ |
| | | break; |
| | | } |
| | | List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(dappMemberEntity.getId()); |
| | | /** |
| | | * 按照订单、比例生成对应的静态释放 |
| | | */ |
| | | for(MallAchieveRecord mallAchieveRecord : mallAchieveRecords){ |
| | | BigDecimal costAmount = mallAchieveRecord.getCostAmount(); |
| | | BigDecimal amount = mallAchieveRecord.getAmount(); |
| | | BigDecimal eachDayPerk = costAmount.multiply(staticRelease).setScale(2,BigDecimal.ROUND_DOWN); |
| | | /** |
| | | * 生成一条静态补贴的流水 |
| | | * 增加账户余额 |
| | | * 生成减少赠送积分流水 |
| | | * 减少账户的赠送积分 |
| | | * 业绩记录减少实际业绩amount |
| | | * |
| | | */ |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | /** |