余额退款

This commit is contained in:
2023-11-27 11:59:15 +08:00
parent 0e36550c4c
commit 3ce8454fcd
5 changed files with 31 additions and 13 deletions

View File

@@ -127,6 +127,8 @@ public enum ReturnCodeEnum {
// 地锁存在未完成的占桩订单 // 地锁存在未完成的占桩订单
CODE_HAS_OCCUPY_PILE_ORDER_ERROR("00100059", "当前地锁存在未完成的占桩订单"), CODE_HAS_OCCUPY_PILE_ORDER_ERROR("00100059", "当前地锁存在未完成的占桩订单"),
CODE_WALLET_NOT_FOUND_ERROR("00100060", "未查询会员钱包信息"),
/* 个人桩 start */ /* 个人桩 start */
CODE_PILE_HAS_BEEN_BINDING_ERROR("00400001", "此桩已被绑定,请联系管理员!"), CODE_PILE_HAS_BEEN_BINDING_ERROR("00400001", "此桩已被绑定,请联系管理员!"),

View File

@@ -46,4 +46,9 @@ public class ApplyRefundDTO {
* 汇付需要merchantKey取小程序appId传给它 * 汇付需要merchantKey取小程序appId传给它
*/ */
private String wechatAppId; private String wechatAppId;
/**
* 钱包编号
*/
private String walletCode;
} }

View File

@@ -213,7 +213,7 @@ public class MemberBasicInfoServiceImpl implements IMemberBasicInfoService {
} }
String targetMerchantId = dto.getTargetMerchantId(); // 目标运营商id String targetMerchantId = dto.getTargetMerchantId(); // 目标运营商id
log.info("修改用户余额 memberId:{}, updatePrincipalBalance:{}, targetMerchantId:{}", memberId, updatePrincipalBalance, targetMerchantId); log.info("修改用户余额-memberId:{}, updatePrincipalBalance:{}, targetMerchantId:{}", memberId, updatePrincipalBalance, targetMerchantId);
// 来自后管的充值,校验权限 // 来自后管的充值,校验权限
if (StringUtils.equals(dto.getFromWeb(), Constants.ONE)) { if (StringUtils.equals(dto.getFromWeb(), Constants.ONE)) {
@@ -228,7 +228,7 @@ public class MemberBasicInfoServiceImpl implements IMemberBasicInfoService {
// 查询用户余额 // 查询用户余额
MemberWalletInfo walletInfo = memberWalletInfoService.selectByMemberId(memberId, targetMerchantId); MemberWalletInfo walletInfo = memberWalletInfoService.selectByMemberId(memberId, targetMerchantId);
if (walletInfo == null) { if (walletInfo == null) {
log.warn("根据会员id:{}, 目标运营商id:{}, 查询会员信息为空, 新建会员钱包", memberId, targetMerchantId); log.warn("修改用户余额-根据会员id:{}, 目标运营商id:{}, 查询会员信息为空, 新建会员钱包", memberId, targetMerchantId);
// 如果查询到钱包为空,就新建一个该运营商的钱包 // 如果查询到钱包为空,就新建一个该运营商的钱包
walletInfo = MemberWalletInfo.builder() walletInfo = MemberWalletInfo.builder()
.walletCode(generateWalletCode()) .walletCode(generateWalletCode())
@@ -262,7 +262,7 @@ public class MemberBasicInfoServiceImpl implements IMemberBasicInfoService {
: walletInfo.getPrincipalBalance(); : walletInfo.getPrincipalBalance();
newPrincipalBalance = oldPrincipalBalance.add(updatePrincipalBalance); newPrincipalBalance = oldPrincipalBalance.add(updatePrincipalBalance);
if (newPrincipalBalance.compareTo(BigDecimal.ZERO) < 0) { if (newPrincipalBalance.compareTo(BigDecimal.ZERO) < 0) {
log.warn("变更后本金余额不能为负数"); log.warn("修改用户余额-变更后本金余额不能为负数");
throw new BusinessException("", "变更后本金余额不能为负数"); throw new BusinessException("", "变更后本金余额不能为负数");
} }
// 记流水 // 记流水
@@ -293,7 +293,7 @@ public class MemberBasicInfoServiceImpl implements IMemberBasicInfoService {
newGiftBalance = oldGiftBalance.add(updateGiftBalance); newGiftBalance = oldGiftBalance.add(updateGiftBalance);
// 余额不能为负数 // 余额不能为负数
if (newGiftBalance.compareTo(BigDecimal.ZERO) < 0) { if (newGiftBalance.compareTo(BigDecimal.ZERO) < 0) {
log.warn("变更后赠送余额不能为负数"); log.warn("修改用户余额-变更后赠送余额不能为负数");
throw new BusinessException("", "变更后赠送余额不能为负数"); throw new BusinessException("", "变更后赠送余额不能为负数");
} }
// 记流水 // 记流水
@@ -315,9 +315,11 @@ public class MemberBasicInfoServiceImpl implements IMemberBasicInfoService {
// 修改数据库 // 修改数据库
int i = 0; int i = 0;
if (newPrincipalBalance != null || newGiftBalance != null) { if (newPrincipalBalance != null || newGiftBalance != null) {
log.info("修改用户余额-memberId:{}, walletCode:{}, newPrincipalBalance:{}, newGiftBalance:{}, version:{}"
, memberId, walletCode, newPrincipalBalance, newGiftBalance, walletInfo.getVersion());
i = memberBasicInfoMapper.updateMemberBalance(memberId, walletCode, newPrincipalBalance, newGiftBalance, walletInfo.getVersion()); i = memberBasicInfoMapper.updateMemberBalance(memberId, walletCode, newPrincipalBalance, newGiftBalance, walletInfo.getVersion());
if (i == 0) { if (i == 0) {
log.warn("修改余额失败, memberId:{}", memberId); log.warn("修改用户余额-修改余额失败, memberId:{}", memberId);
} }
} }
// 插入 member_wallet_log 表 // 插入 member_wallet_log 表

View File

@@ -591,13 +591,17 @@ public class DelayMerchantOrderLogic extends AbstractOrderLogic {
} }
// 查会员余额 // 查会员余额
MemberVO memberVO = memberBasicInfoService.queryMemberInfoByMemberId(dto.getMemberId()); // MemberVO memberVO = memberBasicInfoService.queryMemberInfoByMemberId(dto.getMemberId());
if (memberVO == null) { // if (memberVO == null) {
throw new BusinessException(ReturnCodeEnum.CODE_MEMBER_NOT_FOUND_ERROR); // throw new BusinessException(ReturnCodeEnum.CODE_MEMBER_NOT_FOUND_ERROR);
// }
MemberWalletInfo memberWalletInfo = memberWalletInfoService.selectByWalletCode(dto.getWalletCode());
if (memberWalletInfo == null) {
throw new BusinessException(ReturnCodeEnum.CODE_WALLET_NOT_FOUND_ERROR);
} }
// 校验退款金额 // 校验退款金额
BigDecimal principalBalance = memberVO.getPrincipalBalance(); BigDecimal principalBalance = memberWalletInfo.getPrincipalBalance();
BigDecimal refundAmount = dto.getRefundAmount(); BigDecimal refundAmount = dto.getRefundAmount();
if (refundAmount.compareTo(principalBalance) > 0) { if (refundAmount.compareTo(principalBalance) > 0) {
throw new BusinessException(ReturnCodeEnum.CODE_REFUND_MEMBER_BALANCE_ERROR); throw new BusinessException(ReturnCodeEnum.CODE_REFUND_MEMBER_BALANCE_ERROR);

View File

@@ -480,13 +480,18 @@ public class NotDelayMerchantOrderLogic extends AbstractOrderLogic{
} }
// 查会员余额 // 查会员余额
MemberVO memberVO = memberBasicInfoService.queryMemberInfoByMemberId(dto.getMemberId()); // MemberVO memberVO = memberBasicInfoService.queryMemberInfoByMemberId(dto.getMemberId());
if (memberVO == null) { // if (memberVO == null) {
throw new BusinessException(ReturnCodeEnum.CODE_MEMBER_NOT_FOUND_ERROR); // throw new BusinessException(ReturnCodeEnum.CODE_MEMBER_NOT_FOUND_ERROR);
// }
MemberWalletInfo memberWalletInfo = memberWalletInfoService.selectByWalletCode(dto.getWalletCode());
if (memberWalletInfo == null) {
throw new BusinessException(ReturnCodeEnum.CODE_WALLET_NOT_FOUND_ERROR);
} }
// 校验退款金额 // 校验退款金额
BigDecimal principalBalance = memberVO.getPrincipalBalance(); BigDecimal principalBalance = memberWalletInfo.getPrincipalBalance();
BigDecimal refundAmount = dto.getRefundAmount(); BigDecimal refundAmount = dto.getRefundAmount();
if (refundAmount.compareTo(principalBalance) > 0) { if (refundAmount.compareTo(principalBalance) > 0) {
throw new BusinessException(ReturnCodeEnum.CODE_REFUND_MEMBER_BALANCE_ERROR); throw new BusinessException(ReturnCodeEnum.CODE_REFUND_MEMBER_BALANCE_ERROR);