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 | 98 ++++++++++++++----------
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallProductServiceImpl.java | 11 ++
src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java | 2
src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java | 69 +++++++++++++++++
src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeNewEnum.java | 1
5 files changed, 139 insertions(+), 42 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
index 6d7e4d1..7b3d1dd 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
+++ b/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"),
//销毁数量 按照比例销毁或者返利给节点
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeNewEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeNewEnum.java
index 95e17d8..a7ee16d 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeNewEnum.java
+++ b/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,"卡牌转出"),
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 1ad6a24..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() {
/**
@@ -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);
+ }
+
}
/**
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallProductServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallProductServiceImpl.java
index f20f10d..342c16b 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallProductServiceImpl.java
+++ b/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();
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
index c18c8a4..eddabbb 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
+++ b/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);
+ }
+ }
+ }
}
}
}
--
Gitblit v1.9.1