src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
@@ -5,6 +5,8 @@ @Getter public enum DataDictionaryEnum { //卖方确认获取5%的GSD FCM_GSD_IN("FCM_GSD_IN","FCM_GSD_IN"), //卡牌互转手续费 FCM_INSIDE_NFT_PERCENT("FCM_INSIDE_NFT_PERCENT","FCM_INSIDE_NFT_PERCENT"), //销毁数量 按照比例销毁或者返利给节点 src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeNewEnum.java
@@ -11,6 +11,7 @@ @Getter public enum MoneyFlowTypeNewEnum { NFT_TRANS_GFD(32,"赠送GFD"), NFT_TRANS_OUT_FEE(31,"卡牌转出手续费"), NFT_TRANS_IN(30,"卡牌转入"), NFT_TRANS_OUT(29,"卡牌转出"), 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() { /** @@ -947,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); } } /** src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallProductServiceImpl.java
@@ -6,6 +6,7 @@ import cc.mrbird.febs.common.enumerates.MoneyFlowTypeNewEnum; import cc.mrbird.febs.common.enumerates.ProductEnum; import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.common.utils.AppContants; import cc.mrbird.febs.common.utils.LoginUserUtil; import cc.mrbird.febs.common.utils.MallUtils; import cc.mrbird.febs.mall.dto.*; @@ -573,6 +574,16 @@ mallProductSellRecord.setState(ProductEnum.PRODUCT_MATE_STATE_CONFIRM.getValue()); mallProductSellRecordMapper.updateById(mallProductSellRecord); DataDictionaryCustom gsdInDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( DataDictionaryEnum.FCM_GSD_IN.getType(), DataDictionaryEnum.FCM_GSD_IN.getCode() ); BigDecimal gsdInPercent = new BigDecimal(gsdInDic.getValue()).multiply(AppContants.BASIC_PERCENT); BigDecimal gsdIn = gsdInPercent.multiply(mallProductSellRecord.getNftCnt()).setScale(2,BigDecimal.ROUND_DOWN); MallMemberAmount mallMemberAmount = mallMemberAmountMapper.selectByMemberId(mallProductSellRecord.getMemberId()); mallMemberAmount.setGsd(mallMemberAmount.getGsd().add(gsdIn)); mallMemberAmountMapper.updateGsdById(mallMemberAmount); agentProducer.sendFcmOrderSellInsureMsg(sellRecordId); return new FebsResponse().success(); } src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
@@ -1277,6 +1277,75 @@ MallMemberAmount mallMemberAmount = mallMemberAmountMapper.selectByMemberId(mallProductBuy.getMemberId()); mallMemberAmount.setTotalPerk(mallMemberAmount.getTotalPerk().add(totalPerk)); mallMemberAmountMapper.updateTotalPerkById(mallMemberAmount); /** * 更新用户上级收益,冻结7天,7天时间到期自动释放到动态钱包 */ Long memberId = mallProductBuy.getMemberId(); MallMember mallMember = mallMemberMapper.selectById(memberId); if(ObjectUtil.isNotEmpty(mallMember)){ //直推 String referrerId = mallMember.getReferrerId(); MallMember directMember = mallMemberMapper.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 nftTotal = mallProductBuy.getNftTotal(); BigDecimal basicPerkDirect = nftTotal.multiply(basicPerkDirectPercent).setScale(2, BigDecimal.ROUND_DOWN); /** * 如果用户是冻结,则直接销毁 */ Integer isFrozen = directMember.getIsFrozen(); if(ProductEnum.MEMBER_FROZEN.getValue() == isFrozen){ MallMemberAmount mallMemberAmountMine = mallMemberAmountMapper.selectByMemberId(directMember.getId()); if(BigDecimal.ZERO.compareTo(mallMemberAmountMine.getTotalPerk().subtract(basicPerkDirect)) >= 0){ return; } mallMemberAmountMine.setTotalPerk(mallMemberAmountMine.getTotalPerk().subtract(basicPerkDirect)); mallMemberAmountMapper.updateTrendsNftAndFrozenNftById(mallMemberAmountMine); //插入一条流水记录 String orderNo = MallUtils.getOrderNum("FNFTW"); mallMoneyFlowService.addMoneyFlow( memberId, basicPerkDirect.negate(), MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT_WRONG.getValue(), orderNo, null, FlowTypeNewEnum.NFT.getValue(), MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT_WRONG.getDescrition(), AppContants.MEMBER_FLOW_ING); }else { MallMemberAmount mallMemberAmountMine = mallMemberAmountMapper.selectByMemberId(directMember.getId()); if(BigDecimal.ZERO.compareTo(mallMemberAmountMine.getTotalPerk().subtract(basicPerkDirect)) >= 0){ return; } mallMemberAmountMine.setTotalPerk(mallMemberAmountMine.getTotalPerk().subtract(basicPerkDirect)); mallMemberAmountMapper.updateTrendsNftAndFrozenNftById(mallMemberAmountMine); MallMemberAmount mallMemberAmountNft = mallMemberAmountMapper.selectByMemberId(directMember.getId()); mallMemberAmountNft.setTrendsNft(mallMemberAmountNft.getTrendsNft().add(basicPerkDirect)); mallMemberAmountMapper.updateTrendsNftById(mallMemberAmountNft); //插入一条流水记录 String orderNo = MallUtils.getOrderNum("NFT"); mallMoneyFlowService.addMoneyFlow( memberId, basicPerkDirect, MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT_DONE.getValue(), orderNo, null, FlowTypeNewEnum.NFT.getValue(), MoneyFlowTypeNewEnum.BASIC_PERK_DIRECT_DONE.getDescrition(), AppContants.MEMBER_FLOW_DONE); } } } } } }