...
|
...
|
@@ -13,6 +13,7 @@ import com.yohobuy.ufo.model.order.resp.OrderCntResp; |
|
|
import com.yohobuy.ufo.model.order.resp.OrderListInfo;
|
|
|
import com.yohobuy.ufo.model.order.resp.PageResp;
|
|
|
import com.yohobuy.ufo.model.order.vo.OrderListVo;
|
|
|
import com.yohoufo.common.alarm.EventBusPublisher;
|
|
|
import com.yohoufo.common.exception.UfoServiceException;
|
|
|
import com.yohoufo.common.utils.DateUtil;
|
|
|
import com.yohoufo.common.utils.UserInfoHiddenHelper;
|
...
|
...
|
@@ -24,18 +25,23 @@ import com.yohoufo.dal.order.model.BuyerOrderGoods; |
|
|
import com.yohoufo.dal.order.model.SellerOrderGoods;
|
|
|
import com.yohoufo.order.common.ActionStatusHold;
|
|
|
import com.yohoufo.order.common.DelStatus;
|
|
|
import com.yohoufo.order.common.Payment;
|
|
|
import com.yohoufo.order.event.BeforeDepotReceiveEvent;
|
|
|
import com.yohoufo.order.event.BeforeSellerDeliverEvent;
|
|
|
import com.yohobuy.ufo.model.order.vo.AddressInfo;
|
|
|
import com.yohoufo.order.event.PayConfirmEvent;
|
|
|
import com.yohoufo.order.model.PayQueryBo;
|
|
|
import com.yohoufo.order.model.request.OrderListRequest;
|
|
|
import com.yohoufo.order.model.request.OrderRequest;
|
|
|
import com.yohoufo.order.model.response.OrderDetailInfo;
|
|
|
import com.yohoufo.order.model.response.OrderSummaryResp;
|
|
|
import com.yohoufo.order.service.IBuyerOrderMetaService;
|
|
|
import com.yohoufo.order.service.IBuyerOrderService;
|
|
|
import com.yohoufo.order.service.IPaymentService;
|
|
|
import com.yohoufo.order.service.cache.CacheCleaner;
|
|
|
import com.yohoufo.order.service.cache.CacheKeyBuilder;
|
|
|
import com.yohoufo.order.service.cache.OrderCacheService;
|
|
|
import com.yohoufo.order.service.pay.AbstractPayService;
|
|
|
import com.yohoufo.order.service.proxy.InBoxFacade;
|
|
|
import com.yohoufo.order.service.proxy.ProductProxyService;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
...
|
...
|
@@ -74,7 +80,6 @@ public class BuyerOrderServiceImpl implements IBuyerOrderService { |
|
|
@Autowired
|
|
|
private InBoxFacade inBoxFacade;
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
private OrderCacheService orderCacheService;
|
|
|
|
...
|
...
|
@@ -87,6 +92,9 @@ public class BuyerOrderServiceImpl implements IBuyerOrderService { |
|
|
@Autowired
|
|
|
private IBuyerOrderMetaService buyerOrderMetaService;
|
|
|
|
|
|
@Autowired
|
|
|
IPaymentService paymentService;
|
|
|
|
|
|
/**
|
|
|
* 提交订单
|
|
|
* @param orderRequest
|
...
|
...
|
@@ -346,10 +354,17 @@ public class BuyerOrderServiceImpl implements IBuyerOrderService { |
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void cancelBeforePaid(OrderRequest orderRequest, DataNode dataNode, OrderStatus exceptStatus, OrderStatus targetStatus){
|
|
|
// 状态 ![待付款] 不合法
|
|
|
checkStatus(dataNode, orderRequest, exceptStatus);
|
|
|
|
|
|
// 近一分钟内有预支付记录
|
|
|
if (orderRequest.getOrderCancelEvent()!=null && !orderRequest.getOrderCancelEvent().isFinalRetry()){
|
|
|
paymentService.checkPrePay(orderRequest.getUid(), orderRequest.getOrderCode());
|
|
|
}
|
|
|
|
|
|
// 更新订单状态
|
|
|
final OrderStatus orderStatus = targetStatus;
|
|
|
final long orderCode;
|
...
|
...
|
@@ -419,7 +434,6 @@ public class BuyerOrderServiceImpl implements IBuyerOrderService { |
|
|
*/
|
|
|
private void checkStatus(DataNode node, OrderRequest orderRequest, OrderStatus orderStatusEx ) {
|
|
|
|
|
|
|
|
|
BuyerOrder buyerOrder = node.buyerOrderInDB;
|
|
|
// 检查 订单状态
|
|
|
int status = buyerOrder.getStatus() == null ? -1 : buyerOrder.getStatus().intValue();
|
...
|
...
|
@@ -429,6 +443,23 @@ public class BuyerOrderServiceImpl implements IBuyerOrderService { |
|
|
orderRequest.getUid(), orderRequest.getOrderCode(), buyerOrder.getStatus());
|
|
|
throw new ServiceException(ServiceError.ORDER_STATUS_INVALIDATE);
|
|
|
}
|
|
|
|
|
|
// 状态是待支付的场合,到第三方检查是否支付过了
|
|
|
Payment payment = Payment.getPayment(buyerOrder.getPayment());
|
|
|
if (payment != null){
|
|
|
AbstractPayService payService = paymentService.getPayService(payment.getCode());
|
|
|
PayQueryBo payQueryBo = payService.payQuery(String.valueOf(buyerOrder.getOrderCode()));
|
|
|
|
|
|
if (payQueryBo != null && payQueryBo.isPayStatus()){
|
|
|
logger.warn("check status failed ,confirm paid, uid is {}, orderCode is {}, status is {}",
|
|
|
orderRequest.getUid(), orderRequest.getOrderCode(), buyerOrder.getStatus());
|
|
|
// 主动触发支付结果确认
|
|
|
PayConfirmEvent event = new PayConfirmEvent(buyerOrder.getUid(), buyerOrder.getOrderCode(), buyerOrder.getPayment());
|
|
|
EventBusPublisher.publishEvent(event);
|
|
|
|
|
|
throw new ServiceException(ServiceError.ORDER_STATUS_INVALIDATE);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
...
|
...
|
|