余额退款

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_WALLET_NOT_FOUND_ERROR("00100060", "未查询会员钱包信息"),
/* 个人桩 start */
CODE_PILE_HAS_BEEN_BINDING_ERROR("00400001", "此桩已被绑定,请联系管理员!"),

View File

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

View File

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

View File

@@ -591,13 +591,17 @@ public class DelayMerchantOrderLogic extends AbstractOrderLogic {
}
// 查会员余额
MemberVO memberVO = memberBasicInfoService.queryMemberInfoByMemberId(dto.getMemberId());
if (memberVO == null) {
throw new BusinessException(ReturnCodeEnum.CODE_MEMBER_NOT_FOUND_ERROR);
// MemberVO memberVO = memberBasicInfoService.queryMemberInfoByMemberId(dto.getMemberId());
// if (memberVO == null) {
// 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();
if (refundAmount.compareTo(principalBalance) > 0) {
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());
if (memberVO == null) {
throw new BusinessException(ReturnCodeEnum.CODE_MEMBER_NOT_FOUND_ERROR);
// MemberVO memberVO = memberBasicInfoService.queryMemberInfoByMemberId(dto.getMemberId());
// if (memberVO == null) {
// 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();
if (refundAmount.compareTo(principalBalance) > 0) {
throw new BusinessException(ReturnCodeEnum.CODE_REFUND_MEMBER_BALANCE_ERROR);