Commit aec12131 by xiaoer.li@freemud.com

modify:取消订单关闭预支付订单

parent b206e53f
...@@ -231,7 +231,8 @@ public class OrderController { ...@@ -231,7 +231,8 @@ public class OrderController {
@ApiAnnotation(logMessage = "deleteOrderById") @ApiAnnotation(logMessage = "deleteOrderById")
@PostMapping("/deleteOrderById") @PostMapping("/deleteOrderById")
public BaseResponse deleteOrderById(@Validated @LogParams @RequestBody DeleteOrderVo deleteOrderVo) { public BaseResponse deleteOrderById(@Validated @LogParams @RequestBody DeleteOrderVo deleteOrderVo) {
return orderservice.deleteOrderById(deleteOrderVo); //return orderservice.deleteOrderById(deleteOrderVo);
return orderservice.cancelPayOrder(deleteOrderVo);
} }
/** /**
......
...@@ -92,8 +92,12 @@ import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettl ...@@ -92,8 +92,12 @@ import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettl
import com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.application.sdk.api.paymentcenter.client.request.CodePayRequest; import com.freemud.application.sdk.api.paymentcenter.client.request.CodePayRequest;
import com.freemud.application.sdk.api.paymentcenter.client.request.PaymentCloseUnifiedOrderRequest;
import com.freemud.application.sdk.api.paymentcenter.client.request.PaymentQueryRequest;
import com.freemud.application.sdk.api.paymentcenter.client.request.SVCCardAmountRequest; import com.freemud.application.sdk.api.paymentcenter.client.request.SVCCardAmountRequest;
import com.freemud.application.sdk.api.paymentcenter.client.response.CodePayResponse; import com.freemud.application.sdk.api.paymentcenter.client.response.CodePayResponse;
import com.freemud.application.sdk.api.paymentcenter.client.response.PaymentCloseUnifiedOrderResponse;
import com.freemud.application.sdk.api.paymentcenter.client.response.PaymentQueryResponse;
import com.freemud.application.sdk.api.paymentcenter.client.response.SVCCardAmountResponse; import com.freemud.application.sdk.api.paymentcenter.client.response.SVCCardAmountResponse;
import com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService; import com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService;
import com.freemud.application.sdk.api.storecenter.request.GetListByCodesRequest; import com.freemud.application.sdk.api.storecenter.request.GetListByCodesRequest;
...@@ -274,6 +278,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -274,6 +278,7 @@ public class OrderServiceImpl implements Orderservice {
@Autowired @Autowired
private SvcComPayClient svcComPayClient; private SvcComPayClient svcComPayClient;
@Override @Override
public BaseResponse checkBeforeCreateOrder(CheckBeforeCreateOrderRequestVo requestVo) { public BaseResponse checkBeforeCreateOrder(CheckBeforeCreateOrderRequestVo requestVo) {
String trackingNo = LogTreadLocal.getTrackingNo(); String trackingNo = LogTreadLocal.getTrackingNo();
...@@ -1583,7 +1588,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -1583,7 +1588,7 @@ public class OrderServiceImpl implements Orderservice {
if (!OrderStatus.WAIT_PAY.getCode().equals(orderBean.getStatus())) { if (!OrderStatus.WAIT_PAY.getCode().equals(orderBean.getStatus())) {
return ResponseUtil.error(ResponseResult.ORDER_DELETE_ERROR.getCode(), "订单状态不允许取消"); return ResponseUtil.error(ResponseResult.ORDER_DELETE_ERROR.getCode(), "订单状态不允许取消");
} }
// this.closeHistoryPrePay(orderBean);
CancelOrderRequest var1 = new CancelOrderRequest(); CancelOrderRequest var1 = new CancelOrderRequest();
var1.setOrderId(deleteOrderVo.getOid()); var1.setOrderId(deleteOrderVo.getOid());
var1.setPartnerId(deleteOrderVo.getPartnerId()); var1.setPartnerId(deleteOrderVo.getPartnerId());
...@@ -3526,4 +3531,40 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3526,4 +3531,40 @@ public class OrderServiceImpl implements Orderservice {
sdkUpdateAbnormalState.setOrderCode(orderBean.getOid()); sdkUpdateAbnormalState.setOrderCode(orderBean.getOid());
orderSdkService.updateAbnormalState(sdkUpdateAbnormalState); orderSdkService.updateAbnormalState(sdkUpdateAbnormalState);
} }
private void closeHistoryPrePay(OrderBean orderBean) {
OrderExtInfoDto extInfo = JSONObject.parseObject(orderBean.getExtInfo(), OrderExtInfoDto.class);
//判断当前订单是否存在预支付订单
if(extInfo != null && StringUtils.isNotEmpty(extInfo.getFmId())){
//订单状态未支付且存在预支付订单:
// 1.查询预支付订单支付状态
PaymentQueryRequest paymentQueryRequest = new PaymentQueryRequest();
paymentQueryRequest.setPartnerId(orderBean.getCompanyId());
paymentQueryRequest.setStoreId(orderBean.getShopId());
paymentQueryRequest.setFmId(extInfo.getFmId());
paymentQueryRequest.setVer("2");
com.freemud.application.sdk.api.base.BaseResponse<PaymentQueryResponse> queryResponseBaseResponse = paymentNewService.query(paymentQueryRequest,LogThreadLocal.getTrackingNo());
//判断预支付订单状态
if(ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), queryResponseBaseResponse.getCode())){
throw new ServiceException(ResponseResult.ORDER_PAY_GETPRE_MESSAGE_ERROR);
}
//判断当前预支付订单是否已经支付成功
if(ObjectUtils.equals(TradeState.SUCCESS.getCode(), queryResponseBaseResponse.getData().getTradeState())){
throw new ServiceException(ResponseResult.ORDER_HAS_PAID);
}
// 3.取消前一个预支付订单 调用支付取消预支付订单,如果预支付订单已经取消了再调用取消预支付订单接口会报错的
if(ObjectUtils.equals(TradeState.NOTPAY.getCode(), queryResponseBaseResponse.getData().getTradeState())) {
PaymentCloseUnifiedOrderRequest closeUnifiedOrderRequest = new PaymentCloseUnifiedOrderRequest();
closeUnifiedOrderRequest.setFmId(extInfo.getFmId());
closeUnifiedOrderRequest.setVer("2");
closeUnifiedOrderRequest.setPartnerId(orderBean.getCompanyId());
closeUnifiedOrderRequest.setStoreId(orderBean.getShopId());
com.freemud.application.sdk.api.base.BaseResponse<PaymentCloseUnifiedOrderResponse> cancelNewUnifiedOrder = paymentNewService.cancelNewUnifiedOrder(closeUnifiedOrderRequest,LogThreadLocal.getTrackingNo());
if(ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(),cancelNewUnifiedOrder.getCode())){
throw new ServiceException(ResponseResult.ORDER_PRE_PAYMENT_CLOSE_FAILED);
}
}
}
}
} }
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