Commit dc7c70c9 by shuhu.hou@freemud.cn

Merge branch 'feature/20200518_退款退配送费' into develop

# Conflicts:
#	order-management/pom.xml
parents 71f1d51d a7884ed5
...@@ -7,6 +7,8 @@ import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse; ...@@ -7,6 +7,8 @@ import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.math.BigDecimal;
/** /**
* All rights Reserved, Designed By www.freemud.cn * All rights Reserved, Designed By www.freemud.cn
* *
...@@ -25,12 +27,12 @@ public class PaymentSdkAdapter { ...@@ -25,12 +27,12 @@ public class PaymentSdkAdapter {
@Value("${saas.refund.notify.callback}") @Value("${saas.refund.notify.callback}")
private String refundNotifyCallback; private String refundNotifyCallback;
public com.freemud.sdk.api.assortment.payment.request.OrderRefundRequest getOrderRefundRequest(QueryOrdersResponse.DataBean.OrderBean orderBean) { public com.freemud.sdk.api.assortment.payment.request.OrderRefundRequest getOrderRefundRequest(QueryOrdersResponse.DataBean.OrderBean orderBean, BigDecimal refundAmount) {
com.freemud.sdk.api.assortment.payment.request.OrderRefundRequest refundRequestDTO = new com.freemud.sdk.api.assortment.payment.request.OrderRefundRequest(); com.freemud.sdk.api.assortment.payment.request.OrderRefundRequest refundRequestDTO = new com.freemud.sdk.api.assortment.payment.request.OrderRefundRequest();
refundRequestDTO.setPartnerId(orderBean.getCompanyId()); refundRequestDTO.setPartnerId(orderBean.getCompanyId());
refundRequestDTO.setStoreId(orderBean.getShopId()); refundRequestDTO.setStoreId(orderBean.getShopId());
refundRequestDTO.setOrgTransId(orderBean.getOid()); refundRequestDTO.setOrgTransId(orderBean.getOid());
refundRequestDTO.setRefundAmount(orderBean.getAmount().longValue()); refundRequestDTO.setRefundAmount(refundAmount.longValue());
refundRequestDTO.setNotifyUrl(refundNotifyCallback); refundRequestDTO.setNotifyUrl(refundNotifyCallback);
OrderExtInfoDto orderExtInfoDto = JSONObject.parseObject(orderBean.getExtInfo(), OrderExtInfoDto.class); OrderExtInfoDto orderExtInfoDto = JSONObject.parseObject(orderBean.getExtInfo(), OrderExtInfoDto.class);
refundRequestDTO.setAppId(orderExtInfoDto.getAppid()); refundRequestDTO.setAppId(orderExtInfoDto.getAppid());
......
...@@ -224,9 +224,7 @@ public class OrderVerifyHandle { ...@@ -224,9 +224,7 @@ public class OrderVerifyHandle {
boolean isRefundDeliveryFee=false; boolean isRefundDeliveryFee=false;
//saas渠道订单,已完成的订单不能操作, 商户配置已完成订单可退款可退款 //saas渠道订单,已完成的订单不能操作, 商户配置已完成订单可退款可退款
if (ObjectUtils.equals(orderBean.getSource(), OrderSource.SAAS.getSource())) { if (ObjectUtils.equals(orderBean.getSource(), OrderSource.SAAS.getSource())) {
RefundConfig refundConfig = getRefundConfig(orderBean); isCanRefund = getRefundConfig(orderBean);
isCanRefund=refundConfig.isCanRefund();
isRefundDeliveryFee=refundConfig.isRefundDeliveryFee();
if (!isCanRefund) { if (!isCanRefund) {
return ResponseUtil.error(ResponseResult.ORDER_HAD_AFFIRM_CAN_NOT_REFUND); return ResponseUtil.error(ResponseResult.ORDER_HAD_AFFIRM_CAN_NOT_REFUND);
} }
...@@ -310,7 +308,7 @@ public class OrderVerifyHandle { ...@@ -310,7 +308,7 @@ public class OrderVerifyHandle {
* @param data * @param data
* @return true=可同意退款 * @return true=可同意退款
*/ */
private RefundConfig getRefundConfig(QueryOrdersResponse.DataBean.OrderBean data) { private boolean getRefundConfig(QueryOrdersResponse.DataBean.OrderBean data) {
boolean isFinishRefund = false; boolean isFinishRefund = false;
com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto extInfo = null; com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto extInfo = null;
JSONObject jsonObject1 = JSONObject.parseObject(data.getExtInfo()); JSONObject jsonObject1 = JSONObject.parseObject(data.getExtInfo());
...@@ -353,13 +351,7 @@ public class OrderVerifyHandle { ...@@ -353,13 +351,7 @@ public class OrderVerifyHandle {
break; break;
} }
boolean isRefundDeliveryFee = false; return isFinishRefund;
AssortmentOpenPlatformPartnerWxappConfig refundDeliveryFeeConfig = configMap.get(OrderRefundEnum.REFUND_DELIVERY_FEE_ENABLE.getKeyValue());
// 0、null表示 关闭 ; 1 表示开启
if (null != refundDeliveryFeeConfig && ALLOW_REFUND.equals(refundDeliveryFeeConfig.getAppValue())) {
isRefundDeliveryFee = true;
}
return new RefundConfig(isFinishRefund,isRefundDeliveryFee);
} }
/** /**
......
...@@ -7,15 +7,21 @@ import cn.freemud.management.enums.ResponseResult; ...@@ -7,15 +7,21 @@ import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.intercept.OrderServiceException; import cn.freemud.management.intercept.OrderServiceException;
import com.freemud.application.sdk.api.base.BaseResponse; import com.freemud.application.sdk.api.base.BaseResponse;
import com.freemud.application.sdk.api.log.ErrorLog; import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.AfterSalesOrderResp;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.sdk.api.assortment.order.enums.PayRefundStatus; import com.freemud.sdk.api.assortment.order.enums.PayRefundStatus;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse; import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import com.freemud.sdk.api.assortment.payment.request.OrderRefundRequest; import com.freemud.sdk.api.assortment.payment.request.OrderRefundRequest;
import com.freemud.sdk.api.assortment.payment.response.OrderRefundResponse; import com.freemud.sdk.api.assortment.payment.response.OrderRefundResponse;
import com.freemud.sdk.api.assortment.payment.service.StandardPaymentService; import com.freemud.sdk.api.assortment.payment.service.StandardPaymentService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.List;
/** /**
* All rights Reserved, Designed By www.freemud.cn * All rights Reserved, Designed By www.freemud.cn
* *
...@@ -37,6 +43,8 @@ public class PaymentHandle { ...@@ -37,6 +43,8 @@ public class PaymentHandle {
private StandardPaymentService standardPaymentService; private StandardPaymentService standardPaymentService;
@Autowired @Autowired
private PaymentSdkAdapter paymentSdkAdapter; private PaymentSdkAdapter paymentSdkAdapter;
@Autowired
private OrderSdkService orderSdkService;
/** /**
...@@ -47,7 +55,7 @@ public class PaymentHandle { ...@@ -47,7 +55,7 @@ public class PaymentHandle {
*/ */
public PayRefundResponse refund(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean){ public PayRefundResponse refund(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean){
PayRefundStatus refundStatus=PayRefundStatus.SUCCESS; PayRefundStatus refundStatus=PayRefundStatus.SUCCESS;
OrderRefundRequest orderRefundRequest = paymentSdkAdapter.getOrderRefundRequest(orderBean); OrderRefundRequest orderRefundRequest = paymentSdkAdapter.getOrderRefundRequest(orderBean,getRefundAmount(orderBean));
if (ObjectUtils.equals(orderBean.getAmount(), 0)) { if (ObjectUtils.equals(orderBean.getAmount(), 0)) {
return handlePayRefundResponse(refundStatus,orderRefundRequest.getRefundId()); return handlePayRefundResponse(refundStatus,orderRefundRequest.getRefundId());
} }
...@@ -68,6 +76,20 @@ public class PaymentHandle { ...@@ -68,6 +76,20 @@ public class PaymentHandle {
return handlePayRefundResponse(refundStatus,orderRefundRequest.getRefundId()); return handlePayRefundResponse(refundStatus,orderRefundRequest.getRefundId());
} }
/**
* 获取退款金额
*
* @param data
* @return
*/
private BigDecimal getRefundAmount(QueryOrdersResponse.DataBean.OrderBean data) {
BigDecimal refundAmount = new BigDecimal(data.getAmount());
com.freemud.application.sdk.api.ordercenter.response.BaseResponse<List<AfterSalesOrderResp>> listBaseResponse = orderSdkService.queryAfterSaleByOrderCode(data.getCompanyId(), data.getOid());
if (CollectionUtils.isNotEmpty(listBaseResponse.getResult())){
refundAmount=new BigDecimal(listBaseResponse.getResult().get(0).getActualAmount());
}
return refundAmount;
}
private PayRefundResponse handlePayRefundResponse(PayRefundStatus refundStatus, Long refundId){ private PayRefundResponse handlePayRefundResponse(PayRefundStatus refundStatus, Long refundId){
PayRefundResponse payRefundResponse = new PayRefundResponse(); PayRefundResponse payRefundResponse = new PayRefundResponse();
......
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