update 获取累计充值金额

This commit is contained in:
2024-03-02 16:45:36 +08:00
parent 6d898a6b54
commit afb27a812d
9 changed files with 126 additions and 13 deletions

View File

@@ -35,4 +35,9 @@ public class CreateMerchantVipDTO {
* 赠送金
*/
private BigDecimal updateGiftBalance;
/**
* 来自后管 1-是
*/
private String fromWeb;
}

View File

@@ -1,6 +1,7 @@
package com.jsowell.pile.mapper;
import com.jsowell.pile.domain.MemberWalletInfo;
import com.jsowell.pile.vo.base.MemberWalletVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@@ -69,4 +70,6 @@ public interface MemberWalletInfoMapper {
List<MemberWalletInfo> selectByMemberWalletList(@Param("memberId") String memberId);
MemberWalletInfo selectByWalletCode(@Param("walletCode") String walletCode);
MemberWalletVO selectMemberWalletInfo(String walletCode);
}

View File

@@ -223,6 +223,19 @@ public class MemberBasicInfoServiceImpl implements MemberBasicInfoService {
String targetMerchantId = dto.getTargetMerchantId(); // 目标运营商id
log.info("修改用户余额-param:{}", JSON.toJSONString(dto));
/*
更新类型
1-进账2-出账
*/
String type = dto.getType();
/*
子类型
进账10-充值, 11-赠送, 12-订单结算退款
出账20-后管扣款, 21-订单付款, 22-用户退款
*/
String subType;
// 本次操作人员
String createBy = dto.getMemberId();
@@ -264,21 +277,30 @@ public class MemberBasicInfoServiceImpl implements MemberBasicInfoService {
BigDecimal newPrincipalBalance = null;
BigDecimal newGiftBalance = null;
// 更新本金金额
/*
更新本金金额
*/
if (updatePrincipalBalance != null && updatePrincipalBalance.compareTo(BigDecimal.ZERO) > 0) {
if (StringUtils.equals(dto.getType(), MemberWalletEnum.TYPE_OUT.getValue())) {
// 余额类型1-本金2-赠送)
String category = Constants.ONE;
// 获取子类型
subType = getTheSubType(dto, category);
// 出账时,金额改为负数
if (StringUtils.equals(type, MemberWalletEnum.TYPE_OUT.getValue())) {
// 扣款 转为负数
updatePrincipalBalance = updatePrincipalBalance.negate();
}
// 会员老的余
// 原金
BigDecimal oldPrincipalBalance = walletInfo.getPrincipalBalance() == null
? BigDecimal.ZERO
: walletInfo.getPrincipalBalance();
// 新金额 = 原金额 + 变动金额
newPrincipalBalance = oldPrincipalBalance.add(updatePrincipalBalance);
if (newPrincipalBalance.compareTo(BigDecimal.ZERO) < 0) {
log.info("修改用户余额-变更后本金余额不能为负数");
throw new BusinessException("", "变更后本金余额不能为负数");
}
// 备注,拼接存入数据库
String remark = "日期:" + DateUtils.getDateTime() +
", 操作人员Id:" + createBy +
", 变更用户本金金额:" + updatePrincipalBalance +
@@ -286,12 +308,12 @@ public class MemberBasicInfoServiceImpl implements MemberBasicInfoService {
", 变更后金额:" + newPrincipalBalance;
// 记流水
logList.add(MemberWalletLog.builder()
.memberId(dto.getMemberId())
.memberId(memberId)
.walletCode(walletCode)
.type(dto.getType())
.subType(dto.getSubType())
.type(type)
.subType(subType)
.amount(updatePrincipalBalance)
.category("1")
.category(category)
.relatedOrderCode(dto.getRelatedOrderCode())
.beforeAmount(oldPrincipalBalance)
.afterAmount(newPrincipalBalance)
@@ -301,21 +323,31 @@ public class MemberBasicInfoServiceImpl implements MemberBasicInfoService {
.build());
}
// 更新赠送金额
/*
更新赠送金额
*/
if (updateGiftBalance != null && updateGiftBalance.compareTo(BigDecimal.ZERO) > 0) {
if (StringUtils.equals(dto.getType(), MemberWalletEnum.TYPE_OUT.getValue())) {
// 余额类型1-本金2-赠送)
String category = Constants.TWO;
// 获取子类型
subType = getTheSubType(dto, category);
// 出账时,金额改为负数
if (StringUtils.equals(type, MemberWalletEnum.TYPE_OUT.getValue())) {
// 扣款 转为负数
updateGiftBalance = updateGiftBalance.negate();
}
// 原金额
BigDecimal oldGiftBalance = walletInfo.getGiftBalance() == null
? BigDecimal.ZERO
: walletInfo.getGiftBalance();
// 新金额 = 原金额 + 变动金额
newGiftBalance = oldGiftBalance.add(updateGiftBalance);
// 余额不能为负数
if (newGiftBalance.compareTo(BigDecimal.ZERO) < 0) {
log.info("修改用户余额-变更后赠送余额不能为负数");
throw new BusinessException("", "变更后赠送余额不能为负数");
}
// 备注,拼接存入数据库
String remark = "日期:" + DateUtils.getDateTime() +
", 操作人员Id:" + createBy +
", 变更用户赠送金额:" + updateGiftBalance +
@@ -323,12 +355,12 @@ public class MemberBasicInfoServiceImpl implements MemberBasicInfoService {
", 变更后金额:" + newGiftBalance;
// 记流水
logList.add(MemberWalletLog.builder()
.memberId(dto.getMemberId())
.memberId(memberId)
.walletCode(walletCode)
.type(dto.getType())
.subType(dto.getSubType())
.type(type)
.subType(subType)
.amount(updateGiftBalance)
.category("2")
.category(category)
.relatedOrderCode(dto.getRelatedOrderCode())
.beforeAmount(oldGiftBalance)
.afterAmount(newGiftBalance)
@@ -357,6 +389,31 @@ public class MemberBasicInfoServiceImpl implements MemberBasicInfoService {
return i;
}
// 获取子类型
private String getTheSubType(UpdateMemberBalanceDTO dto, String category) {
String subType;
if (!StringUtils.equals(dto.getFromWeb(), Constants.ONE)) {
// 如果不是后管操作subType等于dto中传过来的值
subType = dto.getSubType();
} else {
// 来自后管的操作
if (StringUtils.equals(dto.getType(), MemberWalletEnum.TYPE_OUT.getValue())) {
// 后管操作 && 出账 = 就是后管扣款
subType = MemberWalletEnum.SUBTYPE_WEB_DEDUCT_MONEY.getValue();
} else {
// 进账
if (StringUtils.equals(category, Constants.ONE)) {
// 充值本金
subType = MemberWalletEnum.SUBTYPE_TOP_UP.getValue();
} else {
// 充值赠送金
subType = MemberWalletEnum.SUBTYPE_GIVING.getValue();
}
}
}
return subType;
}
@Override
public MemberVO queryMemberInfoByMemberId(String memberId) {
return queryMemberInfoByMemberId(memberId, null);
@@ -592,6 +649,9 @@ public class MemberBasicInfoServiceImpl implements MemberBasicInfoService {
updateMemberBalanceDTO.setUpdatePrincipalBalance(dto.getUpdatePrincipalBalance());
updateMemberBalanceDTO.setUpdateGiftBalance(dto.getUpdateGiftBalance());
updateMemberBalanceDTO.setTargetMerchantId(dto.getTargetMerchantId());
if (StringUtils.isNotBlank(dto.getFromWeb())) {
updateMemberBalanceDTO.setFromWeb(dto.getFromWeb());
}
updateMemberBalance(updateMemberBalanceDTO);
}

View File

@@ -86,4 +86,8 @@ public class MemberWalletInfoServiceImpl implements MemberWalletInfoService {
return resultList;
}
public MemberWalletVO selectMemberWalletInfo(String walletCode) {
return memberWalletInfoMapper.selectMemberWalletInfo(walletCode);
}
}

View File

@@ -37,4 +37,24 @@ public class MemberWalletVO {
* 本金金额
*/
private BigDecimal principalBalance;
/**
* 赠送金余额
*/
private BigDecimal giftBalance;
/**
* 累计本金充值
*/
private BigDecimal accumulatedRechargeAmount;
/**
* 累计赠送金额
*/
private BigDecimal accumulatedRechargeGift;
/**
* 累计消费
*/
private BigDecimal accumulatedConsumptionAmount;
}

View File

@@ -23,6 +23,21 @@ public class MemberWalletInfoVO {
*/
private BigDecimal currentBalance;
/**
* 累计充值
*/
private BigDecimal accumulatedRechargeAmount;
/**
* 累计消费
*/
private BigDecimal accumulatedConsumptionAmount;
/**
* 总充值金额
*/
private BigDecimal totalRechargeAmount;
/**
* 总消费
*/