...
|
...
|
@@ -23,9 +23,12 @@ import com.yohoufo.dal.product.ProductMapper; |
|
|
import com.yohoufo.dal.product.model.Product;
|
|
|
import com.yohoufo.order.common.ActionStatusHold;
|
|
|
import com.yohoufo.order.common.DelStatus;
|
|
|
import com.yohoufo.order.common.Operator;
|
|
|
import com.yohoufo.order.event.*;
|
|
|
import com.yohoufo.order.model.OperateTransferExpressInfo;
|
|
|
import com.yohoufo.order.model.PayQueryBo;
|
|
|
import com.yohoufo.order.model.RequestedCancelEventStatusChangeBuyerOrder;
|
|
|
import com.yohoufo.order.model.RequestedStatusChangeBuyerOrder;
|
|
|
import com.yohoufo.order.model.request.OrderRequest;
|
|
|
import com.yohoufo.order.model.request.SaveQualityCheckInfoRequest;
|
|
|
import com.yohoufo.order.model.response.OrderSummaryResp;
|
...
|
...
|
@@ -141,6 +144,9 @@ public class BuyerOrderServiceImpl implements IBuyerOrderService { |
|
|
@Autowired
|
|
|
private BuyerOrderAssistant buyerOrderAssistant;
|
|
|
|
|
|
@Autowired
|
|
|
private BuyerOrderStateChangers buyerOrderStateChangers;
|
|
|
|
|
|
/**
|
|
|
* 提交订单
|
|
|
* @param orderRequest
|
...
|
...
|
@@ -375,22 +381,45 @@ public class BuyerOrderServiceImpl implements IBuyerOrderService { |
|
|
|
|
|
@Override
|
|
|
public void cancelByCS(int uid, long orderCode) {
|
|
|
buyerOrderCancelService.cancelForSellerShamSendOut(uid, orderCode,OrderStatus.SELLER_SHAM_SEND_OUT);
|
|
|
buyerOrderCancelService.cancelForSellerShamSendOut(uid, orderCode, OrderStatus.SELLER_SHAM_SEND_OUT);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void cancelByAuto(OrderRequest orderRequest){
|
|
|
public void cancelByAuto(OrderRequest orderRequest) {
|
|
|
logger.info("Buyer Order cancel time out ,(OrderRequest) {}", orderRequest);
|
|
|
DataNode node = checkBase(orderRequest);
|
|
|
BuyerOrder buyerOrder = node.buyerOrderInDB;
|
|
|
if (buyerOrder.isBuyerBidOrder()) {
|
|
|
doCancelBidByAuto(buyerOrder, orderRequest.getOrderCancelEvent(), OrderStatus.getOrderStatus(buyerOrder.getStatus()), OrderStatus.BUYER_CANCEL_TIMEOUT);
|
|
|
} else {
|
|
|
doCancelByAuto(orderRequest, node);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void doCancelByAuto(OrderRequest orderRequest, DataNode node) {
|
|
|
OrderStatus expectStatus = OrderStatus.WAITING_PAY;
|
|
|
OrderStatus targetStatus = OrderStatus.BUYER_CANCEL_TIMEOUT;
|
|
|
DataNode node = checkBase(orderRequest);
|
|
|
cancelBeforePaid(orderRequest, node, expectStatus, targetStatus);
|
|
|
//取消事件
|
|
|
orderChangeListenerContainer.fireAsyncEvent(new BuyerOrderChangeEvent(node.buyerOrderInDB, BuyerOrderChangeEvent.BizCase.CANCEL_BYSYSAUTO, targetStatus));
|
|
|
|
|
|
//记录状态变更信息
|
|
|
logger.info("in cancelByAuto record status change, orderRequest {}", orderRequest);
|
|
|
orderStatusFlowService.addAsy(orderRequest.getOrderCode(),targetStatus.getCode());
|
|
|
orderStatusFlowService.addAsy(orderRequest.getOrderCode(), targetStatus.getCode());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void cancelBidByAuto(OrderRequest orderRequest) {
|
|
|
buyerOrderStateChangers.selectOneToChange(orderRequest.getUid(), orderRequest.getOrderCode(), OrderStatus.BIDING, OrderStatus.BUYER_CANCEL_TIMEOUT, Operator.SYSTEM);
|
|
|
}
|
|
|
|
|
|
private void doCancelBidByAuto(BuyerOrder buyerOrder, OrderCancelEvent orderCancelEvent, OrderStatus sourceStatus, OrderStatus targetStatus) {
|
|
|
RequestedCancelEventStatusChangeBuyerOrder statusChangeBuyerOrder = new RequestedCancelEventStatusChangeBuyerOrder(buyerOrder,
|
|
|
sourceStatus,
|
|
|
targetStatus,
|
|
|
Operator.SYSTEM,
|
|
|
orderCancelEvent);
|
|
|
buyerOrderStateChangers.selectOneToChange(statusChangeBuyerOrder);
|
|
|
}
|
|
|
|
|
|
/**
|
...
|
...
|
@@ -429,9 +458,32 @@ public class BuyerOrderServiceImpl implements IBuyerOrderService { |
|
|
|
|
|
boolean useDepositGoods = node.useDepositGoods;
|
|
|
switch (expectStatus){
|
|
|
case WAITING_PAY_DEPOSIT:
|
|
|
targetStatus = OrderStatus.BUYER_CANCEL_BEFORE_PAY;
|
|
|
buyerOrderStateChangers.selectOneToChange(buyerOrder, OrderStatus.WAITING_PAY_DEPOSIT, targetStatus);
|
|
|
break;
|
|
|
case BIDING:
|
|
|
targetStatus = OrderStatus.BUYER_CANCEL_BEFORE_PAY;
|
|
|
//求购中取消
|
|
|
buyerOrderStateChangers.selectOneToChange(buyerOrder, OrderStatus.BIDING, targetStatus);
|
|
|
break;
|
|
|
case WAITING_PAY:
|
|
|
targetStatus = OrderStatus.BUYER_CANCEL_BEFORE_PAY;
|
|
|
cancelBeforePaid(orderRequest, node, expectStatus, targetStatus);
|
|
|
if (buyerOrder.isBuyerBidOrder()) {
|
|
|
RequestedCancelEventStatusChangeBuyerOrder statusChangeBuyerOrder = new RequestedCancelEventStatusChangeBuyerOrder(buyerOrder,
|
|
|
expectStatus,
|
|
|
OrderStatus.BUYER_CANCEL_BEFORE_PAY,
|
|
|
Operator.USER,
|
|
|
orderRequest.getOrderCancelEvent());
|
|
|
|
|
|
buyerOrderStateChangers.selectOneToChange(statusChangeBuyerOrder);
|
|
|
} else {
|
|
|
targetStatus = OrderStatus.BUYER_CANCEL_BEFORE_PAY;
|
|
|
cancelBeforePaid(orderRequest, node, expectStatus, targetStatus);
|
|
|
//取消事件
|
|
|
orderChangeListenerContainer.fireAsyncEvent(new BuyerOrderChangeEvent(buyerOrder, BuyerOrderChangeEvent.BizCase.CANCEL_BYBUYER, targetStatus));
|
|
|
orderStatusFlowService.addAsy(orderCode, targetStatus.getCode());
|
|
|
}
|
|
|
break;
|
|
|
case HAS_PAYED:
|
|
|
BuyerOrderGoods bog = buyerOrderGoodsMapper.selectByOrderCode(uid, orderCode);
|
...
|
...
|
@@ -451,6 +503,9 @@ public class BuyerOrderServiceImpl implements IBuyerOrderService { |
|
|
asyncUnlockDepositGoods(buyerOrder.getSellerUid(), node.depositCodeOfSkup);
|
|
|
}
|
|
|
}
|
|
|
//取消事件
|
|
|
orderChangeListenerContainer.fireAsyncEvent(new BuyerOrderChangeEvent(buyerOrder, BuyerOrderChangeEvent.BizCase.CANCEL_BYBUYER, targetStatus));
|
|
|
orderStatusFlowService.addAsy(orderCode,targetStatus.getCode());
|
|
|
break;
|
|
|
case SELLER_SEND_OUT:
|
|
|
bog = buyerOrderGoodsMapper.selectByOrderCode(uid = orderRequest.getUid(),
|
...
|
...
|
@@ -466,6 +521,9 @@ public class BuyerOrderServiceImpl implements IBuyerOrderService { |
|
|
.depositCode(node.depositCodeOfSellerUsingDeliver)
|
|
|
.build();
|
|
|
buyerOrderCancelService.cancel(bdre);
|
|
|
//取消事件
|
|
|
orderChangeListenerContainer.fireAsyncEvent(new BuyerOrderChangeEvent(buyerOrder, BuyerOrderChangeEvent.BizCase.CANCEL_BYBUYER, targetStatus));
|
|
|
orderStatusFlowService.addAsy(orderCode,targetStatus.getCode());
|
|
|
break;
|
|
|
default:
|
|
|
logger.warn("in buyer cancel fail uid {} order code {} expectStatus {}",
|
...
|
...
|
@@ -474,9 +532,6 @@ public class BuyerOrderServiceImpl implements IBuyerOrderService { |
|
|
}
|
|
|
//记录状态变更信息
|
|
|
logger.info("in doCancel record status {} change to {}, orderRequest {}", expectStatus, targetStatus, orderRequest);
|
|
|
//取消事件
|
|
|
orderChangeListenerContainer.fireAsyncEvent(new BuyerOrderChangeEvent(buyerOrder, BuyerOrderChangeEvent.BizCase.CANCEL_BYBUYER, targetStatus));
|
|
|
orderStatusFlowService.addAsy(orderCode,targetStatus.getCode());
|
|
|
}
|
|
|
|
|
|
private void asyncUnlockDepositGoods(Integer sellerUid,String depositCode){
|
...
|
...
|
|