Commit e65b4205 by gaowenzheng

退款时查询售后单信息包含多次售后单信息,拒绝退款的状态进行过滤->测试

parent fa50e15d
...@@ -21,6 +21,7 @@ import com.freemud.application.sdk.api.base.BaseResponse; ...@@ -21,6 +21,7 @@ import com.freemud.application.sdk.api.base.BaseResponse;
import com.freemud.application.sdk.api.log.ApiLog; import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.ErrorLog; import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1; import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesStatus;
import com.freemud.application.sdk.api.ordercenter.enums.CashTypeEnum; import com.freemud.application.sdk.api.ordercenter.enums.CashTypeEnum;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType; import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.enums.PayMethodEnum; import com.freemud.application.sdk.api.ordercenter.enums.PayMethodEnum;
...@@ -42,6 +43,7 @@ import org.springframework.stereotype.Component; ...@@ -42,6 +43,7 @@ import org.springframework.stereotype.Component;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
...@@ -97,7 +99,15 @@ public class PaymentHandle { ...@@ -97,7 +99,15 @@ public class PaymentHandle {
// 最大可退金额 = 订单实付总额 - 开通会员卡金额 退款的时候会员卡已经开通了,所以开卡费不可退 // 最大可退金额 = 订单实付总额 - 开通会员卡金额 退款的时候会员卡已经开通了,所以开卡费不可退
BigDecimal maxRefundAmount = new BigDecimal(orderBean.getAmount()).subtract(openMemberCardCostAmount); BigDecimal maxRefundAmount = new BigDecimal(orderBean.getAmount()).subtract(openMemberCardCostAmount);
BigDecimal refundAmount = maxRefundAmount; BigDecimal refundAmount = maxRefundAmount;
AfterSalesOrderResp afterSalesOrder = getAfterSalesOrder(orderBean.getCompanyId(), orderBean.getOid()); List<AfterSalesOrderResp> afterSalesOrderList = getAfterSalesOrderList(orderBean.getCompanyId(), orderBean.getOid());
AfterSalesOrderResp afterSalesOrder = null;
if (CollectionUtils.isNotEmpty(afterSalesOrderList)) {
// 返回信息包含了多次售后单信息 应过滤掉拒绝退款的信息
List<AfterSalesOrderResp> list = afterSalesOrderList.stream().filter(item -> !item.getAfterSalesStatus().equals(AfterSalesStatus.REJECTED.getIndex())).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(list)) {
afterSalesOrder = list.get(0);
}
}
if (afterSalesOrder != null) { if (afterSalesOrder != null) {
refundAmount = new BigDecimal(afterSalesOrder.getActualAmount()); refundAmount = new BigDecimal(afterSalesOrder.getActualAmount());
} }
...@@ -176,9 +186,15 @@ public class PaymentHandle { ...@@ -176,9 +186,15 @@ public class PaymentHandle {
} }
BigDecimal maxRefundAmount = order.getSettlementAmount().subtract(openMemberCardCostAmount); BigDecimal maxRefundAmount = order.getSettlementAmount().subtract(openMemberCardCostAmount);
BigDecimal refundAmount = maxRefundAmount; BigDecimal refundAmount = maxRefundAmount;
AfterSalesOrderResp afterSalesOrder = getAfterSalesOrder(order.getPartnerId(), order.getOrderCode()); List<AfterSalesOrderResp> afterSalesOrderList = getAfterSalesOrderList(order.getPartnerId(), order.getOrderCode());
if (afterSalesOrder != null) { AfterSalesOrderResp afterSalesOrder = null;
refundAmount = new BigDecimal(afterSalesOrder.getActualAmount()); if (CollectionUtils.isNotEmpty(afterSalesOrderList)) {
// 返回信息包含了多次售后单信息 应过滤掉拒绝退款的信息
List<AfterSalesOrderResp> list = afterSalesOrderList.stream().filter(item -> !item.getAfterSalesStatus().equals(AfterSalesStatus.REJECTED.getIndex())).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(list)) {
afterSalesOrder = list.get(0);
refundAmount = new BigDecimal(afterSalesOrder.getActualAmount());
}
} }
PayRefundResponse multiRefundResponse = multiRefundService.multiRefund(order.getPartnerId(), order.getStoreId(), PayRefundResponse multiRefundResponse = multiRefundService.multiRefund(order.getPartnerId(), order.getStoreId(),
...@@ -339,7 +355,15 @@ public class PaymentHandle { ...@@ -339,7 +355,15 @@ public class PaymentHandle {
PayRefundStatus refundStatus = PayRefundStatus.SUCCESS; PayRefundStatus refundStatus = PayRefundStatus.SUCCESS;
BigDecimal refundAmount = new BigDecimal(orderBean.getAmount()); BigDecimal refundAmount = new BigDecimal(orderBean.getAmount());
AfterSalesOrderResp afterSalesOrder = getAfterSalesOrder(orderBean.getCompanyId(), orderBean.getOid()); List<AfterSalesOrderResp> afterSalesOrderList = getAfterSalesOrderList(orderBean.getCompanyId(), orderBean.getOid());
AfterSalesOrderResp afterSalesOrder = null;
if (CollectionUtils.isNotEmpty(afterSalesOrderList)) {
// 返回信息包含了多次售后单信息 应过滤掉拒绝退款的信息
List<AfterSalesOrderResp> list = afterSalesOrderList.stream().filter(item -> !item.getAfterSalesStatus().equals(AfterSalesStatus.REJECTED.getIndex())).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(list)) {
afterSalesOrder = list.get(0);
}
}
if (afterSalesOrder != null) { if (afterSalesOrder != null) {
refundAmount = new BigDecimal(afterSalesOrder.getActualAmount()); refundAmount = new BigDecimal(afterSalesOrder.getActualAmount());
} }
...@@ -412,6 +436,20 @@ public class PaymentHandle { ...@@ -412,6 +436,20 @@ public class PaymentHandle {
return null; return null;
} }
/**
* 获取退款售后单
* @param partnerId 商户号
* @param orderId 订单号
* @return {@link AfterSalesOrderResp}
*/
private List<AfterSalesOrderResp> getAfterSalesOrderList(String partnerId, String orderId) {
OrderBaseResp<List<AfterSalesOrderResp>> listBaseResponse = orderSdkService.queryAfterSaleByOrderCode(partnerId, orderId);
if (CollectionUtils.isNotEmpty(listBaseResponse.getResult())) {
return listBaseResponse.getResult();
}
return new ArrayList<>();
}
private PayRefundResponse handlePayRefundResponse(PayRefundStatus refundStatus, String refundId) { private PayRefundResponse handlePayRefundResponse(PayRefundStatus refundStatus, String refundId) {
PayRefundResponse payRefundResponse = new PayRefundResponse(); PayRefundResponse payRefundResponse = new PayRefundResponse();
payRefundResponse.setPayRefundStatus(refundStatus); payRefundResponse.setPayRefundStatus(refundStatus);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment