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 | 145 ++++++++++++++++++++++++++++++++---------------- 1 files changed, 97 insertions(+), 48 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 5104bed..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() { /** @@ -909,6 +920,19 @@ 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( @@ -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); + } + } /** @@ -1224,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); @@ -1241,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())); @@ -1250,7 +1284,7 @@ String orderNo = MallUtils.getOrderNum("NFT"); mallMoneyFlowService.addMoneyFlow( memberId, - mallMoneyFlow.getAmount().negate(), + mallMoneyFlow.getAmount(), MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT_DONE.getValue(), orderNo, null, @@ -1291,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); @@ -1308,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())); @@ -1317,7 +1358,7 @@ String orderNo = MallUtils.getOrderNum("NFT"); mallMoneyFlowService.addMoneyFlow( memberId, - mallMoneyFlow.getAmount().negate(), + mallMoneyFlow.getAmount(), MoneyFlowTypeNewEnum.TEAM_PERK_DIRECT_DONE.getValue(), orderNo, null, @@ -1358,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); @@ -1375,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())); @@ -1384,7 +1433,7 @@ String orderNo = MallUtils.getOrderNum("NFT"); mallMoneyFlowService.addMoneyFlow( memberId, - mallMoneyFlow.getAmount().negate(), + mallMoneyFlow.getAmount(), MoneyFlowTypeNewEnum.TEAM_PERK_EQUALS_DONE.getValue(), orderNo, null, -- Gitblit v1.9.1