余额退款逻辑优化

This commit is contained in:
2023-08-23 11:50:29 +08:00
parent 471f740979
commit 4339a9be9a
2 changed files with 17 additions and 9 deletions

View File

@@ -1126,15 +1126,15 @@ public class OrderService {
log.info("支付撤销成功 data:{}", JSON.toJSONString(data)); log.info("支付撤销成功 data:{}", JSON.toJSONString(data));
JSONObject jsonObject = JSON.parseObject(data); JSONObject jsonObject = JSON.parseObject(data);
JSONObject reason = jsonObject.getJSONObject("reason"); JSONObject reason = jsonObject.getJSONObject("reason");
if (ScenarioEnum.BALANCE.getValue().equals(reason.getString("scenarioType"))) { // if (ScenarioEnum.BALANCE.getValue().equals(reason.getString("scenarioType"))) {
// 这笔支付订单原来是充值余额的,退款成功了,需要扣掉会员的本金金额 // // 这笔支付订单原来是充值余额的,退款成功了,需要扣掉会员的本金金额
UpdateMemberBalanceDTO dto = new UpdateMemberBalanceDTO(); // UpdateMemberBalanceDTO dto = new UpdateMemberBalanceDTO();
dto.setMemberId(reason.getString("memberId")); // dto.setMemberId(reason.getString("memberId"));
dto.setUpdatePrincipalBalance(new BigDecimal(jsonObject.getString("reverse_amt"))); // 更新会员本金金额,单位元 // dto.setUpdatePrincipalBalance(new BigDecimal(jsonObject.getString("reverse_amt"))); // 更新会员本金金额,单位元
dto.setType(MemberWalletEnum.TYPE_OUT.getValue()); // dto.setType(MemberWalletEnum.TYPE_OUT.getValue());
dto.setSubType(MemberWalletEnum.SUBTYPE_USER_REFUND.getValue()); // dto.setSubType(MemberWalletEnum.SUBTYPE_USER_REFUND.getValue());
memberBasicInfoService.updateMemberBalance(dto); // memberBasicInfoService.updateMemberBalance(dto);
} // }
} }

View File

@@ -2380,6 +2380,14 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
throw new BusinessException(ReturnCodeEnum.CODE_REFUND_MEMBER_BALANCE_ERROR); throw new BusinessException(ReturnCodeEnum.CODE_REFUND_MEMBER_BALANCE_ERROR);
} }
// 扣余额
UpdateMemberBalanceDTO updateMemberBalanceDTO = new UpdateMemberBalanceDTO();
updateMemberBalanceDTO.setMemberId(dto.getMemberId());
updateMemberBalanceDTO.setUpdatePrincipalBalance(refundAmount); // 更新会员本金金额,单位元
updateMemberBalanceDTO.setType(MemberWalletEnum.TYPE_OUT.getValue());
updateMemberBalanceDTO.setSubType(MemberWalletEnum.SUBTYPE_USER_REFUND.getValue());
memberBasicInfoService.updateMemberBalance(updateMemberBalanceDTO);
// 查询用户充值余额订单 过滤掉已经退款的充值订单 // 查询用户充值余额订单 过滤掉已经退款的充值订单
List<BalanceDeductionAmountVO> list = calculateTheBalanceDeductionAmount(dto.getMemberId(), refundAmount); List<BalanceDeductionAmountVO> list = calculateTheBalanceDeductionAmount(dto.getMemberId(), refundAmount);
for (BalanceDeductionAmountVO vo : list) { for (BalanceDeductionAmountVO vo : list) {