From 38371de8bcb3b06d200a61b93356bad3507a1896 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Tue, 26 Mar 2024 09:38:19 +0800 Subject: [PATCH] 抽奖 --- src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java | 192 +++++++++++++++++++++++++++++++---------------- 1 files changed, 126 insertions(+), 66 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 93cdfb0..ea908e8 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,25 +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); // } -// -// 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() { /** @@ -899,7 +910,7 @@ 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; @@ -908,6 +919,19 @@ }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"); @@ -934,33 +958,36 @@ 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); + /** + * 先插入流水记录,然后定时器每小时,循环一次找寻对应的数据执行 + */ + 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); + MallMemberAmount mallMemberAmountDirect = mallMemberAmountMapper.selectByMemberId(directMember.getId()); + mallMemberAmountDirect.setFrozenNft(mallMemberAmountDirect.getFrozenNft().add(basicPerkDirect)); + mallMemberAmountMapper.updateFrozenNftById(mallMemberAmountDirect); + } + } /** @@ -1067,7 +1094,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){ /** @@ -1200,7 +1228,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; } @@ -1223,7 +1251,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); @@ -1240,6 +1268,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())); @@ -1249,7 +1284,7 @@ String orderNo = MallUtils.getOrderNum("NFT"); mallMoneyFlowService.addMoneyFlow( memberId, - mallMoneyFlow.getAmount().negate(), + mallMoneyFlow.getAmount(), MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT_DONE.getValue(), orderNo, null, @@ -1267,7 +1302,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; } @@ -1290,7 +1325,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); @@ -1307,6 +1342,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())); @@ -1316,7 +1358,7 @@ String orderNo = MallUtils.getOrderNum("NFT"); mallMoneyFlowService.addMoneyFlow( memberId, - mallMoneyFlow.getAmount().negate(), + mallMoneyFlow.getAmount(), MoneyFlowTypeNewEnum.TEAM_PERK_DIRECT_DONE.getValue(), orderNo, null, @@ -1334,7 +1376,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; } @@ -1357,7 +1399,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); @@ -1374,6 +1416,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())); @@ -1383,7 +1433,7 @@ String orderNo = MallUtils.getOrderNum("NFT"); mallMoneyFlowService.addMoneyFlow( memberId, - mallMoneyFlow.getAmount().negate(), + mallMoneyFlow.getAmount(), MoneyFlowTypeNewEnum.TEAM_PERK_EQUALS_DONE.getValue(), orderNo, null, @@ -1419,8 +1469,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); @@ -1445,18 +1500,23 @@ 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); + 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; } } -- Gitblit v1.9.1