From 1bf57dbbb7025facb8a3e3c2074e82af6f13b24f Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Thu, 28 Apr 2022 15:13:59 +0800
Subject: [PATCH] fix
---
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberWalletServiceImpl.java | 46 +++++++++++++++
src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java | 5 +
src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberWalletService.java | 4 +
src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java | 2
src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java | 2
src/main/resources/mapper/modules/MallMemberWalletMapper.xml | 7 ++
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 33 +++++++----
src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java | 3
src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeEnum.java | 35 +++++++++++
src/main/java/cc/mrbird/febs/mall/entity/MallMemberWallet.java | 5 +
src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java | 2
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 14 ++--
12 files changed, 137 insertions(+), 21 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeEnum.java
new file mode 100644
index 0000000..8bf01bd
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeEnum.java
@@ -0,0 +1,35 @@
+package cc.mrbird.febs.common.enumerates;
+
+import lombok.Getter;
+
+/**
+ * @author wzy
+ * @date 2022-04-28
+ **/
+@Getter
+public enum FlowTypeEnum {
+
+
+ /**
+ * 余额
+ */
+ BALANCE(1),
+ /**
+ * 积分
+ */
+ SCORE(2),
+ /**
+ * 竞猜积分
+ */
+ PRIZE_SCORE(3),
+ /**
+ * 佣金
+ */
+ COMMISSION(4);
+
+ private final int value;
+
+ FlowTypeEnum(int value) {
+ this.value = value;
+ }
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java b/src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java
index f03c370..f10bd31 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallGoods.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
+import java.math.BigDecimal;
import java.util.List;
/**
@@ -46,6 +47,10 @@
private Integer isHot;
+ private BigDecimal staticMultiple;
+
+ private Integer isNormal;
+
@TableField(exist = false)
private List<MallGoodsStyle> styles;
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 937c248..4efe753 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallMemberWallet.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMemberWallet.java
@@ -38,4 +38,9 @@
* 抽奖积分
*/
private BigDecimal prizeScore;
+
+ /**
+ * 佣金
+ */
+ private BigDecimal commission;
}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java b/src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java
index 0c0af91..dd13190 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java
@@ -43,7 +43,7 @@
public static final Integer IS_RETURN_Y = 1;
/**
- * 流水类型 1-余额 2-赠送积分 3-竞猜积分
+ * 流水类型 1-余额 2-赠送积分 3-竞猜积分 4-佣金
*/
private Integer flowType;
}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java
index ab6deeb..50b5cd5 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java
@@ -10,5 +10,7 @@
int updateBalanceWithVersion(@Param("record") MallMemberWallet wallet);
+ int updateCommissionWithVersion(@Param("record") MallMemberWallet wallet);
+
void updateBalanceWithId(@Param("record")MallMemberWallet mallMemberWallet);
}
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 d05df8a..3bbdb49 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java
@@ -30,7 +30,7 @@
FebsResponse moneyFlows(MoneyFlowDto moneyFlowDto);
- void addMoneyFlow(Long memberId, BigDecimal amount, Integer type, String orderNo, String description, String remark, Long rtMemberId, Integer status);
+ void addMoneyFlow(Long memberId, BigDecimal amount, Integer type, String orderNo, String description, String remark, Long rtMemberId, Integer status, Integer flowType);
void transfer(TransferDto transferDto);
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberWalletService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberWalletService.java
index 79aed18..cb187ba 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberWalletService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberWalletService.java
@@ -10,4 +10,8 @@
void addBalance(BigDecimal amount, Long member);
void reduceBalance(BigDecimal amount, Long memberId);
+
+ void addCommission(BigDecimal amount, Long member);
+
+ void reduceCommission(BigDecimal amount, Long member);
}
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 eb71ed1..a3529ea 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
@@ -2,6 +2,7 @@
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
+import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.utils.*;
@@ -328,7 +329,7 @@
}
@Override
- public void addMoneyFlow(Long memberId, BigDecimal amount, Integer type, String orderNo, String description, String remark, Long rtMemberId, Integer status) {
+ public void addMoneyFlow(Long memberId, BigDecimal amount, Integer type, String orderNo, String description, String remark, Long rtMemberId, Integer status, Integer flowType) {
MallMoneyFlow flow = new MallMoneyFlow();
flow.setMemberId(memberId);
flow.setAmount(amount);
@@ -338,6 +339,7 @@
flow.setRemark(remark);
flow.setRtMemberId(rtMemberId);
flow.setStatus(status);
+ flow.setFlowType(flowType);
mallMoneyFlowMapper.insert(flow);
}
@@ -366,10 +368,10 @@
walletService.reduceBalance(transferDto.getAmount(), memberId);
String orderNo = MallUtils.getOrderNum("T");
- this.addMoneyFlow(memberId, transferDto.getAmount().negate(), MoneyFlowTypeEnum.TRANSFER.getValue(), orderNo, null, null, mallMember.getId(), null);
+ this.addMoneyFlow(memberId, transferDto.getAmount().negate(), MoneyFlowTypeEnum.TRANSFER.getValue(), orderNo, null, null, mallMember.getId(), null, FlowTypeEnum.BALANCE.getValue());
walletService.addBalance(transferDto.getAmount(), mallMember.getId());
- this.addMoneyFlow(mallMember.getId(), transferDto.getAmount(), MoneyFlowTypeEnum.TRANSFER.getValue(), orderNo, null, null, memberId, null);
+ this.addMoneyFlow(mallMember.getId(), transferDto.getAmount(), MoneyFlowTypeEnum.TRANSFER.getValue(), orderNo, null, null, memberId, null, FlowTypeEnum.BALANCE.getValue());
}
@Override
@@ -397,16 +399,16 @@
MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
if (profit != null) {
// 可提现
- BigDecimal canMoney = wallet.getBalance().subtract(profit);
+ BigDecimal canMoney = wallet.getCommission().subtract(profit);
if(withdrawalDto.getAmount().compareTo(canMoney) > 0) {
throw new FebsException("提现金额不足");
}
}
- walletService.reduceBalance(withdrawalDto.getAmount(), memberId);
+ walletService.reduceCommission(withdrawalDto.getAmount(), memberId);
String orderNo = MallUtils.getOrderNum("W");
- this.addMoneyFlow(memberId, withdrawalDto.getAmount().negate(), MoneyFlowTypeEnum.WITHDRAWAL.getValue(), orderNo, null, null, null, 1);
+ this.addMoneyFlow(memberId, withdrawalDto.getAmount().negate(), MoneyFlowTypeEnum.WITHDRAWAL.getValue(), orderNo, null, null, null, 1, FlowTypeEnum.COMMISSION.getValue());
}
@Override
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberWalletServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberWalletServiceImpl.java
index e2c2815..dff3490 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberWalletServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberWalletServiceImpl.java
@@ -66,4 +66,50 @@
}
}
}
+
+ @Override
+ public void addCommission(BigDecimal amount, Long memberId) {
+ int i = 0;
+ boolean flag = true;
+
+ while (flag) {
+ i++;
+ MallMemberWallet wallet = this.baseMapper.selectWalletByMemberId(memberId);
+ wallet.setCommission(wallet.getCommission().add(amount));
+
+ int result = this.baseMapper.updateCommissionWithVersion(wallet);
+ if (result > 0) {
+ flag = false;
+ } else {
+ if (i > 2) {
+ throw new FebsException("余额增加失败");
+ }
+ }
+ }
+ }
+
+ @Override
+ public void reduceCommission(BigDecimal amount, Long memberId) {
+ int i = 0;
+ boolean flag = true;
+
+ while (flag) {
+ i++;
+ MallMemberWallet wallet = this.baseMapper.selectWalletByMemberId(memberId);
+ if (amount.compareTo(wallet.getCommission()) > 0) {
+ throw new FebsException("佣金不足");
+ }
+
+ wallet.setCommission(wallet.getCommission().subtract(amount));
+
+ int result = this.baseMapper.updateCommissionWithVersion(wallet);
+ if (result > 0) {
+ flag = false;
+ } else {
+ if (i > 2) {
+ throw new FebsException("佣金支付失败");
+ }
+ }
+ }
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
index 3230d0d..1733f9e 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -1,9 +1,6 @@
package cc.mrbird.febs.mall.service.impl;
-import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
-import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
-import cc.mrbird.febs.common.enumerates.OrderRefundStatusEnum;
-import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
+import cc.mrbird.febs.common.enumerates.*;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.utils.AppContants;
import cc.mrbird.febs.common.utils.LoginUserUtil;
@@ -193,21 +190,33 @@
payResultStr = balancePay(orderInfo, payOrderDto.getTradePwd());
orderInfo.setPayOrderNo(orderInfo.getOrderNo());
- orderInfo.setPayMethod("积分支付");
+ orderInfo.setPayMethod("余额支付");
orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue());
orderInfo.setPayTime(new Date());
orderInfo.setPayResult("1");
- MallMember mallMember = memberMapper.selectById(member.getId());
- if (AgentLevelEnum.ZERO_LEVEL.name().equals(mallMember.getLevel())) {
- mallMember.setLevel(AgentLevelEnum.FIRST_LEVEL.name());
- memberMapper.updateById(mallMember);
+// MallMember mallMember = memberMapper.selectById(member.getId());
+// if (AgentLevelEnum.ZERO_LEVEL.name().equals(mallMember.getLevel())) {
+// mallMember.setLevel(AgentLevelEnum.FIRST_LEVEL.name());
+// memberMapper.updateById(mallMember);
+// }
+
+ // 静态倍数
+ List<MallOrderItem> orderItems = this.baseMapper.getMallOrderItemByOrderId(orderInfo.getId());
+ if (CollUtil.isNotEmpty(orderItems)) {
+ for (MallOrderItem orderItem : orderItems) {
+ MallGoods mallGoods = mallGoodsMapper.selectById(orderItem.getGoodsId());
+
+ MallGoodsSku sku = mallGoodsSkuMapper.selectById(orderItem.getSkuId());
+ BigDecimal score = sku.getOriginalPrice().multiply(mallGoods.getStaticMultiple());
+ memberService.addMoneyFlow(member.getId(), score, MoneyFlowTypeEnum.STATIC_BONUS.getValue(), orderInfo.getOrderNo(), null, null, null, null, FlowTypeEnum.SCORE.getValue());
+ }
}
- memberService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), null, null, null, null);
+ memberService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), null, null, null, null, FlowTypeEnum.BALANCE.getValue());
+// agentProducer.sendAutoLevelUpMsg(member.getId());
+// agentProducer.sendReturnMoneyMsg(orderInfo.getId());
- agentProducer.sendAutoLevelUpMsg(member.getId());
- agentProducer.sendReturnMoneyMsg(orderInfo.getId());
default:
}
diff --git a/src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java b/src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java
index eea3440..dcafa6d 100644
--- a/src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java
@@ -1,6 +1,7 @@
package cc.mrbird.febs.pay.service.impl;
import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
+import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
import cc.mrbird.febs.common.exception.FebsException;
@@ -107,6 +108,6 @@
agentProducer.sendReturnMoneyMsg(orderInfo.getId());
agentProducer.sendAutoLevelUpMsg(orderInfo.getMemberId());
- memberService.addMoneyFlow(orderInfo.getMemberId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), null, null, null, null);
+ memberService.addMoneyFlow(orderInfo.getMemberId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), null, null, null, null, FlowTypeEnum.BALANCE.getValue());
}
}
diff --git a/src/main/resources/mapper/modules/MallMemberWalletMapper.xml b/src/main/resources/mapper/modules/MallMemberWalletMapper.xml
index cc3b0b8..7e60066 100644
--- a/src/main/resources/mapper/modules/MallMemberWalletMapper.xml
+++ b/src/main/resources/mapper/modules/MallMemberWalletMapper.xml
@@ -13,6 +13,13 @@
where id=#{record.id} and revision=#{record.revision}
</update>
+ <update id="updateCommissionWithVersion">
+ update mall_member_wallet
+ set revision = revision + 1,
+ commission = #{record.commission}
+ where id=#{record.id} and revision=#{record.revision}
+ </update>
+
<update id="updateBalanceWithId">
update mall_member_wallet
set revision = revision + 1,
--
Gitblit v1.9.1