Commit 0a900b57 by vega

Merge branch 'fix/1.9.37-支付补偿通知transId为空报错'

parents ab5ccb9f 37cac631
package cn.freemud.entities.vo; package cn.freemud.entities.vo;
import lombok.Data; import lombok.Data;
import lombok.ToString;
@Data @Data
@ToString
public class RefundNotifyCallbackRequestVo { public class RefundNotifyCallbackRequestVo {
/** /**
* 第三方交易单号 * 第三方交易单号
......
...@@ -608,10 +608,14 @@ public class OrderServiceImpl implements Orderservice { ...@@ -608,10 +608,14 @@ public class OrderServiceImpl implements Orderservice {
//只有退款成功更新状态.其他情况不处理 //只有退款成功更新状态.其他情况不处理
return refundFaileMessage("pay refundStatus is not 100,refundStatus=" + refundStatus); return refundFaileMessage("pay refundStatus is not 100,refundStatus=" + refundStatus);
} }
// 如果transId为空,返回失败
if (StringUtils.isBlank(requestVo.getTransId())) {
return refundFaileMessage("transId is empty " + requestVo);
}
//查询订单详情 //查询订单详情
QueryRelationOrderByIdResponseDto queryOrderByIdResponseDto = getQueryRelationOrderByIdResponseDto(requestVo.getTransId()); QueryRelationOrderByIdResponseDto queryOrderByIdResponseDto = getQueryRelationOrderByIdResponseDto(requestVo.getTransId());
if (queryOrderByIdResponseDto.getData() == null || !Objects.equals(ResponseCodeConstant.RESPONSE_SUCCESS, queryOrderByIdResponseDto.getErrcode())) { if (queryOrderByIdResponseDto.getData() == null || !Objects.equals(ResponseCodeConstant.RESPONSE_SUCCESS, queryOrderByIdResponseDto.getErrcode())) {
return refundFaileMessage("order query fail" + queryOrderByIdResponseDto); return refundFaileMessage("order query fail " + queryOrderByIdResponseDto);
} }
OrderBean orderBean = new OrderBean(); OrderBean orderBean = new OrderBean();
......
...@@ -173,6 +173,24 @@ public class OrderControllerTest { ...@@ -173,6 +173,24 @@ public class OrderControllerTest {
} }
/** /**
* 退款回调
*/
@Test
public void refundNotifyCallback() {
RefundNotifyCallbackRequestVo request = new RefundNotifyCallbackRequestVo();
request.setRefundStatus(100);
request.setTransId("null");
String str = JSONObject.toJSONString(request);
try {
mockMvc.perform(post("/order/refundNotifyCallback").content(str).
contentType(MediaType.APPLICATION_JSON_UTF8).accept(MediaType.APPLICATION_JSON_UTF8)).andDo(print()).
andExpect(jsonPath("$.code").value("500"));
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 再来一单 * 再来一单
*/ */
@Test @Test
......
...@@ -24,6 +24,7 @@ public enum ResponseResultEnum { ...@@ -24,6 +24,7 @@ public enum ResponseResultEnum {
ORDER_DATA_NOT_FOUND("54001", "查询订单数据失败"), ORDER_DATA_NOT_FOUND("54001", "查询订单数据失败"),
ORDER_DATA_NOT_EXIST("54002", "没有相关数据"), ORDER_DATA_NOT_EXIST("54002", "没有相关数据"),
ORDER_STORE_NOT_FOUND("54003", "门店ID或门店名称不存在"), ORDER_STORE_NOT_FOUND("54003", "门店ID或门店名称不存在"),
ORDER_TRANS_ID_IS_NULL("54004", "transId为null"),
; ;
private String code; private String code;
......
package com.freemud.application.sdk.api.ordercenter.service; package com.freemud.application.sdk.api.ordercenter.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.freemud.application.sdk.api.base.BaseRequest; import com.freemud.application.sdk.api.base.BaseRequest;
import com.freemud.application.sdk.api.ordercenter.config.OrderCenterProperties; import com.freemud.application.sdk.api.ordercenter.config.OrderCenterProperties;
import com.freemud.application.sdk.api.ordercenter.constant.InterfaceAddressConstant; import com.freemud.application.sdk.api.ordercenter.constant.InterfaceAddressConstant;
import com.freemud.application.sdk.api.ordercenter.constant.ResponseConstant;
import com.freemud.application.sdk.api.ordercenter.enums.ResponseResultEnum; import com.freemud.application.sdk.api.ordercenter.enums.ResponseResultEnum;
import com.freemud.application.sdk.api.ordercenter.request.*; import com.freemud.application.sdk.api.ordercenter.request.*;
import com.freemud.application.sdk.api.ordercenter.request.carpark.ParkingOrderAffirmReq; import com.freemud.application.sdk.api.ordercenter.request.carpark.ParkingOrderAffirmReq;
...@@ -20,14 +23,17 @@ import com.freemud.application.sdk.api.ordercenter.util.ResponseUtil; ...@@ -20,14 +23,17 @@ import com.freemud.application.sdk.api.ordercenter.util.ResponseUtil;
import com.freemud.application.sdk.api.util.RequestThirdPartyUtils; import com.freemud.application.sdk.api.util.RequestThirdPartyUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.core.ParameterizedTypeReference; import org.springframework.core.ParameterizedTypeReference;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import java.util.List; import java.lang.reflect.InvocationTargetException;
import java.util.Objects; import java.util.*;
import java.util.stream.Collector;
import java.util.stream.Collectors;
import static com.freemud.application.sdk.api.ordercenter.constant.InterfaceAddressConstant.*; import static com.freemud.application.sdk.api.ordercenter.constant.InterfaceAddressConstant.*;
...@@ -600,12 +606,28 @@ public class OrderSdkService { ...@@ -600,12 +606,28 @@ public class OrderSdkService {
* @return * @return
*/ */
public BaseResponse<List<OrderInfoReqs>> queryRelatedOrderByCode(QueryRelatedOrderByCodeReq request, String trackingNo) { public BaseResponse<List<OrderInfoReqs>> queryRelatedOrderByCode(QueryRelatedOrderByCodeReq request, String trackingNo) {
StringBuilder urlString = new StringBuilder(InterfaceAddressConstant.QUERY_RELATED_ORDER_BY_CODE) if (StringUtils.isBlank(request.getOrderCode())) {
.append("?orderCode=").append(request.getOrderCode()); return ResponseUtil.error(ResponseResultEnum.ORDER_TRANS_ID_IS_NULL);
OrderBaseResp<List<OrderInfoReqs>> responseDTO = RequestThirdPartyUtils.httpGetReqComplex(restTemplate, urlString.toString(), }
createBaseRequest(null, trackingNo), new ParameterizedTypeReference<OrderBaseResp<List<OrderInfoReqs>>>() { String urlString = InterfaceAddressConstant.QUERY_RELATED_ORDER_BY_CODE + "?orderCode=" + request.getOrderCode();
}); OrderBaseResp responseDTO = RequestThirdPartyUtils.httpGetReqComplex(restTemplate, urlString,
return responseHandle(responseDTO); createBaseRequest(null, trackingNo), new ParameterizedTypeReference<OrderBaseResp>() {});
// 1.9.37 fix 原本使用自带序列化成list时如果基础服务查询失败返回object会抛异常,所以改成手动操作
OrderBaseResp<List<OrderInfoReqs>> resp;
if (Objects.isNull(responseDTO)) {
resp = null;
} else {
List<OrderInfoReqs> result;
if (Objects.equals(ResponseConstant.SUCCESS_RESPONSE_CODE, responseDTO.getCode()) && responseDTO.getResult() instanceof List) {
result = JSONArray.parseArray(JSON.toJSONString(responseDTO.getResult()), OrderInfoReqs.class);
} else {
result = Collections.emptyList();
}
resp = new OrderBaseResp<>();
BeanUtils.copyProperties(responseDTO, resp, "result");
resp.setResult(result);
}
return responseHandle(resp);
} }
private <T> BaseRequest<T> createBaseRequest(T req, String trackingNo) { private <T> BaseRequest<T> createBaseRequest(T req, String trackingNo) {
......
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