Commit b7771235 by 周晓航

Merge branch 'feature/zxh/重新对接支付退款响应-20220824' into develop

parents bf7a6f92 5261c948
...@@ -130,7 +130,7 @@ public class OrderCallBackConfig { ...@@ -130,7 +130,7 @@ public class OrderCallBackConfig {
/** /**
* 有数上报/ 支付门店 queue 绑定 * task-center-order-consumer服务 订单状态处理中心queue 优化原有相同queue代码
* *
* @return * @return
*/ */
......
package cn.freemud.config;
import cn.freemud.interceptor.FeignInterceptor;
import feign.RequestInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class FeignSupportConfig {
/**
* feign请求拦截器
*
* @return
*/
@Bean
public RequestInterceptor requestInterceptor(){
return new FeignInterceptor();
}
}
package cn.freemud.interceptor;
import cn.freemud.utils.AppLogUtil;
import com.alibaba.fastjson.JSON;
import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
@Configuration
public class FeignInterceptor implements RequestInterceptor {
@Value("${forward.feign.headers:x-forwarded-for, x-real-ip}")
private Set<String> needHeaders;
@Override
public void apply(RequestTemplate requestTemplate) {
HttpServletRequest httpServletRequest = this.getHttpServletRequest();
if (Objects.nonNull(httpServletRequest)) {
Map<String, String> headers = getHeaders(httpServletRequest);
for (String headerName : headers.keySet()) {
requestTemplate.header(headerName, getHeaders(getHttpServletRequest()).get(headerName));
}
}
}
private HttpServletRequest getHttpServletRequest() {
try {
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if (Objects.isNull(requestAttributes)) {
return null;
}
return requestAttributes.getRequest();
} catch (Exception e) {
AppLogUtil.errorLog("FeignInterceptor error {}", "", "", e);
return null;
}
}
private Map<String, String> getHeaders(HttpServletRequest request) {
Map<String, String> map = new LinkedHashMap<>();
Enumeration<String> enumeration = request.getHeaderNames();
while (enumeration.hasMoreElements()) {
String key = enumeration.nextElement();
if (needThisHeader(key)) {
String value = request.getHeader(key);
map.put(key, value);
}
}
AppLogUtil.printLog("clientIp for feign client info:" + JSON.toJSONString(map), "", "");
return map;
}
private boolean needThisHeader(String headerName) {
// TODO:过滤哪些header需要传递,千万不能把所有的header传下去
return needHeaders.contains(headerName);
}
}
...@@ -1409,7 +1409,7 @@ public class PayServiceImpl { ...@@ -1409,7 +1409,7 @@ public class PayServiceImpl {
refundRequest.setTotalAmount(refundRequest.getRefundAmount()); refundRequest.setTotalAmount(refundRequest.getRefundAmount());
} }
AssortmentOpenPlatformIappWxappStore wxAppStore = this.assortmentOpenPlatformIappWxappStoreManager.selectWxappStoreByWxAppIdAndStoreId(refundRequest.getAppId(), refundRequest.getStoreId(), payCode); // AssortmentOpenPlatformIappWxappStore wxAppStore = this.assortmentOpenPlatformIappWxappStoreManager.selectWxappStoreByWxAppIdAndStoreId(refundRequest.getAppId(), refundRequest.getStoreId(), payCode);
PayRefundRequestDto request = new PayRefundRequestDto(); PayRefundRequestDto request = new PayRefundRequestDto();
request.setStoreId(refundRequest.getStoreId()); request.setStoreId(refundRequest.getStoreId());
request.setStationId(refundRequest.getStationId()); request.setStationId(refundRequest.getStationId());
...@@ -1425,7 +1425,7 @@ public class PayServiceImpl { ...@@ -1425,7 +1425,7 @@ public class PayServiceImpl {
request.setPartnerId(refundRequest.getPartnerId()); request.setPartnerId(refundRequest.getPartnerId());
request.setVer(2); request.setVer(2);
request.setExtendParams(refundRequest.getExtendParams()); request.setExtendParams(refundRequest.getExtendParams());
com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> checkParam = this.checkParam(refundRequest.getPartnerId(), refundRequest.getStoreId(), refundRequest.getRefundAmount(), wxAppStore); com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> checkParam = this.checkParam(refundRequest.getPartnerId(), refundRequest.getStoreId(), refundRequest.getRefundAmount());
if (!Objects.equals(checkParam.getCode(), "100")) { if (!Objects.equals(checkParam.getCode(), "100")) {
return checkParam; return checkParam;
} else { } else {
...@@ -1478,7 +1478,7 @@ public class PayServiceImpl { ...@@ -1478,7 +1478,7 @@ public class PayServiceImpl {
} }
public com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> checkParam(String partnerId, String storeId, Long amount, AssortmentOpenPlatformIappWxappStore wxAppStore) { public com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> checkParam(String partnerId, String storeId, Long amount) {
if (StringUtils.isBlank(partnerId)) { if (StringUtils.isBlank(partnerId)) {
return ResponseUtils.error("501", "商户号不能为空"); return ResponseUtils.error("501", "商户号不能为空");
} else if (StringUtils.isBlank(storeId)) { } else if (StringUtils.isBlank(storeId)) {
...@@ -1486,7 +1486,7 @@ public class PayServiceImpl { ...@@ -1486,7 +1486,7 @@ public class PayServiceImpl {
} else if (amount == null) { } else if (amount == null) {
return ResponseUtils.error("501", "金额不能为空"); return ResponseUtils.error("501", "金额不能为空");
} else { } else {
return wxAppStore == null ? ResponseUtils.error("500", "支付信息没有配置") : ResponseUtils.success(); return ResponseUtils.success();
} }
} }
......
...@@ -650,21 +650,22 @@ public class OrderVerifyHandle { ...@@ -650,21 +650,22 @@ public class OrderVerifyHandle {
/** /**
* 获取已完成订单退款金额 * 获取已完成订单退款金额
* isRefundDeliveryFee 退款是否退配送费已在申请退款传到订单基础服务,取订单售后单中退款金额 actualAmount
*/ */
public BigDecimal getRefundAmount(OrderBeanV1 data,boolean isRefundDeliveryFee) { public BigDecimal getRefundAmount(OrderBeanV1 data,boolean isRefundDeliveryFee) {
//是否配置已完成订单可退款 //是否配置已完成订单可退款
BigDecimal refundAmount = new BigDecimal(data.getAmount()); BigDecimal refundAmount = new BigDecimal(data.getAmount());
if (isRefundDeliveryFee || isPayBySVC(data)){ // if (isRefundDeliveryFee || isPayBySVC(data)){
return refundAmount; // return refundAmount;
} // }
List<AccountBeanV1> accountList = data.getAccountList(); // List<AccountBeanV1> accountList = data.getAccountList();
if (CollectionUtils.isNotEmpty(accountList)) { // if (CollectionUtils.isNotEmpty(accountList)) {
for (AccountBeanV1 orderCostResp : accountList) { // for (AccountBeanV1 orderCostResp : accountList) {
if (orderCostResp.getType() == OldOrderAccountType.DELIVERY_AMOUNT.getCode()) { // if (orderCostResp.getType() == OldOrderAccountType.DELIVERY_AMOUNT.getCode()) {
refundAmount = new BigDecimal(data.getAmount().intValue() - orderCostResp.getPrice()); // refundAmount = new BigDecimal(data.getAmount().intValue() - orderCostResp.getPrice());
} // }
} // }
} // }
return refundAmount; return refundAmount;
} }
/** /**
......
...@@ -14,7 +14,6 @@ import cn.freemud.management.thirdparty.OMSPaymentClient; ...@@ -14,7 +14,6 @@ import cn.freemud.management.thirdparty.OMSPaymentClient;
import cn.freemud.management.util.RedisUtil; import cn.freemud.management.util.RedisUtil;
import cn.freemud.redis.RedisCache; import cn.freemud.redis.RedisCache;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformIappWxappStore;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformIappWxappStoreManager; import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformIappWxappStoreManager;
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;
...@@ -159,17 +158,16 @@ public class PaymentHandle { ...@@ -159,17 +158,16 @@ public class PaymentHandle {
MultiOrderRefundRequest multiOrderRefundRequest = paymentSdkAdapter.getMultiOrderPayRefundRequest(orderBean, getRefundAmount(orderBean)); MultiOrderRefundRequest multiOrderRefundRequest = paymentSdkAdapter.getMultiOrderPayRefundRequest(orderBean, getRefundAmount(orderBean));
MultiOrderRefundResponse multiOrderRefundResponse = mulitiPaymentClient.paymentApplicationRefund(multiOrderRefundRequest, orderBean.getCompanyId()); MultiOrderRefundResponse multiOrderRefundResponse = mulitiPaymentClient.paymentApplicationRefund(multiOrderRefundRequest, orderBean.getCompanyId());
String message = ""; String message = "";
if (multiOrderRefundResponse == null if (Objects.isNull(multiOrderRefundResponse) || multiOrderRefundResponse.getCode() != 200) {
|| multiOrderRefundResponse.getData() == null refundStatus = PayRefundStatus.FAIL;
|| !com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.ORDER_PAY_RESPONSE_SUCCESS.equals(multiOrderRefundResponse.getCode())) {
// fisherman 退款异常 也当做 退款中处理
refundStatus = PayRefundStatus.RUNNING;
} else { } else {
List<MultiOrderRefundResponse.RefundPlatformResponse> refundPlatformResponseList = multiOrderRefundResponse.getData().refundPlatformResponseList; MultiOrderRefundResponse.RefundPlatform data = multiOrderRefundResponse.getData();
if (null != refundPlatformResponseList && refundPlatformResponseList.size() > 0) { if (Objects.isNull(data) || CollectionUtils.isEmpty(data.refundPlatformResponseList)) {
refundStatus = PayRefundStatus.FAIL;
} else {
List<MultiOrderRefundResponse.RefundPlatformResponse> refundPlatformResponseList = data.refundPlatformResponseList;
redisCache.save(RedisUtil.getPaymentTransIdSequenceKey(refundPlatformResponseList.get(0).getTransId()), orderBean.getOid(), 1L, TimeUnit.DAYS); redisCache.save(RedisUtil.getPaymentTransIdSequenceKey(refundPlatformResponseList.get(0).getTransId()), orderBean.getOid(), 1L, TimeUnit.DAYS);
}
if (CollectionUtils.isNotEmpty(refundPlatformResponseList)) {
long refundError = refundPlatformResponseList.stream() long refundError = refundPlatformResponseList.stream()
.filter(s -> s.getResultCode().compareTo(MultiOrderRefundResponse.RefundPlatformResponse.REFUNDED_RESULTCODE) != 0 .filter(s -> s.getResultCode().compareTo(MultiOrderRefundResponse.RefundPlatformResponse.REFUNDED_RESULTCODE) != 0
&& s.getResultCode().compareTo(MultiOrderRefundResponse.RefundPlatformResponse.REFUND_SUCCESS) != 0) && s.getResultCode().compareTo(MultiOrderRefundResponse.RefundPlatformResponse.REFUND_SUCCESS) != 0)
...@@ -191,6 +189,7 @@ public class PaymentHandle { ...@@ -191,6 +189,7 @@ public class PaymentHandle {
} }
} }
} }
PayRefundResponse payRefundResponse = handlePayRefundResponse(refundStatus, multiOrderRefundRequest.getRefundTradeNo()); PayRefundResponse payRefundResponse = handlePayRefundResponse(refundStatus, multiOrderRefundRequest.getRefundTradeNo());
if (StringUtils.isNotEmpty(message)) { if (StringUtils.isNotEmpty(message)) {
payRefundResponse.setMessage(message); payRefundResponse.setMessage(message);
...@@ -211,7 +210,7 @@ public class PaymentHandle { ...@@ -211,7 +210,7 @@ public class PaymentHandle {
AgentPayRefundReq req = paymentSdkAdapter.getAgentPayefundReq(orderBean, this.getRefundAmount(orderBean)); AgentPayRefundReq req = paymentSdkAdapter.getAgentPayefundReq(orderBean, this.getRefundAmount(orderBean));
AgentPayRefundResp resp = mulitiPaymentClient.agentPayRefund(req); AgentPayRefundResp resp = mulitiPaymentClient.agentPayRefund(req);
if (!resp.isOk()) { if (!resp.isOk()) {
refundStatus = PayRefundStatus.RUNNING; refundStatus = PayRefundStatus.FAIL;
} }
AgentPayRefundResp.DataDTO data = resp.getData(); AgentPayRefundResp.DataDTO data = resp.getData();
if (Objects.nonNull(data)) { if (Objects.nonNull(data)) {
...@@ -243,7 +242,7 @@ public class PaymentHandle { ...@@ -243,7 +242,7 @@ public class PaymentHandle {
if (refundRequest.getTotalAmount() == null || refundRequest.getTotalAmount() == 0L) { if (refundRequest.getTotalAmount() == null || refundRequest.getTotalAmount() == 0L) {
refundRequest.setTotalAmount(refundRequest.getRefundAmount()); refundRequest.setTotalAmount(refundRequest.getRefundAmount());
} }
AssortmentOpenPlatformIappWxappStore wxAppStore = this.assortmentOpenPlatformIappWxappStoreManager.selectWxappStoreByWxAppIdAndStoreId(refundRequest.getAppId(), refundRequest.getStoreId(), payCode); // AssortmentOpenPlatformIappWxappStore wxAppStore = this.assortmentOpenPlatformIappWxappStoreManager.selectWxappStoreByWxAppIdAndStoreId(refundRequest.getAppId(), refundRequest.getStoreId(), payCode);
PayRefundRequestDto request = new PayRefundRequestDto(); PayRefundRequestDto request = new PayRefundRequestDto();
request.setStoreId(refundRequest.getStoreId()); request.setStoreId(refundRequest.getStoreId());
request.setStationId(refundRequest.getStationId()); request.setStationId(refundRequest.getStationId());
...@@ -259,7 +258,7 @@ public class PaymentHandle { ...@@ -259,7 +258,7 @@ public class PaymentHandle {
request.setPartnerId(refundRequest.getPartnerId()); request.setPartnerId(refundRequest.getPartnerId());
request.setVer(2); request.setVer(2);
request.setExtendParams(refundRequest.getExtendParams()); request.setExtendParams(refundRequest.getExtendParams());
com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> checkParam = this.checkParam(refundRequest.getPartnerId(), refundRequest.getStoreId(), refundRequest.getRefundAmount(), wxAppStore); com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> checkParam = this.checkParam(refundRequest.getPartnerId(), refundRequest.getStoreId(), refundRequest.getRefundAmount());
if (!Objects.equals(checkParam.getCode(), "100")) { if (!Objects.equals(checkParam.getCode(), "100")) {
return null; return null;
} }
...@@ -433,7 +432,7 @@ public class PaymentHandle { ...@@ -433,7 +432,7 @@ public class PaymentHandle {
} }
private com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> checkParam(String partnerId, String storeId, Long amount, AssortmentOpenPlatformIappWxappStore wxAppStore) { private com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> checkParam(String partnerId, String storeId, Long amount) {
if (StringUtils.isBlank(partnerId)) { if (StringUtils.isBlank(partnerId)) {
return ResponseUtils.error("501", "商户号不能为空"); return ResponseUtils.error("501", "商户号不能为空");
} else if (StringUtils.isBlank(storeId)) { } else if (StringUtils.isBlank(storeId)) {
...@@ -441,7 +440,7 @@ public class PaymentHandle { ...@@ -441,7 +440,7 @@ public class PaymentHandle {
} else if (amount == null) { } else if (amount == null) {
return ResponseUtils.error("501", "金额不能为空"); return ResponseUtils.error("501", "金额不能为空");
} else { } else {
return wxAppStore == null ? ResponseUtils.error("500", "支付信息没有配置") : ResponseUtils.success(); return ResponseUtils.success();
} }
} }
......
...@@ -3,6 +3,7 @@ package cn.freemud.management.service.handle; ...@@ -3,6 +3,7 @@ package cn.freemud.management.service.handle;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest; import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.pay.PayRefundResponse; import cn.freemud.management.entities.dto.response.pay.PayRefundResponse;
import cn.freemud.management.enums.AfterSalesApplyClientEnum;
import cn.freemud.management.enums.ResponseResult; import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.intercept.OrderServiceException; import cn.freemud.management.intercept.OrderServiceException;
import cn.freemud.management.util.ResponseUtil; import cn.freemud.management.util.ResponseUtil;
...@@ -11,12 +12,14 @@ import com.freemud.application.sdk.api.log.LogThreadLocal; ...@@ -11,12 +12,14 @@ import com.freemud.application.sdk.api.log.LogThreadLocal;
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.entities.vo.OrderCallBackRequestVo; import com.freemud.application.sdk.api.ordercenter.entities.vo.OrderCallBackRequestVo;
import com.freemud.application.sdk.api.ordercenter.enums.orderv1.RefundStatusV1; import com.freemud.application.sdk.api.ordercenter.enums.orderv1.RefundStatusV1;
import com.freemud.application.sdk.api.ordercenter.request.AfterSalesRefundFailReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderModifyRelatingCodeReq; import com.freemud.application.sdk.api.ordercenter.request.OrderModifyRelatingCodeReq;
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.service.OrderSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter; import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter;
import com.freemud.sdk.api.assortment.order.entities.other.OtherParamDTO; import com.freemud.sdk.api.assortment.order.entities.other.OtherParamDTO;
import com.freemud.sdk.api.assortment.order.enums.AfterSalesRefunStateEnum;
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.request.order.BaseQueryOrderRequest; import com.freemud.sdk.api.assortment.order.request.order.BaseQueryOrderRequest;
import com.freemud.sdk.api.assortment.order.request.order.CancelOrderRequest; import com.freemud.sdk.api.assortment.order.request.order.CancelOrderRequest;
...@@ -75,7 +78,7 @@ public class SaasOrderHandle { ...@@ -75,7 +78,7 @@ public class SaasOrderHandle {
dto.setDispatchTimeout(request.getDispatchTimeout()); dto.setDispatchTimeout(request.getDispatchTimeout());
BaseQueryOrderRequest orderConfirmRequest = orderSdkAdapter.getOrderConfirmRequest(request.getOperator(), orderBean, dto); BaseQueryOrderRequest orderConfirmRequest = orderSdkAdapter.getOrderConfirmRequest(request.getOperator(), orderBean, dto);
orderSdkAdapter.convert2wmDeliveryTimeOut(orderConfirmRequest,this.wmDeliveryTimeOut); orderSdkAdapter.convert2wmDeliveryTimeOut(orderConfirmRequest, this.wmDeliveryTimeOut);
if (Objects.nonNull(request.getTimeout())) { if (Objects.nonNull(request.getTimeout())) {
orderConfirmRequest.setPreTimeout(request.getTimeout()); orderConfirmRequest.setPreTimeout(request.getTimeout());
} }
...@@ -97,13 +100,14 @@ public class SaasOrderHandle { ...@@ -97,13 +100,14 @@ public class SaasOrderHandle {
/** /**
* 更新取餐码 * 更新取餐码
*
* @param request * @param request
* @param orderBean * @param orderBean
* @return * @return
*/ */
public BaseResponse updatePickUpGoodNo(OrderManagerRequest request, OrderBeanV1 orderBean) { public BaseResponse updatePickUpGoodNo(OrderManagerRequest request, OrderBeanV1 orderBean) {
// 更新取餐码 // 更新取餐码
OrderModifyRelatingCodeReq relatingCodeReq =new OrderModifyRelatingCodeReq(); OrderModifyRelatingCodeReq relatingCodeReq = new OrderModifyRelatingCodeReq();
relatingCodeReq.setOrderCode(orderBean.getOid()); relatingCodeReq.setOrderCode(orderBean.getOid());
relatingCodeReq.setOperator(request.getOperator()); relatingCodeReq.setOperator(request.getOperator());
relatingCodeReq.setPartnerId(request.getPartnerId()); relatingCodeReq.setPartnerId(request.getPartnerId());
...@@ -145,7 +149,7 @@ public class SaasOrderHandle { ...@@ -145,7 +149,7 @@ public class SaasOrderHandle {
*/ */
public BaseResponse orderDelivery(OrderManagerRequest request, OrderBeanV1 orderBean) { public BaseResponse orderDelivery(OrderManagerRequest request, OrderBeanV1 orderBean) {
BaseQueryOrderRequest orderDeliveryRequest = orderSdkAdapter.getOrderConfirmRequest(request.getOperator(), orderBean); BaseQueryOrderRequest orderDeliveryRequest = orderSdkAdapter.getOrderConfirmRequest(request.getOperator(), orderBean);
orderDeliveryRequest = orderSdkAdapter.convert2wmDeliveryTimeOut(orderDeliveryRequest,this.wmDeliveryTimeOut); orderDeliveryRequest = orderSdkAdapter.convert2wmDeliveryTimeOut(orderDeliveryRequest, this.wmDeliveryTimeOut);
BaseOrderResponse baseOrderResponse = orderCenterSdkService.orderSend(orderDeliveryRequest); BaseOrderResponse baseOrderResponse = orderCenterSdkService.orderSend(orderDeliveryRequest);
if (baseOrderResponse == null || ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), baseOrderResponse.getErrcode().toString())) { if (baseOrderResponse == null || ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), baseOrderResponse.getErrcode().toString())) {
return ResponseUtil.error(ResponseResult.DELIVERY_FAIL); return ResponseUtil.error(ResponseResult.DELIVERY_FAIL);
...@@ -220,11 +224,16 @@ public class SaasOrderHandle { ...@@ -220,11 +224,16 @@ public class SaasOrderHandle {
refundAgreeRequest.setOperationClient(request.getOperationClient()); refundAgreeRequest.setOperationClient(request.getOperationClient());
BaseOrderResponse baseOrderResponse = null; BaseOrderResponse baseOrderResponse = null;
if (PayRefundStatus.SUCCESS.equals(refundResponse.getPayRefundStatus())) { if (PayRefundStatus.SUCCESS.equals(refundResponse.getPayRefundStatus())) {
// fisherman 判断是否在退款中, 如果是退款中 调用退货完成
if (orderBean.getAfterSalesOrderResp().getAfterSalesStatus().compareTo(AfterSalesRefunStateEnum.STATE_1.getIndex()) != 0) {
baseOrderResponse = orderCenterSdkService.orderRefundComplete(refundAgreeRequest);
} else {
baseOrderResponse = orderCenterSdkService.refundComplete(refundAgreeRequest); baseOrderResponse = orderCenterSdkService.refundComplete(refundAgreeRequest);
} else if(PayRefundStatus.RUNNING.equals(refundResponse.getPayRefundStatus()) && orderBean.getAfterSalesOrderResp().getAfterSalesStatus() != 4){ }
} else if (PayRefundStatus.RUNNING.equals(refundResponse.getPayRefundStatus()) && orderBean.getAfterSalesOrderResp().getAfterSalesStatus() != 4) {
//退款中, 基础服务售后状态不能为4,等待商家再次发起同意退款 //退款中, 基础服务售后状态不能为4,等待商家再次发起同意退款
baseOrderResponse = orderCenterSdkService.refundReturn(refundAgreeRequest); baseOrderResponse = orderCenterSdkService.refundReturn(refundAgreeRequest);
}else { } else {
return ResponseUtil.success(); return ResponseUtil.success();
} }
if (baseOrderResponse == null || ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), baseOrderResponse.getErrcode().toString())) { if (baseOrderResponse == null || ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), baseOrderResponse.getErrcode().toString())) {
...@@ -234,6 +243,42 @@ public class SaasOrderHandle { ...@@ -234,6 +243,42 @@ public class SaasOrderHandle {
} }
/** /**
* 处理支付 退款回调 订单业务处理
*
* @param request
* @param refundResponse
* @param orderBean
*/
public void refundAgreeByCallback(OrderManagerRequest request, PayRefundResponse refundResponse, OrderBeanV1 orderBean) {
BaseQueryOrderRequest refundAgreeRequest = orderSdkAdapter.getRefundAgreeRequest(refundResponse.getRefundId(), request.getReason(), request.getOperator(), orderBean);
refundAgreeRequest.setRefundState(PayRefundStatus.SUCCESS.getCode().equals(refundResponse.getPayRefundStatus().getCode()) ? 4 : 2);
refundAgreeRequest.setOperationClient(request.getOperationClient());
PayRefundStatus payRefundStatus = refundResponse.getPayRefundStatus();
if (payRefundStatus.getCode().equals(PayRefundStatus.SUCCESS.getCode())) {
// 退款成功 调用 -> /afterSales/v2/adultRefundComplete
orderCenterSdkService.orderRefundComplete(refundAgreeRequest);
} else {
// 退款失败 只记录失败日志
AfterSalesRefundFailReq refundFailReq = this.getAfterSalesRefundFailReq(orderBean,
"refundSuccessCallback",
AfterSalesApplyClientEnum.STATE_6.getIndex(),
refundResponse.getMessage());
orderSdkService.refundFail(refundFailReq, LogThreadLocal.getTrackingNo());
}
}
private AfterSalesRefundFailReq getAfterSalesRefundFailReq(OrderBeanV1 orderBean, String operator, Integer operationClient, String refundFailReason) {
AfterSalesRefundFailReq refundFailReq = new AfterSalesRefundFailReq();
refundFailReq.setOrderCode(orderBean.getOid());
refundFailReq.setPartnerId(orderBean.getCompanyId());
refundFailReq.setRefundFailReason(refundFailReason);
refundFailReq.setAfterSalesCode(orderBean.getAfterSalesOrderResp().getAfterSalesCode());
refundFailReq.setOperationClient(operationClient);
refundFailReq.setOperator(operator);
return refundFailReq;
}
/**
* 麦咖啡同意退款 * 麦咖啡同意退款
* *
* @param request * @param request
...@@ -287,6 +332,7 @@ public class SaasOrderHandle { ...@@ -287,6 +332,7 @@ public class SaasOrderHandle {
/** /**
* 拒绝退款 * 拒绝退款
*
* @param request * @param request
* @param orderBean * @param orderBean
* @return * @return
...@@ -303,6 +349,7 @@ public class SaasOrderHandle { ...@@ -303,6 +349,7 @@ public class SaasOrderHandle {
/** /**
* 麦咖啡拒绝退款 * 麦咖啡拒绝退款
*
* @param request * @param request
* @param orderBean * @param orderBean
* @return * @return
...@@ -310,7 +357,7 @@ public class SaasOrderHandle { ...@@ -310,7 +357,7 @@ public class SaasOrderHandle {
public BaseResponse mcCafeRefundReject(OrderManagerRequest request, OrderBeanV1 orderBean) { public BaseResponse mcCafeRefundReject(OrderManagerRequest request, OrderBeanV1 orderBean) {
CancelOrderRequest rejectRefundRequest = orderSdkAdapter.getRejectRefundRequest(request.getOperator(), request.getReason(), orderBean); CancelOrderRequest rejectRefundRequest = orderSdkAdapter.getRejectRefundRequest(request.getOperator(), request.getReason(), orderBean);
BaseOrderResponse baseOrderResponse = null; BaseOrderResponse baseOrderResponse = null;
for(int i=0;i<orderBean.getRefundList().size();i++) { for (int i = 0; i < orderBean.getRefundList().size(); i++) {
if (RefundStatusV1.APPLY_REFUND.getCodeV1().equals(orderBean.getRefundList().get(i).getStatus())) { if (RefundStatusV1.APPLY_REFUND.getCodeV1().equals(orderBean.getRefundList().get(i).getStatus())) {
rejectRefundRequest.setAfterSalesCode(orderBean.getRefundList().get(i).getRid()); rejectRefundRequest.setAfterSalesCode(orderBean.getRefundList().get(i).getRid());
...@@ -333,7 +380,7 @@ public class SaasOrderHandle { ...@@ -333,7 +380,7 @@ public class SaasOrderHandle {
* 取消订单 * 取消订单
*/ */
@Deprecated @Deprecated
public BaseResponse orderCancel(OrderManagerRequest request, PayRefundResponse refundResponse,OrderBeanV1 orderBean) { public BaseResponse orderCancel(OrderManagerRequest request, PayRefundResponse refundResponse, OrderBeanV1 orderBean) {
//作废订单 //作废订单
CancelOrderRequest cancelOrderRequest = orderSdkAdapter.getCancelOrderRequest(request.getOperator(), request.getReason(), refundResponse.getPayRefundStatus(), refundResponse.getRefundId(), orderBean); CancelOrderRequest cancelOrderRequest = orderSdkAdapter.getCancelOrderRequest(request.getOperator(), request.getReason(), refundResponse.getPayRefundStatus(), refundResponse.getRefundId(), orderBean);
BaseOrderResponse baseOrderResponse = orderCenterSdkService.orderCancel(cancelOrderRequest); BaseOrderResponse baseOrderResponse = orderCenterSdkService.orderCancel(cancelOrderRequest);
...@@ -345,6 +392,7 @@ public class SaasOrderHandle { ...@@ -345,6 +392,7 @@ public class SaasOrderHandle {
/** /**
* 转换成callback消息体 * 转换成callback消息体
*
* @param orderCode 订单编号 * @param orderCode 订单编号
* @param orderState cn.freemud.shared.order.enums.order.OrderStatus.API_DESC="订单状态 1:待支付 2:下单 3:已接单 4:制作完成(待发货) 5:配送中 6:已完 7:已关闭"; * @param orderState cn.freemud.shared.order.enums.order.OrderStatus.API_DESC="订单状态 1:待支付 2:下单 3:已接单 4:制作完成(待发货) 5:配送中 6:已完 7:已关闭";
* @param operateType 操作类型 0= 其他信息修改,1=订单正向操作,2=订单逆向操作,3=通知消息 * @param operateType 操作类型 0= 其他信息修改,1=订单正向操作,2=订单逆向操作,3=通知消息
...@@ -377,4 +425,5 @@ public class SaasOrderHandle { ...@@ -377,4 +425,5 @@ public class SaasOrderHandle {
return notifyDto; return notifyDto;
} }
} }
...@@ -473,12 +473,6 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -473,12 +473,6 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
PayRefundStatus payRefundStatus = PayRefundStatus.SUCCESS; PayRefundStatus payRefundStatus = PayRefundStatus.SUCCESS;
if (!Objects.equals(refundStatus, "100")) { if (!Objects.equals(refundStatus, "100")) {
payRefundStatus = PayRefundStatus.FAIL; payRefundStatus = PayRefundStatus.FAIL;
// 告知基础服务 退款失败
AfterSalesRefundFailReq refundFailReq = this.getAfterSalesRefundFailReq(orderBean,
"refundSuccessCallback",
AfterSalesApplyClientEnum.STATE_6.getIndex(),
refundResponse.getMessage());
orderSdkService.refundFail(refundFailReq, LogThreadLocal.getTrackingNo());
} }
refundResponse.setPayRefundStatus(payRefundStatus); refundResponse.setPayRefundStatus(payRefundStatus);
refundResponse.setRefundId(request.getRefundId()); refundResponse.setRefundId(request.getRefundId());
...@@ -486,7 +480,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -486,7 +480,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
OrderManagerRequest omRequest = new OrderManagerRequest(); OrderManagerRequest omRequest = new OrderManagerRequest();
omRequest.setReason(reason); omRequest.setReason(reason);
omRequest.setOperator("支付退款回调系统补偿"); omRequest.setOperator("支付退款回调系统补偿");
saasOrderHandle.refundAgree(omRequest, refundResponse, orderBean); saasOrderHandle.refundAgreeByCallback(omRequest, refundResponse, orderBean);
// 退款失败 不应该走 冲正逻辑 // 退款失败 不应该走 冲正逻辑
if (payRefundStatus.getCode().compareTo(PayRefundStatus.SUCCESS.getCode()) != 0) { if (payRefundStatus.getCode().compareTo(PayRefundStatus.SUCCESS.getCode()) != 0) {
......
...@@ -121,7 +121,10 @@ public class CalculationSharingEquallyService { ...@@ -121,7 +121,10 @@ public class CalculationSharingEquallyService {
Goods find = null; Goods find = null;
for (CartGoods product : shoppingCartGoodsResponseVo.getProducts()) { for (CartGoods product : shoppingCartGoodsResponseVo.getProducts()) {
if (goods!=null) { if (goods!=null) {
find = goods.stream().filter((k) -> k.getCartGoodsUid().equals(product.getCartGoodsUid())).findFirst().orElseGet(null); Optional<Goods> first = goods.stream().filter((k) -> k.getCartGoodsUid().equals(product.getCartGoodsUid())).findFirst();
if (first.isPresent()) {
find = first.get();
}
} }
ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto = calculationCommonService.convertCartGoods2DetailGoodsList(find, product,shoppingCartInfoRequestVo.getPartnerId()); ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto = calculationCommonService.convertCartGoods2DetailGoodsList(find, product,shoppingCartInfoRequestVo.getPartnerId());
cartGoodsDetailDtoList.add(cartGoodsDetailDto); cartGoodsDetailDtoList.add(cartGoodsDetailDto);
......
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