Commit ce5b4877 by shuhu.hou@freemud.cn

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

# Conflicts:
#	order-management/pom.xml
parents 4a44650b 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();
......
...@@ -100,6 +100,10 @@ public class InterfaceAddressConstant { ...@@ -100,6 +100,10 @@ public class InterfaceAddressConstant {
*/ */
public static final String BATCH_QUERY_AFTER_SALES = "afterSales/v2/batchQuery"; public static final String BATCH_QUERY_AFTER_SALES = "afterSales/v2/batchQuery";
/** /**
* 根据订单号查询售后单
*/
public static final String QUERY_AFTER_SALES_BY_ORDERCODE = "afterSales/v2/queryByOrder";
/**
* 查询关联订单 * 查询关联订单
*/ */
public static final String QUERY_RELATED_ORDER_BY_CODE = "order/v2/queryRelatedOrderByCode"; public static final String QUERY_RELATED_ORDER_BY_CODE = "order/v2/queryRelatedOrderByCode";
......
package com.freemud.application.sdk.api.ordercenter.request;
import lombok.Data;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: QueryAfterSalesByOrderCodeReq
* @Package com.freemud.application.sdk.api.ordercenter.request
* @Description:
* @author: shuhu.hou
* @date: 2020/5/18 15:26
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
public class QueryAfterSalesByOrderCodeReq {
/**
* 商户号
*/
private String partnerId;
/**
* 售后单号
*/
private String orderCode;
}
...@@ -9,6 +9,7 @@ import com.freemud.application.sdk.api.ordercenter.request.create.BatchQueryByCo ...@@ -9,6 +9,7 @@ import com.freemud.application.sdk.api.ordercenter.request.create.BatchQueryByCo
import com.freemud.application.sdk.api.ordercenter.request.create.CreateFatherSonOrderReq; import com.freemud.application.sdk.api.ordercenter.request.create.CreateFatherSonOrderReq;
import com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest; import com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest;
import com.freemud.application.sdk.api.ordercenter.response.*; import com.freemud.application.sdk.api.ordercenter.response.*;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.AfterSalesOrderResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.QueryByCodeResponse; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.QueryByCodeResponse;
import com.freemud.application.sdk.api.ordercenter.util.ResponseUtil; import com.freemud.application.sdk.api.ordercenter.util.ResponseUtil;
...@@ -461,6 +462,23 @@ public class OrderSdkService { ...@@ -461,6 +462,23 @@ public class OrderSdkService {
return createBaseResponse(responseDTO); return createBaseResponse(responseDTO);
} }
/**
* 根据订单号查询售后单
* @param partnerId
* @param orderCode
* @return
*/
public BaseResponse<List<AfterSalesOrderResp>> queryAfterSaleByOrderCode(String partnerId,String orderCode){
QueryAfterSalesByOrderCodeReq queryAfterSalesByOrderCodeReq = new QueryAfterSalesByOrderCodeReq();
queryAfterSalesByOrderCodeReq.setOrderCode(orderCode);
queryAfterSalesByOrderCodeReq.setPartnerId(partnerId);
OrderBaseResp<List<AfterSalesOrderResp>> responseDTO = RequestThirdPartyUtils.httpJsonReqComplexNew(restTemplate, InterfaceAddressConstant.QUERY_AFTER_SALES_BY_ORDERCODE,
createBaseRequest(queryAfterSalesByOrderCodeReq, ""), new ParameterizedTypeReference<OrderBaseResp<List<AfterSalesOrderResp>>>() {
});
return responseHandle(responseDTO);
}
private BaseResponse<BatchQueryAfterSalesResp> createBaseResponse(BatchQueryAfterSalesBaseResponse<AfterSalesPageResp> responseDTO) { private BaseResponse<BatchQueryAfterSalesResp> createBaseResponse(BatchQueryAfterSalesBaseResponse<AfterSalesPageResp> responseDTO) {
if (responseDTO == null) { if (responseDTO == null) {
return responseHandle(null); return responseHandle(null);
......
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