From 548a01654a5fdb158aa2cca86ae83ffaebbb0395 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Fri, 03 Jan 2025 09:37:11 +0800
Subject: [PATCH] feat(mall): 增加 USDT 提现功能
---
src/main/resources/templates/febs/views/modules/runVip/vipEdit.html | 20 +++
src/main/java/cc/mrbird/febs/mall/vo/MyTeamVo.java | 6 +
src/main/java/cc/mrbird/febs/common/enumerates/RunVipMoneyFlowTypeEnum.java | 24 ++++
src/main/resources/mapper/modules/MallMemberMapper.xml | 4
src/main/java/cc/mrbird/febs/mall/entity/MallMemberWallet.java | 2
src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java | 4
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 123 ++++++++++++++++++-----
src/main/java/cc/mrbird/febs/mall/vo/ApiRunVipVo.java | 2
src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html | 1
src/main/java/cc/mrbird/febs/mall/vo/TeamListVo.java | 6 +
src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java | 10 +
src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html | 3
src/main/java/cc/mrbird/febs/mall/service/impl/AdminRunVipServiceImpl.java | 2
src/main/resources/templates/febs/views/modules/runVip/vipAdd.html | 17 +++
src/main/java/cc/mrbird/febs/common/enumerates/RunVipDataDictionaryEnum.java | 2
src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java | 12 ++
src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java | 21 +++-
src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java | 7 +
src/main/resources/templates/febs/views/modules/runVip/sellVipList.html | 2
src/main/java/cc/mrbird/febs/mall/entity/RunVip.java | 2
20 files changed, 220 insertions(+), 50 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/RunVipDataDictionaryEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/RunVipDataDictionaryEnum.java
index a853314..5b44448 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/RunVipDataDictionaryEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/RunVipDataDictionaryEnum.java
@@ -29,7 +29,7 @@
//系统充值地址
CHARGE_SYS_ADDRESS_BSC("CHARGE_TYPE", "CHARGE_SYS_ADDRESS_BSC"),
- //碳币兑换USDT的手续费率
+ //USDT提现的最小数
RUN_VIP_BALANCE_TO_COIN_PERCENT("CHARGE_TYPE", "RUN_VIP_BALANCE_TO_COIN_PERCENT"),
//碳币兑换USDT的最小数
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/RunVipMoneyFlowTypeEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/RunVipMoneyFlowTypeEnum.java
index f835dd3..920344b 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/RunVipMoneyFlowTypeEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/RunVipMoneyFlowTypeEnum.java
@@ -6,6 +6,26 @@
public enum RunVipMoneyFlowTypeEnum {
/**
+ * 碳币兑换USDT
+ */
+ BALANCE_OUT_COMMISSION_IN(15,"{}碳币兑换{}USDT","获得USDT"),
+
+ /**
+ * 碳币兑换USDT
+ */
+ BALANCE_OUT_COMMISSION(14,"{}碳币兑换{}USDT","碳币兑换"),
+
+ /**
+ * USDT转赠好友-转入
+ */
+ COMMISSION_IN_GIVE_FRIEND(13,"获得好友{},{}USDT","USDT转赠好友-转入"),
+
+ /**
+ * USDT转赠好友-转出
+ */
+ COMMISSION_OUT_GIVE_FRIEND(12,"转赠好友{},{}USDT","USDT转赠好友-转出"),
+
+ /**
* 节点助力
*/
DIRECT_SCORE(11,"团队助力碳积分{}","团队助力碳积分"),
@@ -36,9 +56,9 @@
BUY_VIP_REBATE(6,"{}购买{},返利{}碳币","用户返利碳币"),
/**
- * 碳币提现
+ * USDT提现
*/
- BALANCE_OUT(5,"{}碳币兑换{}USDT,手续费{}USDT","碳币提现"),
+ COMMISSION_OUT(5,"提现{}USDT,手续费{}USDT","USDT提现"),
/**
* 碳积分兑换碳币
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
index 5da3a9a..4864b80 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
@@ -112,14 +112,22 @@
return new FebsResponse().success().message("操作成功");
}
- @ApiOperation(value = "兑换提现")
+ @ApiOperation(value = "碳币兑换USDT")
@PostMapping(value = "/withdrawal")
@SubmitRepeat
- public FebsResponse withdrawal(@RequestBody @Validated WithdrawalDto withdrawalDto) {
+ public FebsResponse withdrawal(@RequestBody @Validated CommissionChangeDto withdrawalDto) {
memberService.withdrawal(withdrawalDto);
return new FebsResponse().success().message("操作成功");
}
+ @ApiOperation(value = "USDT提现")
+ @PostMapping(value = "/withdrawalU")
+ @SubmitRepeat
+ public FebsResponse withdrawalU(@RequestBody @Validated WithdrawalDto withdrawalDto) {
+ memberService.withdrawalU(withdrawalDto);
+ return new FebsResponse().success().message("操作成功");
+ }
+
@ApiOperation(value = "榜单")
@ApiResponses({
@ApiResponse(code = 200, message = "success", response = ApiChartVo.class)
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallMemberWallet.java b/src/main/java/cc/mrbird/febs/mall/entity/MallMemberWallet.java
index 8792662..9216444 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallMemberWallet.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMemberWallet.java
@@ -40,7 +40,7 @@
private BigDecimal prizeScore;
/**
- * 佣金
+ * USDT
*/
private BigDecimal commission;
}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/RunVip.java b/src/main/java/cc/mrbird/febs/mall/entity/RunVip.java
index 999892e..ba0d84a 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/RunVip.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/RunVip.java
@@ -25,6 +25,8 @@
private Integer withdrawState;//是否允许碳币提现 1是0否
+ private Integer commissionState;//是否允许USDT提现 1是0否
+
private Integer insideState;//是否允许内转 1-是0-否
private BigDecimal growthValue;//每日碳积分增长倍数
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java
index d9a2968..597cb82 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java
@@ -43,7 +43,9 @@
void transfer(TransferDto transferDto);
- void withdrawal(WithdrawalDto withdrawalDto);
+ void withdrawal(CommissionChangeDto withdrawalDto);
+
+ void withdrawalU(WithdrawalDto withdrawalDto);
void commissionChange(CommissionChangeDto commissionChange);
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminRunVipServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminRunVipServiceImpl.java
index 8cbd603..236c3a2 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminRunVipServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminRunVipServiceImpl.java
@@ -116,7 +116,7 @@
mallMoneyFlow.setStatus(mallMemberWithdraw.getStatus());
mallMoneyFlowMapper.updateById(mallMoneyFlow);
if(mallMemberWithdraw.getStatus() == YesOrNoEnum.NO.getValue()){
- walletService.addBalance(mallMemberWithdraw.getWithdrawTimes(), mallMemberWithdraw.getMemberId());
+ walletService.addCommission(mallMemberWithdraw.getWithdrawTimes(), mallMemberWithdraw.getMemberId());
}
return new FebsResponse().success().message("操作成功");
}
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 a939650..2aea39f 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
@@ -4,10 +4,7 @@
import cc.mrbird.febs.common.enumerates.RunVipDataDictionaryEnum;
import cc.mrbird.febs.common.enumerates.YesOrNoEnum;
import cc.mrbird.febs.mall.dto.ApiMemberChargeFailDto;
-import cc.mrbird.febs.mall.entity.AgentInfo;
-import cc.mrbird.febs.mall.entity.DataDictionaryCustom;
-import cc.mrbird.febs.mall.entity.MallCharge;
-import cc.mrbird.febs.mall.entity.MallMember;
+import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
import cc.mrbird.febs.mall.mapper.MallChargeMapper;
import cc.mrbird.febs.mall.mapper.MallMemberMapper;
@@ -28,7 +25,9 @@
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
+import java.util.Comparator;
import java.util.List;
+import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
@@ -211,7 +210,8 @@
// 获取会员信息
MallMember mallMember = mallMemberMapper.selectById(memberId);
if (mallMember == null) {
- throw new IllegalArgumentException("会员不存在");
+ log.info("会员不存在");
+ return;
}
// 已经是节点则跳过
@@ -219,6 +219,17 @@
return;
}
+ //节点不是最高等级不升级节点
+ Optional<RunVip> max = runVipMapper.selectList(null).stream().max(Comparator.comparing(RunVip::getOrderNumber));
+ RunVip maxRunVip = max.orElse(null);
+ if (maxRunVip == null) {
+ log.info("会员等级不存在");
+ return;
+ }
+ if (!maxRunVip.getVipCode().equals(mallMember.getLevel())) {
+ return;
+ }
+
// 获取直推成员和团队成员
List<MallMember> allMembers = mallMemberMapper.selectList(
new LambdaQueryWrapper<MallMember>()
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
index e97d254..af1c944 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -47,6 +47,7 @@
import java.io.IOException;
import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.util.*;
import java.util.stream.Collectors;
@@ -295,11 +296,13 @@
mallMemberVo.setChangeState(runVip.getChangeState());
mallMemberVo.setWithdrawState(runVip.getWithdrawState());
mallMemberVo.setInsideState(runVip.getInsideState());
+ mallMemberVo.setCommissionState(runVip.getCommissionState());
MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(mallMemberVo.getId());
mallMemberVo.setBalance(wallet.getBalance());
mallMemberVo.setScore(wallet.getScore());
+ mallMemberVo.setCommission(wallet.getCommission());
return new FebsResponse().success().data(mallMemberVo);
}
@@ -440,6 +443,7 @@
//获取个人的碳币
MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
myTeamVo.setMyBalance(mallMemberWallet.getBalance());
+ myTeamVo.setMyCommission(mallMemberWallet.getCommission());
//全部直推
List<MallMember> mallMembers = this.baseMapper.selectByRefererId(mallMember.getInviteId());
/**
@@ -448,6 +452,7 @@
if(CollUtil.isEmpty(mallMembers)){
myTeamVo.setMyTeamCnt(0);
myTeamVo.setMyTeamBalance(BigDecimal.ZERO);
+ myTeamVo.setMyTeamCommission(BigDecimal.ZERO);
myTeamVo.setTeam(null);
return new FebsResponse().success().data(myTeamVo);
}
@@ -455,7 +460,8 @@
* 如果有下级,获取所有的团队
*/
myTeamVo.setMyTeamCnt(mallMembers.size());
- myTeamVo.setMyTeamBalance(getTeamBalance(mallMembers));
+ myTeamVo.setMyTeamBalance(getTeamBalance(mallMembers).getMyTeamBalance());
+ myTeamVo.setMyTeamCommission(getTeamBalance(mallMembers).getMyTeamCommission());
List<TeamListVo> teamListVos = MallMemberConversion.INSTANCE.entityToTeamListVos(mallMembers);
teamListVos.forEach(item -> {
@@ -465,10 +471,12 @@
if(CollUtil.isEmpty(mallMemberRefs)){
item.setMyTeamCnt(0);
item.setMyTeamBalance(BigDecimal.ZERO);
+ item.setMyTeamCommission(BigDecimal.ZERO);
}else{
item.setMyTeamCnt(mallMemberRefs.size());
//获取mallMembers的所有id
- item.setMyTeamBalance(getTeamBalance(mallMemberRefs));
+ item.setMyTeamBalance(getTeamBalance(mallMemberRefs).getMyTeamBalance());
+ item.setMyTeamCommission(getTeamBalance(mallMemberRefs).getMyTeamCommission());
}
});
myTeamVo.setTeam(teamListVos);
@@ -485,15 +493,17 @@
* @param mallMembers 商城成员列表,用于计算总余额
* @return 团队的总余额,表示为BigDecimal类型
*/
- private BigDecimal getTeamBalance(List<MallMember> mallMembers) {
+ private TeamListVo getTeamBalance(List<MallMember> mallMembers) {
+ TeamListVo teamListVo = new TeamListVo();
// 提取所有商城成员的ID,以便进行后续的钱包信息查询
List<Long> ids = mallMembers.stream().map(MallMember::getId).collect(Collectors.toList());
// 根据成员ID列表查询所有相关成员的钱包信息
List<MallMemberWallet> mallMemberWallets = mallMemberWalletMapper.selectList(new LambdaQueryWrapper<MallMemberWallet>().in(MallMemberWallet::getMemberId, ids));
-
// 计算所有成员钱包余额的总和,并返回该总和
- return mallMemberWallets.stream().map(MallMemberWallet::getBalance).reduce(BigDecimal.ZERO, BigDecimal::add);
+ teamListVo.setMyTeamBalance(mallMemberWallets.stream().map(MallMemberWallet::getBalance).reduce(BigDecimal.ZERO, BigDecimal::add));
+ teamListVo.setMyTeamCommission(mallMemberWallets.stream().map(MallMemberWallet::getCommission).reduce(BigDecimal.ZERO, BigDecimal::add));
+ return teamListVo;
}
@Override
@@ -587,35 +597,35 @@
throw new FebsException("资金密码错误");
}
- walletService.reduceBalance(transferDto.getAmount(), loginMember.getId());
+ walletService.reduceCommission(transferDto.getAmount(), loginMember.getId());
String orderNo = MallUtils.getOrderNum("HZ");
this.runVipMoneyFlowAdd(
loginMember.getId(),
mallMember.getId(),
orderNo,
- FlowTypeEnum.BALANCE.getValue(),
- RunVipMoneyFlowTypeEnum.BALANCE_OUT_GIVE_FRIEND.getValue(),
+ FlowTypeEnum.COMMISSION.getValue(),
+ RunVipMoneyFlowTypeEnum.COMMISSION_OUT_GIVE_FRIEND.getValue(),
transferDto.getAmount().negate(),
- StrUtil.format(RunVipMoneyFlowTypeEnum.BALANCE_OUT_GIVE_FRIEND.getDescription(),mallMember.getInviteId(),transferDto.getAmount()),
+ StrUtil.format(RunVipMoneyFlowTypeEnum.COMMISSION_OUT_GIVE_FRIEND.getDescription(),mallMember.getInviteId(),transferDto.getAmount()),
YesOrNoEnum.YES.getValue()
);
- walletService.addBalance(transferDto.getAmount(), mallMember.getId());
+ walletService.addCommission(transferDto.getAmount(), mallMember.getId());
this.runVipMoneyFlowAdd(
mallMember.getId(),
loginMember.getId(),
orderNo,
- FlowTypeEnum.BALANCE.getValue(),
- RunVipMoneyFlowTypeEnum.BALANCE_IN_GIVE_FRIEND.getValue(),
+ FlowTypeEnum.COMMISSION.getValue(),
+ RunVipMoneyFlowTypeEnum.COMMISSION_IN_GIVE_FRIEND.getValue(),
transferDto.getAmount(),
- StrUtil.format(RunVipMoneyFlowTypeEnum.BALANCE_IN_GIVE_FRIEND.getDescription(),loginMember.getInviteId(),transferDto.getAmount()),
+ StrUtil.format(RunVipMoneyFlowTypeEnum.COMMISSION_IN_GIVE_FRIEND.getDescription(),loginMember.getInviteId(),transferDto.getAmount()),
YesOrNoEnum.YES.getValue()
);
}
@Override
@Transactional(rollbackFor = Exception.class)
- public void withdrawal(WithdrawalDto withdrawalDto) {
+ public void withdrawal(CommissionChangeDto withdrawalDto) {
Long memberId = LoginUserUtil.getLoginUser().getId();
MallMember loginMember = this.baseMapper.selectById(memberId);
/**
@@ -634,15 +644,11 @@
throw new FebsException("资金密码错误");
}
- MallMemberPayment mallMemberPayment = mallMemberPaymentMapper.selectById(withdrawalDto.getAddressId());
- if (mallMemberPayment == null) {
- throw new FebsException("无效的提现地址");
- }
BigDecimal minCnt = new BigDecimal(
dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
RunVipDataDictionaryEnum.RUN_VIP_BALANCE_TO_COIN_MIN.getType(),
RunVipDataDictionaryEnum.RUN_VIP_BALANCE_TO_COIN_MIN.getCode()).getValue()
- ).setScale(4, BigDecimal.ROUND_DOWN);
+ ).setScale(4, RoundingMode.DOWN);
if(minCnt.compareTo(withdrawalDto.getAmount()) > 0){
throw new FebsException(minCnt+"碳币起提");
}
@@ -651,25 +657,84 @@
dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
RunVipDataDictionaryEnum.RUN_VIP_BALANCE_TO_COIN.getType(),
RunVipDataDictionaryEnum.RUN_VIP_BALANCE_TO_COIN.getCode()).getValue()
- ).setScale(2, BigDecimal.ROUND_DOWN);
+ ).setScale(2, RoundingMode.DOWN);
+ BigDecimal withdrawalAmount = withdrawalDto.getAmount().multiply(balanceToCoin).setScale(2, RoundingMode.DOWN);
+ if(BigDecimal.ZERO.compareTo(withdrawalAmount) >= 0){
+ throw new FebsException("转换异常");
+ }
+
+ /**
+ * 减少碳币
+ */
+ walletService.reduceBalance(withdrawalDto.getAmount(), loginMember.getId());
+ String orderNo = MallUtils.getOrderNum("BU");
+ this.runVipMoneyFlowAdd(
+ loginMember.getId(),
+ loginMember.getId(),
+ orderNo,
+ FlowTypeEnum.BALANCE.getValue(),
+ RunVipMoneyFlowTypeEnum.BALANCE_OUT_COMMISSION.getValue(),
+ withdrawalDto.getAmount().negate(),
+ StrUtil.format(RunVipMoneyFlowTypeEnum.BALANCE_OUT_COMMISSION.getDescription(),withdrawalDto.getAmount(),withdrawalAmount),
+ YesOrNoEnum.YES.getValue()
+ );
+ walletService.addCommission(withdrawalAmount, loginMember.getId());
+ this.runVipMoneyFlowAdd(
+ loginMember.getId(),
+ loginMember.getId(),
+ orderNo,
+ FlowTypeEnum.COMMISSION.getValue(),
+ RunVipMoneyFlowTypeEnum.BALANCE_OUT_COMMISSION_IN.getValue(),
+ withdrawalAmount,
+ StrUtil.format(RunVipMoneyFlowTypeEnum.BALANCE_OUT_COMMISSION_IN.getDescription(),withdrawalDto.getAmount(),withdrawalAmount),
+ YesOrNoEnum.YES.getValue()
+ );
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void withdrawalU(WithdrawalDto withdrawalDto) {
+ Long memberId = LoginUserUtil.getLoginUser().getId();
+ MallMember loginMember = this.baseMapper.selectById(memberId);
+ /**
+ * 用户的等级level是否允许USDT提现
+ */
+ RunVip runVip = runVipMapper.selectOne(new LambdaQueryWrapper<RunVip>().eq(RunVip::getVipCode, loginMember.getLevel()));
+ if(ObjectUtil.isEmpty(runVip) || runVip.getCommissionState() != YesOrNoEnum.YES.getValue()){
+ throw new FebsException("请先升级会员");
+ }
+
+ if (StrUtil.isBlank(loginMember.getTradePassword())) {
+ throw new FebsException("未设置资金密码");
+ }
+
+ if (!loginMember.getTradePassword().equals(SecureUtil.md5(withdrawalDto.getTradePwd()))) {
+ throw new FebsException("资金密码错误");
+ }
+
+ MallMemberPayment mallMemberPayment = mallMemberPaymentMapper.selectById(withdrawalDto.getAddressId());
+ if (mallMemberPayment == null) {
+ throw new FebsException("无效的提现地址");
+ }
BigDecimal balanceToCoinPercent = new BigDecimal(
dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
RunVipDataDictionaryEnum.RUN_VIP_BALANCE_TO_COIN_PERCENT.getType(),
RunVipDataDictionaryEnum.RUN_VIP_BALANCE_TO_COIN_PERCENT.getCode()).getValue()
- ).setScale(2, BigDecimal.ROUND_DOWN);
+ ).setScale(2, RoundingMode.DOWN);
- BigDecimal withdrawalAmount = withdrawalDto.getAmount().multiply(balanceToCoin).setScale(2, BigDecimal.ROUND_DOWN);
+ if(balanceToCoinPercent.compareTo(withdrawalDto.getAmount()) > 0){
+ throw new FebsException("手续费不足");
+ }
BigDecimal fee = balanceToCoinPercent;
-// BigDecimal fee = balanceToCoinPercent.multiply(withdrawalAmount).setScale(2, BigDecimal.ROUND_DOWN);
- BigDecimal withdrawalAmountReal = withdrawalAmount.subtract(fee);
+ BigDecimal withdrawalAmountReal = withdrawalDto.getAmount().subtract(fee).setScale(2, RoundingMode.DOWN);
if(BigDecimal.ZERO.compareTo(withdrawalAmountReal) >= 0){
- throw new FebsException(minCnt+"手续费不足");
+ throw new FebsException("手续费不足");
}
/**
* 减少碳币,增加进行中提现记录
*/
- walletService.reduceBalance(withdrawalDto.getAmount(), loginMember.getId());
+ walletService.reduceCommission(withdrawalDto.getAmount(), loginMember.getId());
String orderNo = MallUtils.getOrderNum("TX");
MallMemberWithdraw withdraw = new MallMemberWithdraw();
@@ -687,10 +752,10 @@
loginMember.getId(),
loginMember.getId(),
orderNo,
- FlowTypeEnum.BALANCE.getValue(),
- RunVipMoneyFlowTypeEnum.BALANCE_OUT.getValue(),
+ FlowTypeEnum.COMMISSION.getValue(),
+ RunVipMoneyFlowTypeEnum.COMMISSION_OUT.getValue(),
withdrawalDto.getAmount().negate(),
- StrUtil.format(RunVipMoneyFlowTypeEnum.BALANCE_OUT.getDescription(),withdrawalDto.getAmount(),withdrawalAmount,fee),
+ StrUtil.format(RunVipMoneyFlowTypeEnum.COMMISSION_OUT.getDescription(),withdrawalDto.getAmount(),fee),
YesOrNoEnum.ING.getValue()
);
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 8e464dd..d6a9301 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
@@ -920,6 +920,9 @@
new LambdaQueryWrapper<MallMember>()
.eq(MallMember::getReferrerId, inviteId)
);
+ if(CollUtil.isEmpty(directMembers)){
+ return memberIds;
+ }
memberIds.addAll(directMembers.stream().map(MallMember::getId).collect(Collectors.toSet()));
// 获取团队成员
@@ -927,6 +930,10 @@
new LambdaQueryWrapper<MallMember>()
.in(MallMember::getReferrerId, directMembers.stream().map(MallMember::getInviteId).collect(Collectors.toSet()))
);
+
+ if(CollUtil.isEmpty(teamMembers)){
+ return memberIds;
+ }
memberIds.addAll(teamMembers.stream().map(MallMember::getId).collect(Collectors.toSet()));
return memberIds;
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiRunVipVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiRunVipVo.java
index 340f7c0..cea7b1d 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/ApiRunVipVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiRunVipVo.java
@@ -30,6 +30,8 @@
private Integer changeState;//是否允许碳积分兑换碳币 1是0否
@ApiModelProperty(value = "是否允许碳币提现 1是0否")
private Integer withdrawState;//是否允许碳币提现 1是0否
+ @ApiModelProperty(value = "是否允许USDT提现 1是0否")
+ private Integer commissionState;//是否允许USDT提现 1是0否
@ApiModelProperty(value = "是否允许内转 1-是0-否")
private Integer insideState;//是否允许内转 1-是0-否
@ApiModelProperty(value = "每日碳积分增长倍数")
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java b/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
index 9c8a924..18c9434 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
@@ -38,10 +38,16 @@
@ApiModelProperty(value = "是否允许内转 1-是0-否")
private Integer insideState;//是否允许内转 1-是0-否
+
+ @ApiModelProperty(value = "是否允许USDT提现 1是0否")
+ private Integer commissionState;//是否允许USDT提现 1是0否
+
@ApiModelProperty(value = "碳币")
- private BigDecimal balance;
+ private BigDecimal balance = BigDecimal.ZERO;
@ApiModelProperty(value = "碳积分")
- private BigDecimal score;
+ private BigDecimal score = BigDecimal.ZERO;
+ @ApiModelProperty(value = "USDT")
+ private BigDecimal commission = BigDecimal.ZERO;
@ApiModelProperty(value = "是否有支付密码 1:是 0:否")
private Integer tradeWord;
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/MyTeamVo.java b/src/main/java/cc/mrbird/febs/mall/vo/MyTeamVo.java
index b343329..dc1bb43 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/MyTeamVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/MyTeamVo.java
@@ -17,12 +17,18 @@
@ApiModelProperty(value = "我的碳币")
private BigDecimal myBalance = BigDecimal.ZERO;
+ @ApiModelProperty(value = "我的USDT")
+ private BigDecimal myCommission = BigDecimal.ZERO;
+
@ApiModelProperty(value = "团队总数")
private int myTeamCnt = 0;
@ApiModelProperty(value = "团队碳币")
private BigDecimal myTeamBalance = BigDecimal.ZERO;
+ @ApiModelProperty(value = "团队USDT")
+ private BigDecimal myTeamCommission = BigDecimal.ZERO;
+
/**
* 是否是节点 1是 0否
*/
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/TeamListVo.java b/src/main/java/cc/mrbird/febs/mall/vo/TeamListVo.java
index a2c2c9c..b9fe900 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/TeamListVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/TeamListVo.java
@@ -34,6 +34,9 @@
@ApiModelProperty(value = "我的碳币")
private BigDecimal myBalance = BigDecimal.ZERO;
+ @ApiModelProperty(value = "我的USDT")
+ private BigDecimal myCommission = BigDecimal.ZERO;
+
@ApiModelProperty(value = "用户等级")
private String levelName;
@@ -42,4 +45,7 @@
@ApiModelProperty(value = "团队碳币")
private BigDecimal myTeamBalance = BigDecimal.ZERO;
+ @ApiModelProperty(value = "团队USDT")
+ private BigDecimal myTeamCommission = BigDecimal.ZERO;
+
}
diff --git a/src/main/resources/mapper/modules/MallMemberMapper.xml b/src/main/resources/mapper/modules/MallMemberMapper.xml
index f9b30b3..554fad1 100644
--- a/src/main/resources/mapper/modules/MallMemberMapper.xml
+++ b/src/main/resources/mapper/modules/MallMemberMapper.xml
@@ -8,6 +8,7 @@
a.phone referrerName,
IFNULL(c.balance,0) balance,
IFNULL(c.score,0) score,
+ IFNULL(c.commission,0) commission,
vipConfig.vip_name levelName
FROM mall_member m
left join mall_member a on m.referrer_id = a.invite_id
@@ -35,7 +36,8 @@
</if>
</where>
GROUP BY
- m.id, a.phone, c.balance, c.score,vipConfig.vip_name
+ m.id, a.phone, c.balance, c.score,
+ c.commission,vipConfig.vip_name
order by m.CREATED_TIME desc
</select>
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html b/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
index e283efb..4659eb4 100644
--- a/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
+++ b/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
@@ -254,6 +254,7 @@
{field: 'phone', title: '账号', minWidth: 150,align:'left',totalRowText:"合计"},
{field: 'name', title: '昵称', minWidth: 100,align:'left'},
{field: 'inviteId', title: '邀请码', minWidth: 100,align:'left'},
+ {field: 'commission', title: 'USDT', minWidth: 100,align:'left', totalRow:true},
{field: 'balance', title: '碳币', minWidth: 100,align:'left', totalRow:true},
{field: 'score', title: '碳积分', minWidth: 100,align:'left', totalRow:true},
{field: 'directCnt', title: '直推', minWidth: 100,align:'left', totalRow:true},
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html b/src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html
index 91659f2..3e3db7b 100644
--- a/src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html
+++ b/src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html
@@ -28,6 +28,7 @@
<option value="">请选择</option>
<option value="1">碳币</option>
<option value="2">碳积分</option>
+ <option value="4">USDT</option>
</select>
</div>
</div>
@@ -144,6 +145,8 @@
return '碳币';
} else if(d.flowType === 2) {
return '碳积分'
+ } else if(d.flowType === 4) {
+ return 'USDT'
} else {
return '-';
}
diff --git a/src/main/resources/templates/febs/views/modules/runVip/sellVipList.html b/src/main/resources/templates/febs/views/modules/runVip/sellVipList.html
index f2fe76d..f9f23e2 100644
--- a/src/main/resources/templates/febs/views/modules/runVip/sellVipList.html
+++ b/src/main/resources/templates/febs/views/modules/runVip/sellVipList.html
@@ -1,4 +1,4 @@
-<div class="layui-fluid layui-anim febs-anim" id="febs-withdraw-list" lay-title="碳币提现">
+<div class="layui-fluid layui-anim febs-anim" id="febs-withdraw-list" lay-title="提现">
<div class="layui-row febs-container">
<div class="layui-col-md12">
<div class="layui-card">
diff --git a/src/main/resources/templates/febs/views/modules/runVip/vipAdd.html b/src/main/resources/templates/febs/views/modules/runVip/vipAdd.html
index 304c5b0..50b927a 100644
--- a/src/main/resources/templates/febs/views/modules/runVip/vipAdd.html
+++ b/src/main/resources/templates/febs/views/modules/runVip/vipAdd.html
@@ -140,13 +140,26 @@
<div class="layui-form-item">
<div class="layui-col-lg6">
- <label class="layui-form-label febs-form-item-require">碳币提现:</label>
+ <label class="layui-form-label febs-form-item-require">兑换USDT:</label>
<div class="layui-input-block">
<select name="withdrawState" class="valid-type" lay-filter="type-select">
<option value="1">允许</option>
<option value="0">不允许</option>
</select>
- <div class="layui-form-mid layui-word-aux">是否允许碳币提现。</div>
+ <div class="layui-form-mid layui-word-aux">是否允许碳币兑换USDT。</div>
+ </div>
+ </div>
+ </div>
+
+ <div class="layui-form-item">
+ <div class="layui-col-lg6">
+ <label class="layui-form-label febs-form-item-require">USDT提现:</label>
+ <div class="layui-input-block">
+ <select name="commissionState" class="valid-type" lay-filter="type-select">
+ <option value="1">允许</option>
+ <option value="0">不允许</option>
+ </select>
+ <div class="layui-form-mid layui-word-aux">是否允许USDT提现。</div>
</div>
</div>
</div>
diff --git a/src/main/resources/templates/febs/views/modules/runVip/vipEdit.html b/src/main/resources/templates/febs/views/modules/runVip/vipEdit.html
index 454e579..8ce591a 100644
--- a/src/main/resources/templates/febs/views/modules/runVip/vipEdit.html
+++ b/src/main/resources/templates/febs/views/modules/runVip/vipEdit.html
@@ -138,15 +138,30 @@
</div>
</div>
+
+
<div class="layui-form-item">
<div class="layui-col-lg6">
- <label class="layui-form-label febs-form-item-require">碳币提现:</label>
+ <label class="layui-form-label febs-form-item-require">兑换USDT:</label>
<div class="layui-input-block">
<select name="withdrawState" class="valid-type" lay-filter="type-select">
<option value="1">允许</option>
<option value="0">不允许</option>
</select>
- <div class="layui-form-mid layui-word-aux">是否允许碳币提现。</div>
+ <div class="layui-form-mid layui-word-aux">是否允许碳币兑换USDT。</div>
+ </div>
+ </div>
+ </div>
+
+ <div class="layui-form-item">
+ <div class="layui-col-lg6">
+ <label class="layui-form-label febs-form-item-require">USDT提现:</label>
+ <div class="layui-input-block">
+ <select name="commissionState" class="valid-type" lay-filter="type-select">
+ <option value="1">允许</option>
+ <option value="0">不允许</option>
+ </select>
+ <div class="layui-form-mid layui-word-aux">是否允许USDT提现。</div>
</div>
</div>
</div>
@@ -185,6 +200,7 @@
"state":runVip.state,
"changeState":runVip.changeState,
"withdrawState" : runVip.withdrawState,
+ "commissionState" : runVip.commissionState,
"insideState" : runVip.insideState,
"growthValue" : runVip.growthValue,
"growthCnt" : runVip.growthCnt,
--
Gitblit v1.9.1