Commit b2aab53f by 周晓航

【订C】新增订单退款成功回调接口,需要修改售后单状态(原因:发起退款时支付那边可能是退款中状态,定时任务补偿后需要回调订单)

parent b85b4c71
package com.freemud.sdk.api.assortment.order.response.order;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
......@@ -22,7 +23,16 @@ public class MultiOrderRefundResponse<T> {
}
@Data
public static class RefundPlatformResponse{
public static class RefundPlatformResponse {
/**
* 退款中状态码需要单独处理
*/
public static Integer REFUNDED_RESULTCODE = 8200305;
/**
* 退款成功
*/
public static Integer REFUND_SUCCESS = 100;
private String endTransTradeNo;
private String fmRefundNo;
private String fmTradeNo;
......@@ -39,5 +49,11 @@ public class MultiOrderRefundResponse<T> {
private Integer totalAmount;
private String transId;
private String ebcode;
@ApiModelProperty(value = "业务返回码 8200305 代表退款中 100是成功 其他 都是失败")
private Integer resultCode;
@ApiModelProperty(value = "业务返回消息")
private String resultMsg;
}
}
\ No newline at end of file
......@@ -556,5 +556,16 @@ public class OrderController {
return ResponseUtil.success(orderAdapterService.getOrderConfig(request));
}
/**
* 同意退款, 支付服务退款失败的补偿接口
*
* 退款成功会回调该接口进行后续流程补偿
*/
@IsConvertEN
@ApiAnnotation(logMessage = "/order/refund/callback")
@PostMapping("/refund/callback")
public BaseResponse refundSuccessCallback(@Validated @LogParams @RequestBody RefundSuccessCallbackVo req) {
return orderAdapterService.refundSuccessCallback(req);
}
}
package cn.freemud.entities.vo;
import javax.validation.constraints.NotBlank;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2022/6/8 17:38
* @description :
*/
public class RefundSuccessCallbackVo {
/**
* 商户号
*/
@NotBlank(message = "商户号不能为空")
private String partnerId;
/**
* 订单号
*/
@NotBlank(message = "订单编号不能为空")
private String orderCode;
/**
* 退款序列号
*/
private String refundId;
}
......@@ -108,7 +108,7 @@ public class OrderAdapterServiceImpl {
@Autowired
private MCCafeOrderService mcCafeOrderService;
// private UniversalOrderService universalOrderService;
// private UniversalOrderService universalOrderService;
@Autowired
private CreateOrderServiceFactory createOrderServiceFactory;
@Autowired
......@@ -152,7 +152,7 @@ public class OrderAdapterServiceImpl {
private SvcTransactionClient svcTransactionClient;
//获取下单实现对象
private OrderFactoryService getCreateOrderBean(AssortmentCustomerInfoVo assortmentCustomerInfoVo,CreateOrderVo createOrderVo){
private OrderFactoryService getCreateOrderBean(AssortmentCustomerInfoVo assortmentCustomerInfoVo, CreateOrderVo createOrderVo) {
// 扩展字段中存储 sessionKey
createOrderVo.setSessionKey(assortmentCustomerInfoVo.getSessionKey());
if (IappIdType.WC_XCX.getCode().equals(assortmentCustomerInfoVo.getIappId())) { //i围餐
......@@ -174,7 +174,7 @@ public class OrderAdapterServiceImpl {
}
//抖音卖券
if (Objects.equals(BizTypeEnum.SALE_COUPON.getBizType(),createOrderVo.getBizType())) {
if (Objects.equals(BizTypeEnum.SALE_COUPON.getBizType(), createOrderVo.getBizType())) {
return sellCouponOrderServiceImpl;
}
return orderService;
......@@ -183,6 +183,7 @@ public class OrderAdapterServiceImpl {
/**
* 创建无单 收银订单
* 不需要查询购物车,没有商品,流程上 只需要创建一个订单然后唤起预支付就行了
*
* @param createOrderDto 请求信息
*/
public CreateOrderResponseVo createCashierOrder(CreateCashierOrderDto createOrderDto) {
......@@ -220,7 +221,7 @@ public class OrderAdapterServiceImpl {
if (!LockUtils.lock(redisCache.getRedisTemplate(), createOrderKey, expire)) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_CREATE_ERROR);
}
OrderFactoryService orderFactoryService = getCreateOrderBean(assortmentCustomerInfoVo,createOrderVo);
OrderFactoryService orderFactoryService = getCreateOrderBean(assortmentCustomerInfoVo, createOrderVo);
CreateOrderBONew createOrderBO = new CreateOrderBONew(createOrderVo);
//赋值缓存用户信息
createOrderBO.setUserLoginInfoDto(assortmentCustomerInfoVo);
......@@ -320,36 +321,36 @@ public class OrderAdapterServiceImpl {
result = orderCommonService.paySuccessCallback(message, confirmOrderDto, orderBeans);
break;
case 27: //抖音卖券订单处理 OrderClientType.TIKTOKPAY.getIndex()
if (Objects.equals(BizTypeEnum.SALE_COUPON.getBizType(),orderBean.getBizType())) {
if (Objects.equals(BizTypeEnum.SALE_COUPON.getBizType(), orderBean.getBizType())) {
result = sellCouponOrderService.paySuccessCallbackForTiktok(message, confirmOrderDto, orderBeans);
break;
}
break;
// bizType不等于4的,非积分商城订单,继续往下走
case 12: //app订单 OrderClientType.APP.getIndex()
if (!Objects.equals(BizTypeEnum.SALE_COUPON.getBizType(),orderBean.getBizType())) {
if (!Objects.equals(BizTypeEnum.SALE_COUPON.getBizType(), orderBean.getBizType())) {
// bizType为卖券的订单,不走app订单逻辑
result = appOrderService.paySuccessCallback(message, confirmOrderDto, orderBeans);
break;
}
default://微信,支付宝渠道
// 积分商城订单
if (Objects.equals(BizTypeEnum.INTEGRAL_MALL.getBizType(),orderBean.getBizType())) {
result = pointsMallOrderService.paySuccessCallback(message,orderBeans);
if (Objects.equals(BizTypeEnum.INTEGRAL_MALL.getBizType(), orderBean.getBizType())) {
result = pointsMallOrderService.paySuccessCallback(message, orderBeans);
break;
}
// 买券虚拟订单
if (Objects.equals(BizTypeEnum.SALE_COUPON.getBizType(),orderBean.getBizType())) {
if (Objects.equals(BizTypeEnum.SALE_COUPON.getBizType(), orderBean.getBizType())) {
result = sellCouponOrderService.paySuccessCallback(message, confirmOrderDto, orderBeans);
break;
}
// 微商城订单处理
if (Objects.equals(BizTypeEnum.MALL.getBizType(),orderBean.getBizType())){
if (Objects.equals(BizTypeEnum.MALL.getBizType(), orderBean.getBizType())) {
result = mallOrderService.paySuccessCallback(message, confirmOrderDto, orderBeans);
break;
}
// 收银单处理
if (Objects.equals(MarketTypeEnum.CASHIER.getIndex(),orderBean.getMarketingType().intValue())) {
if (Objects.equals(MarketTypeEnum.CASHIER.getIndex(), orderBean.getMarketingType().intValue())) {
result = cashierOrderService.paySuccessCallback(message, confirmOrderDto, orderBeans);
break;
}
......@@ -359,16 +360,16 @@ public class OrderAdapterServiceImpl {
break;
}
// 默认点餐处理(点餐业务和预定业务)
if (Objects.equals(BizTypeEnum.ORDINARY.getBizType(),orderBean.getBizType())
|| Objects.equals(BizTypeEnum.ADVANCE_ORDER.getBizType(),orderBean.getBizType())) {
if (Objects.equals(BizTypeEnum.ORDINARY.getBizType(), orderBean.getBizType())
|| Objects.equals(BizTypeEnum.ADVANCE_ORDER.getBizType(), orderBean.getBizType())) {
result = orderService.paySuccessCallback(message, confirmOrderDto, orderBeans);
break;
}
}
//储值卡订单消费后通知储值交易服务
if(CollectionUtils.isNotEmpty(message.getSvcPayItems())){
sendSvcPayInfoToSvcTransaction(message.getSvcPayItems(),orderBean.getCompanyId(),orderBean.getOid(),orderBean.getUserId(),orderBean.getShopId());
if (CollectionUtils.isNotEmpty(message.getSvcPayItems())) {
sendSvcPayInfoToSvcTransaction(message.getSvcPayItems(), orderBean.getCompanyId(), orderBean.getOid(), orderBean.getUserId(), orderBean.getShopId());
}
return result;
} catch (Exception e) {
......@@ -379,8 +380,8 @@ public class OrderAdapterServiceImpl {
// 增加全局开关,当紧急方案打开时进行直接处理callBack消息
if (orderBean != null && orderCenterProperties.isUrgentCallbackOpen()) {
// 查询
OrderCallBackRequestVo requestVo = saasOrderHandle.convert2CallbackReq(orderBean.getOid(),2,null,null);
ApiLog.infoMessage("紧急方案 支付成功直接调用callback,orderCode:{},requestId:{}",requestVo.getOrderCode(),requestVo.getRequestId());
OrderCallBackRequestVo requestVo = saasOrderHandle.convert2CallbackReq(orderBean.getOid(), 2, null, null);
ApiLog.infoMessage("紧急方案 支付成功直接调用callback,orderCode:{},requestId:{}", requestVo.getOrderCode(), requestVo.getRequestId());
orderCallbackClient.callbackOrder(requestVo);
}
}
......@@ -400,21 +401,18 @@ public class OrderAdapterServiceImpl {
// }
// return ResponseUtil.error(ResponseResult.PARAMETER_MISSING);
// }
public BaseResponse<PlugInParameter> getPaymentConfig(PaymentConfigVo paymentConfigVo){
public BaseResponse<PlugInParameter> getPaymentConfig(PaymentConfigVo paymentConfigVo) {
AssortmentCustomerInfoVo assortmentCustomerInfoVo = assortmentCustomerInfoManager.getCustomerInfoByObject(paymentConfigVo.getSessionId());
if (assortmentCustomerInfoVo == null || StringUtils.isEmpty(assortmentCustomerInfoVo.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
//周周惠插件要返回参数
if(paymentConfigVo.getPlugInType() != null && paymentConfigVo.getPlugInType() == 2){
return ResponseUtil.success(payService.getPlugInParameter(paymentConfigVo.getPartnerId(),assortmentCustomerInfoVo.getWxAppId(),paymentConfigVo.getShopId()));
if (paymentConfigVo.getPlugInType() != null && paymentConfigVo.getPlugInType() == 2) {
return ResponseUtil.success(payService.getPlugInParameter(paymentConfigVo.getPartnerId(), assortmentCustomerInfoVo.getWxAppId(), paymentConfigVo.getShopId()));
}
//1元插件要返回参数
return ResponseUtil.success(payService.getPlugInParameter(paymentConfigVo.getPartnerId(),assortmentCustomerInfoVo.getWxAppId()));
return ResponseUtil.success(payService.getPlugInParameter(paymentConfigVo.getPartnerId(), assortmentCustomerInfoVo.getWxAppId()));
}
......@@ -438,11 +436,11 @@ public class OrderAdapterServiceImpl {
if (null == configType)
throw new ServiceException(ResponseResult.PARAMETER_MISSING);
String key = configType.getKey() + request.getPartnerId()+ "_" + request.getMiniAppId();
String key = configType.getKey() + request.getPartnerId() + "_" + request.getMiniAppId();
String configStr = redisCache.hashGet(key, configType.getType());
if (StringUtils.isBlank(configStr)){
if (StringUtils.isBlank(configStr)) {
OpenPlatformOrderConfig openPlatformOrderConfig = openPlatformOrderConfigManager.getOrderConfigByType(request);
if (null != openPlatformOrderConfig){
if (null != openPlatformOrderConfig) {
configStr = openPlatformOrderConfig.getTypeValue();
}
}
......@@ -450,7 +448,7 @@ public class OrderAdapterServiceImpl {
return configStr;
}
private void sendSvcPayInfoToSvcTransaction(List<SvcPayItem> svcPayItems,String partnerId,String orderCode,String memberId,String storeId){
private void sendSvcPayInfoToSvcTransaction(List<SvcPayItem> svcPayItems, String partnerId, String orderCode, String memberId, String storeId) {
ConsumeHistoryCreateRequest request = new ConsumeHistoryCreateRequest();
try {
request.setPartnerId(partnerId);
......@@ -461,9 +459,19 @@ public class OrderAdapterServiceImpl {
request.setCardRequestNo(svcTransIds);
svcTransactionClient.consumeHistoryCreate(request);
}catch (Exception e){
ErrorLog.printErrorLog("sendSvcPayInfoToSvcTransaction","paySuccessCallback",request,e);
} catch (Exception e) {
ErrorLog.printErrorLog("sendSvcPayInfoToSvcTransaction", "paySuccessCallback", request, e);
}
}
/**
* 支付退款成功回调
*
* @param req
* @return
*/
public BaseResponse refundSuccessCallback(RefundSuccessCallbackVo req) {
return null;
}
}
package cn.freemud.management.adapter;
import cn.freemud.management.entities.dto.request.pay.AgentPayRefundReq;
import cn.freemud.management.entities.dto.request.pay.PayRefundRequestDto;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
......@@ -76,6 +78,21 @@ public class PaymentSdkAdapter {
return multiQueryRequest;
}
@SneakyThrows
public AgentPayRefundReq getAgentPayefundReq(OrderBeanV1 orderBean, BigDecimal refundAmount) {
OrderExtInfoDto ext = JSON.parseObject(orderBean.getExtInfo(), OrderExtInfoDto.class);
AgentPayRefundReq req = new AgentPayRefundReq();
req.setPartnerId(orderBean.getCompanyId());
req.setStoreId(orderBean.getShopId());
req.setFmTradeNo(ext.getPayTransId());
req.setOutOrderNo(orderBean.getOid());
req.setRefundTradeNo(this.getRefundSerialNo().toString());
req.setRefundAmount(refundAmount.longValue());
req.setNotifyUrl(refundNotifyCallback);
req.setVer("V1");
return req;
}
public Long getRefundSerialNo() {
return System.currentTimeMillis() + (int) (Math.random() * 9000) + 1000;
}
......
package cn.freemud.management.entities.dto.response.pay;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
......@@ -20,6 +21,7 @@ public class AgentPayRefundResp {
@NoArgsConstructor
@Data
public static class DataDTO {
private String fmTradeNo;
private String endTransTradeNo;
private String platformTradeNo;
......@@ -35,6 +37,12 @@ public class AgentPayRefundResp {
private String refundTime;
private String transId;
private String ebcode;
@ApiModelProperty(value = "业务返回码")
private Integer resultCode;
@ApiModelProperty(value = "业务返回消息")
private String resultMsg;
}
public boolean isOk() {
......
......@@ -181,6 +181,8 @@ public enum ResponseResult {
REFUND_EXCEPTION("58004", "支付退款异常"),
REFUND_FAIL("58005", "支付退款失败"),
NOT_SUFFICIENT_FUNDS("8200201", "商户余额不足"),
CHECK_PARAM_ERROR("58006", "支付退款请求参数校验异常"),
REFUND_FAIL_WAIT_CALLBACK("58007", "支付退款失败,等待回调补偿中"),
/**
* 优惠券活动
*/
......
......@@ -13,7 +13,6 @@ import cn.freemud.management.thirdparty.MulitiPaymentClient;
import cn.freemud.management.thirdparty.OMSPaymentClient;
import cn.freemud.management.util.RedisUtil;
import cn.freemud.redis.RedisCache;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformIappWxappStore;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformIappWxappStoreManager;
......@@ -41,6 +40,7 @@ import java.math.BigDecimal;
import java.util.*;
import java.util.concurrent.TimeUnit;
/**
* All rights Reserved, Designed By www.freemud.cn
*
......@@ -100,25 +100,89 @@ public class PaymentHandle {
if (ObjectUtils.equals(orderBean.getAmount(), 0L)) {
return handlePayRefundResponse(refundStatus, orderRefundRequest.getRefundId());
}
BaseResponse<OrderRefundResponse> orderRefundResponse;
// orderRefundResponse = standardPaymentService.orderRefund(orderRefundRequest, LogThreadLocal.getTrackingNo());
orderRefundResponse = this.orderPayRefund(orderRefundRequest);
BaseResponse<OrderRefundResponse> orderRefundResponse = this.orderPayRefund(orderRefundRequest);
if (orderRefundResponse == null) {
throw new OrderServiceException(ResponseResult.REFUND_EXCEPTION);
}
refundStatus = PayRefundStatus.RUNNING;
} else {
if (ObjectUtils.notEqual(orderRefundResponse.getCode(), SUCCESS)) {
//商户余额不足的情况下,返回异常特殊处理.
if (ResponseResult.NOT_SUFFICIENT_FUNDS.getCode().equals(orderRefundResponse.getCode())) {
throw new OrderServiceException(ResponseResult.NOT_SUFFICIENT_FUNDS);
refundStatus = PayRefundStatus.FAIL;
} else {
Integer resultCode = orderRefundResponse.getData().getStatusCode();
refundStatus = this.getFinalRefundStatus(resultCode);
}
ResponseResult refundFail = ResponseResult.REFUND_FAIL;
refundFail.setMessage(orderRefundResponse.getMessage());
throw new OrderServiceException(refundFail);
}
refundStatus = ObjectUtils.equals(PayRefundStatus.SUCCESS.getCode(), orderRefundResponse.getData().getRefundStatus()) ? PayRefundStatus.SUCCESS : PayRefundStatus.RUNNING;
return handlePayRefundResponse(refundStatus, orderRefundRequest.getRefundId());
}
private PayRefundStatus getFinalRefundStatus(Integer resultCode) {
switch (resultCode) {
// 退款中状态码需要单独处理
case 8200305:
return PayRefundStatus.RUNNING;
// 退款成功
case 100:
return PayRefundStatus.SUCCESS;
default:
return PayRefundStatus.FAIL;
}
}
private PayRefundRequestDto queryWxAppStore(BaseResponse<PaymentQueryOrderResponseDto> payQueryOrderResponse, PayRefundRequestDto refundRequest) {
String payCode = null;
if (Objects.equals(payQueryOrderResponse.getCode(), "100") && payQueryOrderResponse.getData() != null) {
refundRequest.setTotalAmount((payQueryOrderResponse.getData()).getAmount());
payCode = payQueryOrderResponse.getCode();
}
if (refundRequest.getTotalAmount() == null || refundRequest.getTotalAmount() == 0L) {
refundRequest.setTotalAmount(refundRequest.getRefundAmount());
}
AssortmentOpenPlatformIappWxappStore wxAppStore = this.assortmentOpenPlatformIappWxappStoreManager.selectWxappStoreByWxAppIdAndStoreId(refundRequest.getAppId(), refundRequest.getStoreId(), payCode);
PayRefundRequestDto request = new PayRefundRequestDto();
request.setStoreId(refundRequest.getStoreId());
request.setStationId(refundRequest.getStationId());
request.setOperatorId(refundRequest.getOperatorId());
request.setTransId(refundRequest.getOrgTransId());
request.setBusinessDate(refundRequest.getBusinessDate());
request.setFmId(refundRequest.getOrgPayFmId());
request.setTotalAmount(refundRequest.getTotalAmount());
request.setRefundAmount(refundRequest.getRefundAmount());
request.setRefundId(refundRequest.getRefundId());
request.setRefundDesc(refundRequest.getRefundDesc());
request.setNotifyUrl(refundRequest.getNotifyUrl());
request.setPartnerId(refundRequest.getPartnerId());
request.setVer(2);
request.setExtendParams(refundRequest.getExtendParams());
com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> checkParam = this.checkParam(refundRequest.getPartnerId(), refundRequest.getStoreId(), refundRequest.getRefundAmount(), wxAppStore);
if (!Objects.equals(checkParam.getCode(), "100")) {
return null;
}
return request;
}
/**
* @param refundRequest
* @return
*/
private BaseResponse<PaymentQueryOrderResponseDto> queryPayOrder(PayRefundRequestDto refundRequest) {
PaymentQueryOrderRequestDto paymentQueryOrderRequest = new PaymentQueryOrderRequestDto();
paymentQueryOrderRequest.setPartnerId(refundRequest.getPartnerId());
paymentQueryOrderRequest.setStoreId(refundRequest.getStoreId());
paymentQueryOrderRequest.setFrontTransId(refundRequest.getOrgTransId());
BaseResponse<PaymentQueryOrderResponseDto> payQueryOrderResponse = null;
try {
payQueryOrderResponse = paymentNewClient.payQueryOrder(paymentQueryOrderRequest);
} catch (Exception e) {
cn.freemud.base.log.ErrorLog.errorConvertJson(this.getClass(), "paymentcenter/queryOrder error", e);
}
if (payQueryOrderResponse == null) {
return null;
}
return payQueryOrderResponse;
}
/**
* 代付订单退款
*
......@@ -126,31 +190,29 @@ public class PaymentHandle {
* @return
*/
public PayRefundResponse agentPayRefund(OrderBeanV1 orderBean) {
PayRefundResponse ret = new PayRefundResponse();
PayRefundStatus refundStatus = PayRefundStatus.SUCCESS;
String fmRefundNo = "";
try {
OrderExtInfoDto ext = JSON.parseObject(orderBean.getExtInfo(), OrderExtInfoDto.class);
AgentPayRefundReq req = new AgentPayRefundReq();
req.setPartnerId(orderBean.getCompanyId());
req.setStoreId(orderBean.getShopId());
req.setFmTradeNo(ext.getPayTransId());
req.setOutOrderNo(orderBean.getOid());
req.setRefundTradeNo(paymentSdkAdapter.getRefundSerialNo().toString());
req.setRefundAmount(this.getRefundAmount(orderBean).longValue());
req.setVer("V1");
AgentPayRefundReq req = paymentSdkAdapter.getAgentPayefundReq(orderBean, this.getRefundAmount(orderBean));
AgentPayRefundResp resp = mulitiPaymentClient.agentPayRefund(req);
logUtil.info("fisherman refundRespons ---> "+orderBean.getOid() + "---", JSON.toJSONString(req), JSON.toJSONString(resp));
if (!resp.isOk()) throw new Exception("退款失败");
ret.setRefundId(resp.getData().getFmRefundNo());
ret.setPayRefundStatus(PayRefundStatus.SUCCESS);
if (!resp.isOk()) {
refundStatus = PayRefundStatus.RUNNING;
}
AgentPayRefundResp.DataDTO data = resp.getData();
if (Objects.nonNull(data)) {
refundStatus = this.getFinalRefundStatus(data.getResultCode());
}
fmRefundNo = resp.getData().getFmRefundNo();
} catch (Throwable e) {
ret.setPayRefundStatus(PayRefundStatus.FAIL);
refundStatus = PayRefundStatus.FAIL;
}
return ret;
return this.handlePayRefundResponse(refundStatus, fmRefundNo);
}
/**
* 卖券调用退款
*
* @param reason
* @param orderBean
* @return -2正常 -1 不需要退款 0其他异常 1账户余额不足 2 系统异常
......@@ -278,7 +340,7 @@ public class PaymentHandle {
private PayRefundResponse handlePayRefundResponse(PayRefundStatus refundStatus, String refundId) {
PayRefundResponse payRefundResponse = new PayRefundResponse();
payRefundResponse.setPayRefundStatus(refundStatus);
payRefundResponse.setRefundId(refundId.toString());
payRefundResponse.setRefundId(refundId);
return payRefundResponse;
}
......@@ -287,12 +349,29 @@ public class PaymentHandle {
MultiOrderRefundRequest multiOrderRefundRequest = paymentSdkAdapter.getMultiOrderPayRefundRequest(orderBean, getRefundAmount(orderBean));
MultiOrderRefundResponse multiOrderRefundResponse = mulitiPaymentClient.paymentApplicationRefund(multiOrderRefundRequest, orderBean.getCompanyId());
if (multiOrderRefundResponse == null || multiOrderRefundResponse.getData() == null || !com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.ORDER_PAY_RESPONSE_SUCCESS.equals(multiOrderRefundResponse.getCode())) {
throw new OrderServiceException(ResponseResult.REFUND_EXCEPTION);
// fisherman 退款异常 也当做 退款中处理
refundStatus = PayRefundStatus.RUNNING;
}
List<MultiOrderRefundResponse.RefundPlatformResponse> refundPlatformResponseList = multiOrderRefundResponse.getData().refundPlatformResponseList;
if (null != refundPlatformResponseList && refundPlatformResponseList.size() > 0) {
redisCache.save(RedisUtil.getPaymentTransIdSequenceKey(refundPlatformResponseList.get(0).getTransId()), orderBean.getOid(), 1L, TimeUnit.DAYS);
}
if (CollectionUtils.isNotEmpty(refundPlatformResponseList)) {
long refundError = refundPlatformResponseList.stream()
.filter(s -> s.getResultCode().compareTo(MultiOrderRefundResponse.RefundPlatformResponse.REFUNDED_RESULTCODE) != 0
&& s.getResultCode().compareTo(MultiOrderRefundResponse.RefundPlatformResponse.REFUND_SUCCESS) != 0)
.count();
if (refundError > 0L) {
refundStatus = PayRefundStatus.FAIL;
}
// 退款中
long refunded = refundPlatformResponseList.stream()
.filter(s -> s.getResultCode().compareTo(MultiOrderRefundResponse.RefundPlatformResponse.REFUNDED_RESULTCODE) == 0)
.count();
if (refunded > 0L) {
refundStatus = PayRefundStatus.RUNNING;
}
}
return handlePayRefundResponse(refundStatus, multiOrderRefundRequest.getRefundTradeNo());
}
......@@ -302,70 +381,29 @@ public class PaymentHandle {
*/
public BaseResponse<OrderRefundResponse> orderPayRefund(PayRefundRequestDto refundRequest) {
PaymentQueryOrderRequestDto paymentQueryOrderRequest = new PaymentQueryOrderRequestDto();
paymentQueryOrderRequest.setPartnerId(refundRequest.getPartnerId());
paymentQueryOrderRequest.setStoreId(refundRequest.getStoreId());
paymentQueryOrderRequest.setFrontTransId(refundRequest.getOrgTransId());
BaseResponse<PaymentQueryOrderResponseDto> payQueryOrderResponse = null;
try {
payQueryOrderResponse = paymentNewClient.payQueryOrder(paymentQueryOrderRequest);
}catch (Exception e){
cn.freemud.base.log.ErrorLog.errorConvertJson(this.getClass(), "paymentcenter/queryOrder error", e);
}
if(payQueryOrderResponse == null){
return null;
}
Long vipAmount = 0L;
String payCode = null;
if (Objects.equals(payQueryOrderResponse.getCode(), "100") && payQueryOrderResponse.getData() != null) {
if ((payQueryOrderResponse.getData()).getVipAmount() != null && (payQueryOrderResponse.getData()).getVipAmount() != 0) {
vipAmount = (long) (payQueryOrderResponse.getData()).getVipAmount();
}
refundRequest.setTotalAmount((payQueryOrderResponse.getData()).getAmount());
payCode = payQueryOrderResponse.getCode();
// step1 查询支付
BaseResponse<PaymentQueryOrderResponseDto> paymentQueryOrderResponseDtoBaseResponse = this.queryPayOrder(refundRequest);
if (Objects.isNull(paymentQueryOrderResponseDtoBaseResponse)) {
throw new OrderServiceException(ResponseResult.REFUND_EXCEPTION);
}
if (refundRequest.getTotalAmount() == null || refundRequest.getTotalAmount() == 0L) {
refundRequest.setTotalAmount(refundRequest.getRefundAmount());
// step2 查询退款配置
PayRefundRequestDto request = this.queryWxAppStore(paymentQueryOrderResponseDtoBaseResponse, refundRequest);
if (Objects.isNull(request)) {
throw new OrderServiceException(ResponseResult.CHECK_PARAM_ERROR);
}
AssortmentOpenPlatformIappWxappStore wxAppStore = this.assortmentOpenPlatformIappWxappStoreManager.selectWxappStoreByWxAppIdAndStoreId(refundRequest.getAppId(), refundRequest.getStoreId(), payCode);
PayRefundRequestDto request = new PayRefundRequestDto();
request.setStoreId(refundRequest.getStoreId());
request.setStationId(refundRequest.getStationId());
request.setOperatorId(refundRequest.getOperatorId());
request.setTransId(refundRequest.getOrgTransId());
request.setBusinessDate(refundRequest.getBusinessDate());
request.setFmId(refundRequest.getOrgPayFmId());
request.setTotalAmount(refundRequest.getTotalAmount());
request.setRefundAmount(refundRequest.getRefundAmount());
request.setRefundId(refundRequest.getRefundId());
request.setRefundDesc(refundRequest.getRefundDesc());
request.setNotifyUrl(refundRequest.getNotifyUrl());
request.setPartnerId(refundRequest.getPartnerId());
request.setVer(2);
request.setExtendParams(refundRequest.getExtendParams());
com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> checkParam = this.checkParam(refundRequest.getPartnerId(), refundRequest.getStoreId(), refundRequest.getRefundAmount(), wxAppStore);
if (!Objects.equals(checkParam.getCode(), "100")) {
return checkParam;
} else {
// String receiveJsonStr = this.setPayValueFromSDKByManager(refundRequest.getPartnerId(), refundRequest.getStoreId(), refundRequest.getRefundAmount() + vipAmount, vipAmount, wxAppStore.getIndirectId(), false);
// if (!StringUtils.isEmpty(receiveJsonStr)) {
// request.setAccountDivided(receiveJsonStr);
// }
// step3 退款
BaseResponse<PayRefundData> refundNewResponse = null;
try {
refundNewResponse = paymentNewClient.payRefund(request);
}catch (Exception e){
} catch (Exception e) {
ErrorLog.errorConvertJson(this.getClass(), "paymentcenter/refund error", e);
}
if(refundNewResponse == null){
if (refundNewResponse == null) {
return null;
}
logUtil.info("paymentcenter/refund", JSONObject.toJSONString(request),JSONObject.toJSONString(refundNewResponse));
logUtil.info("paymentcenter/refund", JSONObject.toJSONString(request), JSONObject.toJSONString(refundNewResponse));
if (Objects.equals(refundNewResponse.getCode(), "100")) {
PayRefundData refundData = refundNewResponse.getData();
if (null != refundData) {
......@@ -383,15 +421,9 @@ public class PaymentHandle {
return ResponseUtils.success(refundResponse);
}
}
if (!Arrays.asList("8200201", "8200202", "8200203", "8200204", "8200205").contains(refundNewResponse.getCode())) {
// this.emailAlertService.sendEmailAlert("支付退款失败", "请求json:" + JSONObject.toJSONString(request) + "返回msg:" + refundNewResponse.getMessage());
}
return ResponseUtils.error(refundNewResponse.getCode(), refundNewResponse.getMessage());
}
}
public com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> checkParam(String partnerId, String storeId, Long amount, AssortmentOpenPlatformIappWxappStore wxAppStore) {
if (StringUtils.isBlank(partnerId)) {
......@@ -409,7 +441,7 @@ public class PaymentHandle {
public Integer getRefundStatus(Integer resultCode) {
if (Objects.equals(resultCode, SUCCESS_RESPONSE_CODE_INT)) {
return PaymentRefundStatus.PAYMENT_REFUND_STATUS_1.getCode();
}else if (Objects.equals(resultCode, SUCCESS_RESPONSE_101_CODE_INT)) {
} else if (Objects.equals(resultCode, SUCCESS_RESPONSE_101_CODE_INT)) {
return PaymentRefundStatus.PAYMENT_REFUND_STATUS_1.getCode();
} else {
return Objects.equals(resultCode, REFUND_RESPONSE_CODE) ? PaymentRefundStatus.PAYMENT_REFUND_STATUS_4.getCode() : PaymentRefundStatus.PAYMENT_REFUND_STATUS_2.getCode();
......
......@@ -221,6 +221,7 @@ public class SaasOrderHandle {
if (PayRefundStatus.SUCCESS.equals(refundResponse.getPayRefundStatus())) {
baseOrderResponse = orderCenterSdkService.refundComplete(refundAgreeRequest);
} else {
// fisherman 这里有缺陷 退款失败也是最终状态, 基础服务售后状态不能为 4 不然用户无法重新发起售后单
baseOrderResponse = orderCenterSdkService.refundReturn(refundAgreeRequest);
}
if (baseOrderResponse == null || ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), baseOrderResponse.getErrcode().toString())) {
......
......@@ -108,7 +108,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
QueryFlag query = QueryFlag.builder().queryBusinessInfo(true).queryStoreInfo(true).build();
ConsoleResponseDTO<BizDTO> storeMix = this.getStoreMix(query, orderBean.getCompanyId(), orderBean.getShopId());
boolean idAutoCreate = false;
if (storeMix!=null && ObjectUtils.equals(ResponseResult.SUCCESS.getCode(), storeMix.getStatusCode())) {
if (storeMix != null && ObjectUtils.equals(ResponseResult.SUCCESS.getCode(), storeMix.getStatusCode())) {
BizDTO bizVO = storeMix.getBizVO();
// fisherman 预约单不走自动|半自动派单逻辑 【【野萃山】手动派单增加半自动配置】 https://www.tapd.cn/43862731/prong/stories/view/1143862731001040800
boolean reservedExpress = Objects.equals(orderBean.getNewOrderType(), OrderType.GENERAL_EXPRESS.getIndex());
......@@ -137,13 +137,13 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
// 创建配送单
deliveryHandle.createDelivery(orderBean, request, storeMix, idAutoCreate);
// 推送pos、微信消息中心 重复接单不重复推消息(针对蜜雪做的修改)
if(baseResponse != null && baseResponse.getResult() == null){
if (baseResponse != null && baseResponse.getResult() == null) {
orderBaseService.sendMessage(orderBean, OperateType.ORDER_CONFIRM, request.getReason());
}
// 增加全局开关,当紧急方案打开时进行直接处理callBack消息
if (orderCenterProperties.isUrgentCallbackOpen()) {
OrderCallBackRequestVo requestVo = saasOrderHandle.convert2CallbackReq(orderBean.getOid(),3,null,null);
ApiLog.infoMessage("紧急方案 接单成功直接调用callback,orderCode:{},requestId:{}",requestVo.getOrderCode(),requestVo.getRequestId());
OrderCallBackRequestVo requestVo = saasOrderHandle.convert2CallbackReq(orderBean.getOid(), 3, null, null);
ApiLog.infoMessage("紧急方案 接单成功直接调用callback,orderCode:{},requestId:{}", requestVo.getOrderCode(), requestVo.getRequestId());
orderCallbackClient.callbackOrder(requestVo);
}
return ResponseUtil.success(new OrderManagerResponse(storeMix.getBizVO().getBusinessInfo().getOrderPrintConfig(), orderBean.getGmtExpect(),
......@@ -208,14 +208,14 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
@Override
public BaseResponse<OrderManagerResponse> orderReject(OrderManagerRequest request, OrderBeanV1 orderBean) {
//支付退款
PayRefundResponse refundResponse ;
PayRefundResponse refundResponse;
try {
if(null != orderBean.getOrderPayItem() && orderBean.getOrderPayItem().size()>0){
if (null != orderBean.getOrderPayItem() && orderBean.getOrderPayItem().size() > 0) {
refundResponse = paymentHandle.multiRefund(orderBean);
}else{
} else {
refundResponse = paymentHandle.refund(request, orderBean);
}
} catch (OrderServiceException orderEx){ // 爱马哥兼容,不抛错
} catch (OrderServiceException orderEx) { // 爱马哥兼容,不抛错
return ResponseUtil.error(orderEx.getResult());
}
//订单拒单
......@@ -224,12 +224,11 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
orderBaseService.sendMessage(orderBean, OperateType.ORDER_REJECT, request.getReason());
//todo 可以考虑基于订单回调异步实现
//冲正库存
stockHandle.revert(request,orderBean);
stockHandle.revert(request, orderBean);
return ResponseUtil.success();
}
/**
* 同意退款
*
......@@ -240,32 +239,39 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
@Override
public BaseResponse<OrderManagerResponse> orderAgreeRefund(OrderManagerRequest request, OrderBeanV1 orderBean) {
//取消配送单
deliveryHandle.cancelDelivery(orderBean,request);
deliveryHandle.cancelDelivery(orderBean, request);
//支付退款
PayRefundResponse refundResponse;
try {
if(null != orderBean.getOrderPayItem() && orderBean.getOrderPayItem().size()>0){
if (null != orderBean.getOrderPayItem() && orderBean.getOrderPayItem().size() > 0) {
// payment/application/refund
refundResponse = paymentHandle.multiRefund(orderBean);
}else{
} else {
OrderExtendedReq ext = orderBean.getOrderExtended();
if (StringUtils.isNotBlank(ext.getAgentPayerId()) && !Objects.equals(ext.getAgentPayerId(), orderBean.getUserId())) {
//代付人信息不为空 并且和订单创建人不一样,表示代付单
//代付人信息不为空 并且和订单创建人不一样,表示代付单 payment/application/agentRefund
refundResponse = paymentHandle.agentPayRefund(orderBean);
} else {
//正常订单现金退款
//正常订单现金退款 paymentcenter/refund
refundResponse = paymentHandle.refund(request, orderBean);
}
}
} catch (OrderServiceException orderEx){ // 爱马哥兼容,不抛错
} catch (OrderServiceException orderEx) { // 爱马哥兼容,不抛错
return ResponseUtil.error(orderEx.getResult());
}
// fisherman --> 退款中的状态 阻止后续流程 等待支付回调
if (refundResponse.getPayRefundStatus().getCode().compareTo(PayRefundStatus.RUNNING.getCode()) == 0) {
return ResponseUtil.error(ResponseResult.REFUND_FAIL_WAIT_CALLBACK);
}
//订单同意退款
saasOrderHandle.refundAgree(request, refundResponse, orderBean);
// 推送pos、微信消息中心
orderBaseService.sendMessage(orderBean, ORDER_AGREE_REFUND, request.getReason());
//todo 可以考虑基于订单回调异步实现
//冲正库存
stockHandle.revert(request,orderBean);
stockHandle.revert(request, orderBean);
return ResponseUtil.success();
}
......@@ -279,7 +285,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
@Override
public BaseResponse<OrderManagerResponse> orderRejectRefund(OrderManagerRequest request, OrderBeanV1 orderBean) {
//拒绝退款
saasOrderHandle.refundReject(request,orderBean);
saasOrderHandle.refundReject(request, orderBean);
// 推送pos、微信消息中心
orderBaseService.sendMessage(orderBean, OperateType.ORDER_REJECT_REFUND, request.getReason());
return ResponseUtil.success();
......@@ -289,21 +295,21 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
* 取消订单
*/
@Override
public BaseResponse<OrderManagerResponse> orderCancel(OrderManagerRequest request, OrderBeanV1 orderBean){
public BaseResponse<OrderManagerResponse> orderCancel(OrderManagerRequest request, OrderBeanV1 orderBean) {
if (BizTypeEnum.ORDINARY.getBizType().compareTo(orderBean.getBizType()) == 0
&& MarketTypeEnum.TIKTOK_MARKET_ORDER.getIndex().compareTo(Byte.toUnsignedInt(orderBean.getMarketingType())) == 0) {
this.orderAgreeRefund(request, orderBean);
return ResponseUtil.success();
}
List<Integer> newOrderStatusList = Arrays.asList(OrderStatusV1.RECEIPT.getV2Code(),OrderStatusV1.COMPLETE.getV2Code(),OrderStatusV1.COMPLETE_MAKE.getV2Code());
List<String> sourceList = Arrays.asList(OrderSourceV1.SAAS.getCode(),OrderSourceV1.ALIPAY.getCode(),OrderSourceV1.APP.getCode());
List<Integer> newOrderStatusList = Arrays.asList(OrderStatusV1.RECEIPT.getV2Code(), OrderStatusV1.COMPLETE.getV2Code(), OrderStatusV1.COMPLETE_MAKE.getV2Code());
List<String> sourceList = Arrays.asList(OrderSourceV1.SAAS.getCode(), OrderSourceV1.ALIPAY.getCode(), OrderSourceV1.APP.getCode());
if (sourceList.contains(orderBean.getSource()) && newOrderStatusList.contains(orderBean.getStatusV2())) {
return executeRefund(request,orderBean, OperateType.ORDER_REJECT.getOpType());
return executeRefund(request, orderBean, OperateType.ORDER_REJECT.getOpType());
} else if (OrderSourceV1.MEAL.getCode().equals(orderBean.getSource())) {
if (OrderStatusV1.WAIT_PAY.getV2Code().equals(orderBean.getStatusV2()) || PayType.CASH_ON_DELIVERY.getCode().compareTo(orderBean.getPayType()) == 0) {
return executeCancel(request,orderBean, PayRefundStatus.SUCCESS.getCode(), AfterSalesType.SYSTEM_CANCEL.getIndex(), Integer.valueOf(orderBean.getOrderClient()));
return executeCancel(request, orderBean, PayRefundStatus.SUCCESS.getCode(), AfterSalesType.SYSTEM_CANCEL.getIndex(), Integer.valueOf(orderBean.getOrderClient()));
} else {
return executeRefund(request,orderBean, OperateType.ORDER_REJECT.getOpType());
return executeRefund(request, orderBean, OperateType.ORDER_REJECT.getOpType());
}
} else if (OrderSourceV1.POS.getCode().equals(orderBean.getSource())) {
return posCancel(orderBean);
......@@ -313,12 +319,13 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
/**
* 退款操作
*
* @param request
* @param orderBean
* @param operationType
* @return
*/
private BaseResponse<OrderManagerResponse> executeRefund(OrderManagerRequest request,OrderBeanV1 orderBean, String operationType) {
private BaseResponse<OrderManagerResponse> executeRefund(OrderManagerRequest request, OrderBeanV1 orderBean, String operationType) {
//订单接单参数校验
BaseResponse verifyResponse = orderVerifyHandle.orderCancel(orderBean, OperateType.ORDER_AGREE_REFUND.getOpType());
if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) {
......@@ -329,7 +336,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
if (operationType.equalsIgnoreCase(OperateType.ORDER_REJECT.getOpType())) {
baseResponse = this.orderReject(request, orderBean);
}
if(null == baseResponse || !ObjectUtils.equals(SUCCESS,Integer.valueOf(baseResponse.getCode()))){
if (null == baseResponse || !ObjectUtils.equals(SUCCESS, Integer.valueOf(baseResponse.getCode()))) {
if (PAY_RETURN_FILTER_CODES.contains(baseResponse.getCode())) {
return ResponseUtil.error(ResponseResult.getResponseResult(baseResponse.getCode()));
}
......@@ -346,7 +353,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
* @param refundStatus 支付退款状态
* @return
*/
private BaseResponse<OrderManagerResponse> executeCancel(OrderManagerRequest request,OrderBeanV1 order, Integer refundStatus, Integer afterSalesType, Integer orderClient) {
private BaseResponse<OrderManagerResponse> executeCancel(OrderManagerRequest request, OrderBeanV1 order, Integer refundStatus, Integer afterSalesType, Integer orderClient) {
Integer createEvent;
if (PayRefundStatus.RUNNING.getCode().equals(refundStatus)) {
createEvent = CreateEventEnum.FIVE.getType();
......@@ -363,9 +370,9 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
orderCancelReq.setCreateEvent(createEvent);
orderCancelReq.setOrderClient(orderClient == null ? OrderClientType.SAAS.getIndex() : orderClient);
orderCancelReq.setOperator(request.getOperator());
OrderBaseResp baseResponse = orderSdkService.cancelOrder(orderCancelReq,UUID.randomUUID().toString());
if (!ObjectUtils.equals(SUCCESS,Integer.valueOf(baseResponse.getCode()))) {
this.commonSendEmailAlert(order,baseResponse,"拒单在支付退款后的取消订单操作失败");
OrderBaseResp baseResponse = orderSdkService.cancelOrder(orderCancelReq, UUID.randomUUID().toString());
if (!ObjectUtils.equals(SUCCESS, Integer.valueOf(baseResponse.getCode()))) {
this.commonSendEmailAlert(order, baseResponse, "拒单在支付退款后的取消订单操作失败");
return ResponseUtil.error(ResponseResult.PARTNER_ORDER_CANCEL_ERROR);
}
return ResponseUtil.success();
......@@ -380,24 +387,24 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
orderCancelReq.setAfterSalesType(AfterSalesType.PARTNER_CANCEL.getIndex());
orderCancelReq.setCreateEvent(CreateEventEnum.FOUR.getType());
orderCancelReq.setOrderClient(OrderClientType.POS.getIndex());
OrderBaseResp baseResponse = orderSdkService.cancelOrder(orderCancelReq,UUID.randomUUID().toString());
if (!Objects.equals(SUCCESS,Integer.valueOf(baseResponse.getCode()))){
this.commonSendEmailAlert(order,baseResponse,"posCancel 取消订单失败");
OrderBaseResp baseResponse = orderSdkService.cancelOrder(orderCancelReq, UUID.randomUUID().toString());
if (!Objects.equals(SUCCESS, Integer.valueOf(baseResponse.getCode()))) {
this.commonSendEmailAlert(order, baseResponse, "posCancel 取消订单失败");
return ResponseUtil.error(ResponseResult.PARTNER_ORDER_CANCEL_ERROR);
}
// 储值卡退款
OrderExtInfoDto orderExtInfoDto = JSONObject.parseObject(order.getExtInfo(), OrderExtInfoDto.class) == null ? new OrderExtInfoDto() : JSONObject.parseObject(order.getExtInfo(), OrderExtInfoDto.class);
//支付退款
if (orderExtInfoDto != null && orderExtInfoDto.getSvcAmount()!= null && StringUtils.isNotEmpty(orderExtInfoDto.getSvcCardCode()) && order.getPayStatus() > 1){
if (orderExtInfoDto != null && orderExtInfoDto.getSvcAmount() != null && StringUtils.isNotEmpty(orderExtInfoDto.getSvcCardCode()) && order.getPayStatus() > 1) {
PayRefundResponse refundResponse = paymentHandle.posOrderPayRefund(order, orderExtInfoDto);
if(!ObjectUtils.equals(PayRefundStatus.SUCCESS,refundResponse.getPayRefundStatus())){
if (!ObjectUtils.equals(PayRefundStatus.SUCCESS, refundResponse.getPayRefundStatus())) {
return ResponseUtil.error(ResponseResult.PARTNER_ORDER_CANCEL_ERROR);
}
}
return ResponseUtil.success();
}
private void commonSendEmailAlert(OrderBeanV1 order, OrderBaseResp baseResponse,String desc){
private void commonSendEmailAlert(OrderBeanV1 order, OrderBaseResp baseResponse, String desc) {
emailAlertService.sendEmailAlert(desc, "请求json:" + JSONObject.toJSONString(order) + "返回msg:" + baseResponse.getMessage());
}
......@@ -412,8 +419,8 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
@Override
public BaseResponse orderCancelDelivery(OrderManagerRequest request, OrderBeanV1 orderBean) {
BaseResponse response = deliveryHandle.cancelDelivery(orderBean,request);
if (!Objects.equals(response.getCode(), ResponseCodeConstant.RESPONSE_SUCCESS_STR)){
BaseResponse response = deliveryHandle.cancelDelivery(orderBean, request);
if (!Objects.equals(response.getCode(), ResponseCodeConstant.RESPONSE_SUCCESS_STR)) {
return response;
}
OrderExpressReq expressReq = new OrderExpressReq();
......@@ -421,15 +428,14 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
expressReq.setPartnerId(orderBean.getCompanyId());
expressReq.setOrderSubState(DeliveryStatus.DELIVERYCANCEL.getCode());
OrderBaseResp orderBaseResp = orderSdkService.updateDeliveryInfo(expressReq, LogThreadLocal.getTrackingNo());
if (!Objects.equals(orderBaseResp.getCode(), ResponseCodeConstant.RESPONSE_SUCCESS_STR)){
this.commonSendEmailAlert(orderBean,orderBaseResp,"取消配送,修改订单配送状态失败");
if (!Objects.equals(orderBaseResp.getCode(), ResponseCodeConstant.RESPONSE_SUCCESS_STR)) {
this.commonSendEmailAlert(orderBean, orderBaseResp, "取消配送,修改订单配送状态失败");
return ResponseUtil.error(ResponseResult.ORDER_DELIVERY_EDIT_FAILED);
}
return ResponseUtil.success();
}
/**
*
* @param query
* @param partnerId
* @param storeId
......
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