From 5363215e8adc5a8106c598bbea281196c31e70ae Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Tue, 02 Apr 2024 14:56:57 +0800 Subject: [PATCH] 账号验证 --- src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java | 463 ++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 402 insertions(+), 61 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java index 054a5e2..bfeb31a 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java @@ -824,14 +824,36 @@ List<MallMember> thirdLevelRecord = getStarRecord(fourLevelRecord, MemberLevelEnum.THIRD_LEVEL.name(), amount, orderNo, 0L,MoneyFlowTypeEnum.STAR_PERK_THREE.getValue()); List<MallMember> secondLevelRecord = getStarRecord(thirdLevelRecord, MemberLevelEnum.SECOND_LEVEL.name(), amount, orderNo, 0L,MoneyFlowTypeEnum.STAR_PERK_TWO.getValue()); } - public static void main(String[] args) { - Long number = 0L; // 这里可以替换成你需要检查的数字 - if (number % 3 == 0) { - System.out.println(number + " 可以被3整除"); - } else { - System.out.println(number + " 不能被3整除"); - } +// public static void main(String[] args) { +//// Long number = 0L; // 这里可以替换成你需要检查的数字 +//// if (number % 3 == 0) { +//// System.out.println(number + " 可以被3整除"); +//// } else { +//// System.out.println(number + " 不能被3整除"); +//// } +//// +//// DateTime nowTimeFormat = DateUtil.parseTime(DateUtil.formatTime(DateUtil.date())); +//// System.out.println(nowTimeFormat); +// BigDecimal bigDecimal = new BigDecimal("1"); +// BigDecimal cycle = new BigDecimal("2"); +// BigDecimal remainder = bigDecimal.divide(new BigDecimal(String.valueOf(cycle)),0,BigDecimal.ROUND_DOWN);//取余 +// System.out.println(remainder); +// BigDecimal remainderDirect = bigDecimal.divide(new BigDecimal(String.valueOf(cycle)),0,BigDecimal.ROUND_DOWN);//取余 +// if(remainderDirect.compareTo(BigDecimal.ONE) == 0){ +// System.out.println(remainderDirect); +// } +// } + + + + public static void main(String[] args) { + DateTime dateTime = DateUtil.parseDate("2024-3-27"); + System.out.println(dateTime); + System.out.println(DateUtil.compare(DateUtil.date(),dateTime)); + if(DateUtil.compare(DateUtil.date(),dateTime)<= 0){ + System.out.println(dateTime); } + } @Override public void BuyToSell() { /** @@ -880,8 +902,37 @@ /** * 用户的账户增加对应的收益 */ + + BigDecimal totalPerk = mallProductBuy.getTotalPerk(); + if(BigDecimal.ZERO.compareTo(totalPerk) >= 0){ + mallProductBuy.setTotalPerk(BigDecimal.ZERO); + mallProductBuyMapper.updateById(mallProductBuy); + continue; + } BigDecimal nftTotal = mallProductBuy.getNftTotal(); - BigDecimal profit = nftTotal.multiply(profitPercent.multiply(new BigDecimal(0.01))); + BigDecimal profit = nftTotal.multiply(profitPercent.multiply(new BigDecimal(0.01))).setScale(2,BigDecimal.ROUND_DOWN); + + if(totalPerk.compareTo(profit) <= 0){ + profit = totalPerk; + mallProductBuy.setTotalPerk(BigDecimal.ZERO); + mallProductBuyMapper.updateById(mallProductBuy); + }else{ + mallProductBuy.setTotalPerk(totalPerk.subtract(profit).setScale(2,BigDecimal.ROUND_DOWN)); + mallProductBuyMapper.updateById(mallProductBuy); + } + + MallMemberAmount mallMemberAmountPerk = mallMemberAmountMapper.selectByMemberId(mallProductBuy.getMemberId()); + if(BigDecimal.ZERO.compareTo(mallMemberAmountPerk.getTotalPerk()) >= 0){ + continue; + } + if(mallMemberAmountPerk.getTotalPerk().compareTo(profit) <= 0){ + profit = mallMemberAmountPerk.getTotalPerk(); + mallMemberAmountPerk.setTotalPerk(BigDecimal.ZERO); + mallMemberAmountMapper.updateTotalPerkById(mallMemberAmountPerk); + }else{ + mallMemberAmountPerk.setTotalPerk(mallMemberAmountPerk.getTotalPerk().subtract(profit).setScale(2,BigDecimal.ROUND_DOWN)); + mallMemberAmountMapper.updateTotalPerkById(mallMemberAmountPerk); + } // insertSell(mallProductBuy.getMemberId(),profit,profit,BigDecimal.ZERO,BigDecimal.ZERO); String orderNoSY = MallUtils.getOrderNum("SYNFT"); mallMoneyFlowService.addMoneyFlow( @@ -899,39 +950,269 @@ mallMemberAmountMapper.updateTrendsNftById(mallMemberAmountMine); + BigDecimal remainderDirect = bigDecimal.divide(new BigDecimal(String.valueOf(cycle)),0,BigDecimal.ROUND_DOWN);//取余 + if(remainderDirect.compareTo(BigDecimal.ONE) == 0){ + /** + * 更新用户上级收益,冻结7天,7天时间到期自动释放到动态钱包 + */ + Long memberId = mallProductBuy.getMemberId(); + MallMember mallMember = memberMapper.selectById(memberId); + if(ObjectUtil.isNotEmpty(mallMember)){ + if(DateUtil.compare(payTime,DateUtil.parseDate("2024-3-26"))<= 0){ + //直推 + String referrerId = mallMember.getReferrerId(); + MallMember directMember = memberMapper.selectInfoByInviteId(referrerId); + if(ObjectUtil.isNotEmpty(directMember)){ + BigDecimal basicPerkDirectPercent = new BigDecimal(dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.BASIC_PERK_DIRECT.getType(), + DataDictionaryEnum.BASIC_PERK_DIRECT.getCode() + ).getValue()).multiply(new BigDecimal("0.01")); +// BigDecimal basicPerkDirect = profit.multiply(basicPerkDirectPercent).setScale(2, BigDecimal.ROUND_DOWN); + BigDecimal basicPerkDirect = nftTotal.multiply(basicPerkDirectPercent).setScale(2, BigDecimal.ROUND_DOWN); + /** + * 先插入流水记录,然后定时器每小时,循环一次找寻对应的数据执行 + */ + String orderNo = MallUtils.getOrderNum("DNFT"); + mallMoneyFlowService.addMoneyFlow( + directMember.getId(), + basicPerkDirect, + MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT.getValue(), + orderNo, + null, + FlowTypeNewEnum.NFT.getValue(), + MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT.getDescrition(), + AppContants.MEMBER_FLOW_ING); + + MallMemberAmount mallMemberAmountDirect = mallMemberAmountMapper.selectByMemberId(directMember.getId()); + mallMemberAmountDirect.setFrozenNft(mallMemberAmountDirect.getFrozenNft().add(basicPerkDirect)); + mallMemberAmountMapper.updateFrozenNftById(mallMemberAmountDirect); + } + + } + + /** + * 团队奖励 + * + */ + String level = MemberLevelNewEnum.ZERO_LEVEL.getType(); + BigDecimal equalsPerkBasic = BigDecimal.ZERO;//平级收益,假设平级,则算平级收益的百分比收益 + boolean flag = false; + String parentId = mallMember.getReferrerId(); + if (StrUtil.isBlank(parentId)) { + flag = true; + } + while (!flag) { + MallMember mallMemberRef = memberMapper.selectInfoByInviteId(parentId); + String levelRef = mallMemberRef.getLevel(); + //会员等级为ZERO_LEVEL,则不参与团队返佣 + if(!MemberLevelNewEnum.ZERO_LEVEL.getType().equals(levelRef)){ + int compareLevel = MemberLevelNewEnum.ZERO_LEVEL.compareLevel(level, levelRef); + DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + levelRef, levelRef + ); + TeamPerkDto teamPerkDto = JSONObject.parseObject(dataDictionaryCustom.getValue(), TeamPerkDto.class); + if(compareLevel == 0){//团队奖励 + BigDecimal PerkPercent = new BigDecimal(teamPerkDto.getPerkPercent()) + .multiply(new BigDecimal("0.01")); + BigDecimal teamPerk = PerkPercent.multiply(profit).setScale(2,BigDecimal.ROUND_DOWN); + /** + * 先插入流水记录,然后定时器循环,找寻对应的数据执行 + */ + String orderNo = MallUtils.getOrderNum("TNFT"); + + if(teamPerk.compareTo(BigDecimal.ZERO) > 0){ + insertFlowUpdateFrozenNft( + orderNo, + mallMemberRef.getId(), + teamPerk, + MoneyFlowTypeNewEnum.TEAM_PERK_DIRECT.getValue(), + FlowTypeNewEnum.NFT.getValue(), + MoneyFlowTypeNewEnum.TEAM_PERK_DIRECT.getDescrition(), + AppContants.MEMBER_FLOW_ING); + } + equalsPerkBasic = teamPerk; + level = levelRef; + }else if(compareLevel == 2){//平级奖励 + BigDecimal equalsPerkPercent = new BigDecimal(teamPerkDto.getEqualsPerkPercent()) + .multiply(new BigDecimal("0.01")); + BigDecimal equalsPerk = equalsPerkPercent.multiply(equalsPerkBasic).setScale(2,BigDecimal.ROUND_DOWN); + String orderNo = MallUtils.getOrderNum("PJNFT"); + if(equalsPerk.compareTo(BigDecimal.ZERO) > 0){ + insertFlowUpdateFrozenNft( + orderNo, + mallMemberRef.getId(), + equalsPerk, + MoneyFlowTypeNewEnum.TEAM_PERK_EQUALS.getValue(), + FlowTypeNewEnum.NFT.getValue(), + MoneyFlowTypeNewEnum.TEAM_PERK_EQUALS.getDescrition(), + AppContants.MEMBER_FLOW_ING); + } + equalsPerkBasic = equalsPerk; + } + } + parentId = mallMemberRef.getReferrerId(); + if (StrUtil.isBlank(mallMemberRef.getReferrerId())) { + flag = true; + } + } + } + } + } + } + } + } + + @Override + public void BuyToSellV2() { + List<MallProductBuy> mallProductBuys = mallProductBuyMapper.selectListByStateAndMateState( + ProductEnum.PRODUCT_BUY_SUCCESS.getValue(), + ProductEnum.PRODUCT_BUY_MATE_STATE_FAIL.getValue()); + if(CollUtil.isEmpty(mallProductBuys)){ + return; + } + for(MallProductBuy mallProductBuy : mallProductBuys){ + MallProductNft mallProductNft = mallProductNftMapper.selectById(mallProductBuy.getProductNftId()); + //周期 + int cycle = mallProductNft.getCycle(); + //收益率 + BigDecimal profitPercent = mallProductNft.getProfit(); + Date payTime = mallProductBuy.getPayTime(); + + +// //偏移时间-- +// DateTime dateTime = DateUtil.offsetDay(payTime, cycle); +// int compare = DateUtil.compare(now, dateTime); +// if(compare >= 0){ +// mallProductBuy.setMateState(ProductEnum.PRODUCT_BUY_MATE_STATE_SUCCESS.getValue()); +// mallProductBuyMapper.updateById(mallProductBuy); + //偏移时间 + String s = String.valueOf(DateUtil.between(payTime, DateUtil.date(), DateUnit.DAY));//相差日期天数 + BigDecimal bigDecimal = new BigDecimal(s).setScale(0, BigDecimal.ROUND_DOWN);//只取整数位 + if(bigDecimal.compareTo(BigDecimal.ZERO) <= 0){ + continue; + } + BigDecimal remainder = bigDecimal.remainder(new BigDecimal(String.valueOf(cycle)));//取余 + if (remainder.compareTo(BigDecimal.ZERO) == 0) { + /** + * 用户的账户增加对应的收益 + */ + + BigDecimal totalPerk = mallProductBuy.getTotalPerk(); + if(BigDecimal.ZERO.compareTo(totalPerk) >= 0){ + mallProductBuy.setTotalPerk(BigDecimal.ZERO); + mallProductBuyMapper.updateById(mallProductBuy); + continue; + } + BigDecimal nftTotal = mallProductBuy.getNftTotal(); + BigDecimal profit = nftTotal.multiply(profitPercent.multiply(new BigDecimal(0.01))).setScale(2,BigDecimal.ROUND_DOWN); + + if(totalPerk.compareTo(profit) <= 0){ + profit = totalPerk; + mallProductBuy.setTotalPerk(BigDecimal.ZERO); + mallProductBuyMapper.updateById(mallProductBuy); + }else{ + mallProductBuy.setTotalPerk(totalPerk.subtract(profit).setScale(2,BigDecimal.ROUND_DOWN)); + mallProductBuyMapper.updateById(mallProductBuy); + } + + MallMemberAmount mallMemberAmountPerk = mallMemberAmountMapper.selectByMemberId(mallProductBuy.getMemberId()); + if(BigDecimal.ZERO.compareTo(mallMemberAmountPerk.getTotalPerk()) >= 0){ + continue; + } + if(mallMemberAmountPerk.getTotalPerk().compareTo(profit) <= 0){ + profit = mallMemberAmountPerk.getTotalPerk(); + mallMemberAmountPerk.setTotalPerk(BigDecimal.ZERO); + mallMemberAmountMapper.updateTotalPerkById(mallMemberAmountPerk); + }else{ + mallMemberAmountPerk.setTotalPerk(mallMemberAmountPerk.getTotalPerk().subtract(profit).setScale(2,BigDecimal.ROUND_DOWN)); + mallMemberAmountMapper.updateTotalPerkById(mallMemberAmountPerk); + } +// insertSell(mallProductBuy.getMemberId(),profit,profit,BigDecimal.ZERO,BigDecimal.ZERO); + + MallMember mallMemberMe = memberMapper.selectById(mallProductBuy.getMemberId()); + if(ProductEnum.MEMBER_FROZEN.getValue() == mallMemberMe.getIsFrozen()){ + //插入一条流水记录 + String orderNo = MallUtils.getOrderNum("FNFTW"); + mallMoneyFlowService.addMoneyFlow( + mallProductBuy.getMemberId(), + profit.negate(), + MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT_WRONG.getValue(), + orderNo, + null, + FlowTypeNewEnum.NFT.getValue(), + MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT_WRONG.getDescrition(), + AppContants.MEMBER_FLOW_ING); + + }else{ + String orderNoSY = MallUtils.getOrderNum("SYNFT"); + mallMoneyFlowService.addMoneyFlow( + mallProductBuy.getMemberId(), + profit, + MoneyFlowTypeNewEnum.PERK_CYCLE.getValue(), + orderNoSY, + null, + FlowTypeNewEnum.NFT.getValue(), + MoneyFlowTypeNewEnum.PERK_CYCLE.getDescrition(), + AppContants.MEMBER_FLOW_DONE); + + MallMemberAmount mallMemberAmountMine = mallMemberAmountMapper.selectByMemberId(mallProductBuy.getMemberId()); + mallMemberAmountMine.setTrendsNft(mallMemberAmountMine.getTrendsNft().add(profit)); + mallMemberAmountMapper.updateTrendsNftById(mallMemberAmountMine); + } + + BigDecimal remainderDirect = bigDecimal.divide(new BigDecimal(String.valueOf(cycle)),0,BigDecimal.ROUND_DOWN);//取余 + if(remainderDirect.compareTo(BigDecimal.ONE) == 0){ /** * 更新用户上级收益,冻结7天,7天时间到期自动释放到动态钱包 */ Long memberId = mallProductBuy.getMemberId(); MallMember mallMember = memberMapper.selectById(memberId); if(ObjectUtil.isNotEmpty(mallMember)){ - //直推 - String referrerId = mallMember.getReferrerId(); - MallMember directMember = memberMapper.selectInfoByInviteId(referrerId); - if(ObjectUtil.isNotEmpty(directMember)){ - BigDecimal basicPerkDirectPercent = new BigDecimal(dataDictionaryCustomMapper.selectDicDataByTypeAndCode( - DataDictionaryEnum.BASIC_PERK_DIRECT.getType(), - DataDictionaryEnum.BASIC_PERK_DIRECT.getCode() - ).getValue()).multiply(new BigDecimal("0.01")); + if(DateUtil.compare(payTime,DateUtil.parseDate("2024-3-26"))<= 0){ + //直推 + String referrerId = mallMember.getReferrerId(); + MallMember directMember = memberMapper.selectInfoByInviteId(referrerId); + if(ObjectUtil.isNotEmpty(directMember)){ + BigDecimal basicPerkDirectPercent = new BigDecimal(dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.BASIC_PERK_DIRECT.getType(), + DataDictionaryEnum.BASIC_PERK_DIRECT.getCode() + ).getValue()).multiply(new BigDecimal("0.01")); // BigDecimal basicPerkDirect = profit.multiply(basicPerkDirectPercent).setScale(2, BigDecimal.ROUND_DOWN); - BigDecimal basicPerkDirect = nftTotal.multiply(basicPerkDirectPercent).setScale(2, BigDecimal.ROUND_DOWN); - /** - * 先插入流水记录,然后定时器每小时,循环一次找寻对应的数据执行 - */ - String orderNo = MallUtils.getOrderNum("DNFT"); - mallMoneyFlowService.addMoneyFlow( - directMember.getId(), - basicPerkDirect, - MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT.getValue(), - orderNo, - null, - FlowTypeNewEnum.NFT.getValue(), - MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT.getDescrition(), - AppContants.MEMBER_FLOW_ING); + BigDecimal basicPerkDirect = nftTotal.multiply(basicPerkDirectPercent).setScale(2, BigDecimal.ROUND_DOWN); - MallMemberAmount mallMemberAmountDirect = mallMemberAmountMapper.selectByMemberId(directMember.getId()); - mallMemberAmountDirect.setFrozenNft(mallMemberAmountDirect.getFrozenNft().add(basicPerkDirect)); - mallMemberAmountMapper.updateFrozenNftById(mallMemberAmountDirect); + if(ProductEnum.MEMBER_FROZEN.getValue() == directMember.getIsFrozen()){ + //插入一条流水记录 + String orderNo = MallUtils.getOrderNum("FNFTW"); + mallMoneyFlowService.addMoneyFlow( + directMember.getId(), + profit.negate(), + MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT_WRONG.getValue(), + orderNo, + null, + FlowTypeNewEnum.NFT.getValue(), + MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT_WRONG.getDescrition(), + AppContants.MEMBER_FLOW_ING); + + }else{ + /** + * 先插入流水记录,然后定时器每小时,循环一次找寻对应的数据执行 + */ + String orderNo = MallUtils.getOrderNum("DNFT"); + mallMoneyFlowService.addMoneyFlow( + directMember.getId(), + basicPerkDirect, + MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT.getValue(), + orderNo, + null, + FlowTypeNewEnum.NFT.getValue(), + MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT.getDescrition(), + AppContants.MEMBER_FLOW_ING); + + MallMemberAmount mallMemberAmountDirect = mallMemberAmountMapper.selectByMemberId(directMember.getId()); + mallMemberAmountDirect.setFrozenNft(mallMemberAmountDirect.getFrozenNft().add(basicPerkDirect)); + mallMemberAmountMapper.updateFrozenNftById(mallMemberAmountDirect); + } + } } /** @@ -1023,6 +1304,12 @@ MallMemberAmount mallMemberAmountDirect = mallMemberAmountMapper.selectByMemberId(memberId); mallMemberAmountDirect.setFrozenNft(mallMemberAmountDirect.getFrozenNft().add(perk)); mallMemberAmountMapper.updateFrozenNftById(mallMemberAmountDirect); + + + + MallMemberAmount mallMemberAmountTotalPerk = mallMemberAmountMapper.selectByMemberId(memberId); + mallMemberAmountTotalPerk.setTotalPerk(mallMemberAmountTotalPerk.getTotalPerk().subtract(perk)); + mallMemberAmountMapper.updateTotalPerkById(mallMemberAmountTotalPerk); } @Override @@ -1037,7 +1324,8 @@ * 当前时间比结束时间大 */ if(nowTime.compareTo(endTime) >= 0){ - List<MallProductBuyRecord> mallProductBuyRecords = mallProductBuyRecordMapper.selectByState(ProductEnum.PRODUCT_MATE_STATE_WAIT_PAY.getValue()); + List<MallProductBuyRecord> mallProductBuyRecords = mallProductBuyRecordMapper.selectByState( + ProductEnum.PRODUCT_MATE_STATE_WAIT_PAY.getValue()); if(CollUtil.isNotEmpty(mallProductBuyRecords)){ for(MallProductBuyRecord mallProductBuyRecord : mallProductBuyRecords){ /** @@ -1096,11 +1384,15 @@ return; } DateTime nowTime = DateUtil.date(); -// DataDictionaryCustom endTimeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( -// DataDictionaryEnum.YU_YUE_END_TIME.getType(), -// DataDictionaryEnum.YU_YUE_END_TIME.getCode() -// ); -// DateTime endTime = DateUtil.parseTime(endTimeDic.getValue()); + DateTime nowTimeFormat = DateUtil.parseTime(DateUtil.formatTime(nowTime)); + DataDictionaryCustom endTimeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.YU_YUE_END_TIME.getType(), + DataDictionaryEnum.YU_YUE_END_TIME.getCode() + ); + DateTime endTime = DateUtil.parseTime(endTimeDic.getValue()); + if(nowTimeFormat.compareTo(endTime) < 0){ + return; + } for(MallProductNft mallProductNft : mallProductNfts){ Long nftId = mallProductNft.getId(); List<MallProductBuy> mallProductBuys = mallProductBuyMapper.selectListByStateAndProductNFTId( @@ -1166,7 +1458,7 @@ queryMallMoneyFlow.eq("is_return",AppContants.MEMBER_FLOW_ING); queryMallMoneyFlow.eq("flow_type",FlowTypeNewEnum.NFT.getValue()); List<MallMoneyFlow> mallMoneyFlows = mallMoneyFlowMapper.selectList(queryMallMoneyFlow); - if(CollUtil.isNotEmpty(mallMoneyFlows)){ + if(CollUtil.isEmpty(mallMoneyFlows)){ return; } @@ -1189,7 +1481,7 @@ Long memberId = mallMoneyFlow.getMemberId(); MallMember mallMember = memberMapper.selectById(memberId); Integer isFrozen = mallMember.getIsFrozen(); - if(ProductEnum.MEMBER_UNFROZEN.getValue() == isFrozen){ + if(ProductEnum.MEMBER_FROZEN.getValue() == isFrozen){ MallMemberAmount mallMemberAmount = mallMemberAmountMapper.selectByMemberId(memberId); mallMemberAmount.setFrozenNft(mallMemberAmount.getFrozenNft().subtract(mallMoneyFlow.getAmount())); mallMemberAmountMapper.updateFrozenNftById(mallMemberAmount); @@ -1206,6 +1498,13 @@ AppContants.MEMBER_FLOW_ING); }else { + MallMemberAmount mallMemberAmountMine = mallMemberAmountMapper.selectByMemberId(memberId); + if(BigDecimal.ZERO.compareTo(mallMemberAmountMine.getTotalPerk().subtract(mallMoneyFlow.getAmount())) >= 0){ + continue; + } + mallMemberAmountMine.setTotalPerk(mallMemberAmountMine.getTotalPerk().subtract(mallMoneyFlow.getAmount())); + mallMemberAmountMapper.updateTrendsNftAndFrozenNftById(mallMemberAmountMine); + MallMemberAmount mallMemberAmount = mallMemberAmountMapper.selectByMemberId(memberId); mallMemberAmount.setFrozenNft(mallMemberAmount.getFrozenNft().subtract(mallMoneyFlow.getAmount())); mallMemberAmount.setTrendsNft(mallMemberAmount.getTrendsNft().add(mallMoneyFlow.getAmount())); @@ -1215,7 +1514,7 @@ String orderNo = MallUtils.getOrderNum("NFT"); mallMoneyFlowService.addMoneyFlow( memberId, - mallMoneyFlow.getAmount().negate(), + mallMoneyFlow.getAmount(), MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT_DONE.getValue(), orderNo, null, @@ -1233,7 +1532,7 @@ queryMallMoneyFlow.eq("is_return",AppContants.MEMBER_FLOW_ING); queryMallMoneyFlow.eq("flow_type",FlowTypeNewEnum.NFT.getValue()); List<MallMoneyFlow> mallMoneyFlows = mallMoneyFlowMapper.selectList(queryMallMoneyFlow); - if(CollUtil.isNotEmpty(mallMoneyFlows)){ + if(CollUtil.isEmpty(mallMoneyFlows)){ return; } @@ -1256,7 +1555,7 @@ Long memberId = mallMoneyFlow.getMemberId(); MallMember mallMember = memberMapper.selectById(memberId); Integer isFrozen = mallMember.getIsFrozen(); - if(ProductEnum.MEMBER_UNFROZEN.getValue() == isFrozen){ + if(ProductEnum.MEMBER_FROZEN.getValue() == isFrozen){ MallMemberAmount mallMemberAmount = mallMemberAmountMapper.selectByMemberId(memberId); mallMemberAmount.setFrozenNft(mallMemberAmount.getFrozenNft().subtract(mallMoneyFlow.getAmount())); mallMemberAmountMapper.updateFrozenNftById(mallMemberAmount); @@ -1273,6 +1572,13 @@ AppContants.MEMBER_FLOW_ING); }else { + MallMemberAmount mallMemberAmountMine = mallMemberAmountMapper.selectByMemberId(memberId); + if(BigDecimal.ZERO.compareTo(mallMemberAmountMine.getTotalPerk().subtract(mallMoneyFlow.getAmount())) >= 0){ + continue; + } + mallMemberAmountMine.setTotalPerk(mallMemberAmountMine.getTotalPerk().subtract(mallMoneyFlow.getAmount())); + mallMemberAmountMapper.updateTrendsNftAndFrozenNftById(mallMemberAmountMine); + MallMemberAmount mallMemberAmount = mallMemberAmountMapper.selectByMemberId(memberId); mallMemberAmount.setFrozenNft(mallMemberAmount.getFrozenNft().subtract(mallMoneyFlow.getAmount())); mallMemberAmount.setTrendsNft(mallMemberAmount.getTrendsNft().add(mallMoneyFlow.getAmount())); @@ -1282,7 +1588,7 @@ String orderNo = MallUtils.getOrderNum("NFT"); mallMoneyFlowService.addMoneyFlow( memberId, - mallMoneyFlow.getAmount().negate(), + mallMoneyFlow.getAmount(), MoneyFlowTypeNewEnum.TEAM_PERK_DIRECT_DONE.getValue(), orderNo, null, @@ -1300,7 +1606,7 @@ queryMallMoneyFlow.eq("is_return",AppContants.MEMBER_FLOW_ING); queryMallMoneyFlow.eq("flow_type",FlowTypeNewEnum.NFT.getValue()); List<MallMoneyFlow> mallMoneyFlows = mallMoneyFlowMapper.selectList(queryMallMoneyFlow); - if(CollUtil.isNotEmpty(mallMoneyFlows)){ + if(CollUtil.isEmpty(mallMoneyFlows)){ return; } @@ -1323,7 +1629,7 @@ Long memberId = mallMoneyFlow.getMemberId(); MallMember mallMember = memberMapper.selectById(memberId); Integer isFrozen = mallMember.getIsFrozen(); - if(ProductEnum.MEMBER_UNFROZEN.getValue() == isFrozen){ + if(ProductEnum.MEMBER_FROZEN.getValue() == isFrozen){ MallMemberAmount mallMemberAmount = mallMemberAmountMapper.selectByMemberId(memberId); mallMemberAmount.setFrozenNft(mallMemberAmount.getFrozenNft().subtract(mallMoneyFlow.getAmount())); mallMemberAmountMapper.updateFrozenNftById(mallMemberAmount); @@ -1340,6 +1646,14 @@ AppContants.MEMBER_FLOW_ING); }else { + + MallMemberAmount mallMemberAmountMine = mallMemberAmountMapper.selectByMemberId(memberId); + if(BigDecimal.ZERO.compareTo(mallMemberAmountMine.getTotalPerk().subtract(mallMoneyFlow.getAmount())) >= 0){ + continue; + } + mallMemberAmountMine.setTotalPerk(mallMemberAmountMine.getTotalPerk().subtract(mallMoneyFlow.getAmount())); + mallMemberAmountMapper.updateTrendsNftAndFrozenNftById(mallMemberAmountMine); + MallMemberAmount mallMemberAmount = mallMemberAmountMapper.selectByMemberId(memberId); mallMemberAmount.setFrozenNft(mallMemberAmount.getFrozenNft().subtract(mallMoneyFlow.getAmount())); mallMemberAmount.setTrendsNft(mallMemberAmount.getTrendsNft().add(mallMoneyFlow.getAmount())); @@ -1349,7 +1663,7 @@ String orderNo = MallUtils.getOrderNum("NFT"); mallMoneyFlowService.addMoneyFlow( memberId, - mallMoneyFlow.getAmount().negate(), + mallMoneyFlow.getAmount(), MoneyFlowTypeNewEnum.TEAM_PERK_EQUALS_DONE.getValue(), orderNo, null, @@ -1385,8 +1699,13 @@ //上级 String referrerId = mallMember.getReferrerId(); MallMember mallMemberRef = memberMapper.selectInfoByInviteId(referrerId); + if(ObjectUtil.isEmpty(mallMemberRef)){ + continue; + } List<MallMember> mallMembersAll = memberMapper.selectAllChildAgentListByInviteId(referrerId); - + if(ObjectUtil.isEmpty(mallMembersAll)){ + continue; + } List<MallMember> mallMembers = memberMapper.selectByRefererId(referrerId); Set<Long> mallMembersSet = mallMembers.stream().map(MallMember::getId).collect(Collectors.toSet()); mallMembersSet.retainAll(collect); @@ -1411,20 +1730,42 @@ 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); + if(directCntLevel <= intersection.size()){ + if(teamCnt <= mallMembersAll.size()){ + mallMemberRef.setLevel(level); + memberMapper.updateById(mallMemberRef); + + 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; + } + }else{ + flag = true; + } + }else{ 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; - } + } + } + } + + @Override + public void memberLevelDown() { + List<MallProductBuy> mallProductBuys = mallProductBuyMapper.selectTotalPerk(); + if(CollUtil.isEmpty(mallProductBuys)){ + return; + } + for(MallProductBuy mallProductBuy : mallProductBuys){ + BigDecimal totalPerk = mallProductBuy.getTotalPerk(); + if(BigDecimal.ZERO.compareTo(totalPerk) >= 0 ){ + Long memberId = mallProductBuy.getMemberId(); + MallMember mallMember = memberMapper.selectById(memberId); + mallMember.setLevel(AgentLevelEnum.ZERO_LEVEL.getCode()); + memberMapper.updateById(mallMember); } } } -- Gitblit v1.9.1