From fbe6ab3f9dee466b1b6557f27c862322ef45a89b Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Sun, 02 Mar 2025 14:15:18 +0800
Subject: [PATCH] refactor(mallMember): 注释掉会员列表页面的三个按钮- 注释掉了"碳币拨付"、"碳积分拨付"和"修改会员等级"三个按钮 - 保留了"添加会员"、"登录密码重置"和"资金密码重置"按钮
---
src/main/java/cc/mrbird/febs/mall/service/impl/AsyncServiceImpl.java | 92 ++++++++++++++++++++++++++++++++++++++++------
1 files changed, 80 insertions(+), 12 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AsyncServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AsyncServiceImpl.java
index d661692..f816678 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AsyncServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AsyncServiceImpl.java
@@ -1,10 +1,13 @@
package cc.mrbird.febs.mall.service.impl;
import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
+import cc.mrbird.febs.common.enumerates.RunVipDataDictionaryEnum;
import cc.mrbird.febs.common.enumerates.RunVipMoneyFlowTypeEnum;
import cc.mrbird.febs.common.enumerates.YesOrNoEnum;
import cc.mrbird.febs.common.utils.MallUtils;
+import cc.mrbird.febs.mall.entity.DataDictionaryCustom;
import cc.mrbird.febs.mall.entity.MallMember;
+import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
import cc.mrbird.febs.mall.mapper.MallMemberMapper;
import cc.mrbird.febs.mall.service.AsyncService;
import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
@@ -25,6 +28,75 @@
private final IMallMoneyFlowService mallMoneyFlowService;
private final IApiMallMemberWalletService walletService;
+ private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
+
+ /**
+ * 执行直推奖励的逻辑
+ * 当一个会员进行操作时,此方法会根据直推关系给予推荐人一定的奖励
+ * 奖励金额计算基于操作金额和系统设定的直推奖励比例
+ *
+ * @param amount 操作金额,用于计算直推奖励
+ * @param memberId 会员ID,用于查找会员及其推荐人信息
+ */
+ @Override
+ public void directCoin(BigDecimal amount, Long memberId) {
+ // 根据会员ID查询会员信息
+ MallMember mallMember = this.baseMapper.selectById(memberId);
+ // 如果会员不存在或没有推荐人,则直接返回
+ if (null == mallMember || StrUtil.isBlank(mallMember.getReferrerId())){
+ return;
+ }
+ // 根据推荐人ID查询推荐人信息
+ MallMember mallRef = this.baseMapper.selectInfoByInviteId(mallMember.getReferrerId());
+ // 如果推荐人不存在,则直接返回
+ if(mallRef == null){
+ return;
+ }
+ // 查询直推奖励的比例设置
+ DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ RunVipDataDictionaryEnum.CHARGE_SYS_DIRECT.getType(),
+ RunVipDataDictionaryEnum.CHARGE_SYS_DIRECT.getCode()
+ );
+ // 如果未设置直推奖励比例,则初始化一个默认值(0.1代表10%,设置成0,则不返直推)
+ if(null == dataDictionaryCustom){
+ dataDictionaryCustom = new DataDictionaryCustom();
+ dataDictionaryCustom.setType(RunVipDataDictionaryEnum.CHARGE_SYS_DIRECT.getType());
+ dataDictionaryCustom.setCode(RunVipDataDictionaryEnum.CHARGE_SYS_DIRECT.getCode());
+ dataDictionaryCustom.setValue("0");
+ dataDictionaryCustom.setDescription("直推奖励(0.1代表10%,设置成0,则不返直推)");
+ dataDictionaryCustomMapper.insert(dataDictionaryCustom);
+ }
+ // 解析直推奖励比例
+ BigDecimal directPercent = new BigDecimal(dataDictionaryCustom.getValue());
+
+ // 计算直推奖励金额
+ BigDecimal directAmount = amount.multiply(directPercent).setScale(2, RoundingMode.DOWN);
+ // 如果直推奖励金额小于等于0,则直接返回
+ if(BigDecimal.ZERO.compareTo(directAmount) >=0){
+ return;
+ }
+ // 如果直推奖励金额大于等于操作金额,则直接返回,防止奖励金额异常
+ if(directAmount.compareTo(amount) >=0){
+ return;
+ }
+
+ // 调用服务增加推荐人的佣金
+ walletService.addCommission(directAmount,mallRef.getId());
+ // 生成订单号
+ String orderNo = MallUtils.getOrderNum("DPE");
+ // 记录推荐人的资金流水
+ mallMoneyFlowService.runVipMoneyFlowAdd(
+ mallRef.getId(),
+ memberId,
+ orderNo,
+ FlowTypeEnum.COMMISSION.getValue(),
+ RunVipMoneyFlowTypeEnum.DIRECT_USDT.getValue(),
+ directAmount,
+ StrUtil.format(RunVipMoneyFlowTypeEnum.DIRECT_USDT.getDescription(),directAmount),
+ YesOrNoEnum.YES.getValue()
+ );
+ }
+
@Override
public void releaseScore(BigDecimal V3, Long memberId) {
walletService.addScore(V3,memberId);
@@ -43,26 +115,22 @@
}
@Override
- public void releaseNodeCoin(BigDecimal amount, BigDecimal percent, BigDecimal balanceToCoin,Long memberId) {
- //实际节点返利的金额
- BigDecimal multiply = amount.multiply(percent);
+ public void releaseNodeCoin(BigDecimal amount, BigDecimal percent, Long memberId) {
+ //实际节点助力的碳币
+ BigDecimal multiply = amount.multiply(percent).setScale(2,RoundingMode.DOWN);
if(BigDecimal.ZERO.compareTo(multiply) >=0){
return;
}
- BigDecimal divide = multiply.divide(balanceToCoin, 2, RoundingMode.DOWN);
- if(BigDecimal.ZERO.compareTo(divide) >=0){
- return;
- }
- walletService.addBalance(divide,memberId);
+ walletService.addCommission(multiply,memberId);
String orderNo = MallUtils.getOrderNum("JD");
mallMoneyFlowService.runVipMoneyFlowAdd(
memberId,
memberId,
orderNo,
- FlowTypeEnum.BALANCE.getValue(),
- RunVipMoneyFlowTypeEnum.NODE_BALANCE.getValue(),
- divide,
- StrUtil.format(RunVipMoneyFlowTypeEnum.NODE_BALANCE.getDescription(),divide),
+ FlowTypeEnum.COMMISSION.getValue(),
+ RunVipMoneyFlowTypeEnum.NODE_COMMISSION.getValue(),
+ multiply,
+ StrUtil.format(RunVipMoneyFlowTypeEnum.NODE_COMMISSION.getDescription(),multiply),
YesOrNoEnum.YES.getValue()
);
--
Gitblit v1.9.1