...
|
...
|
@@ -211,16 +211,14 @@ public class SellerOrderCancelService { |
|
|
//并发控制
|
|
|
//refund earnestMoney
|
|
|
//sync skup
|
|
|
if (result>0) {
|
|
|
SellerOrderGoods sogCondition = new SellerOrderGoods();
|
|
|
sogCondition.setId(skup);
|
|
|
sogCondition.setStatus(targetSOStatus.getSkupStatus().getCode());
|
|
|
sellerOrderGoodsMapper.updateByPrimaryKeySelective(sogCondition);
|
|
|
//sync skup
|
|
|
SellerOrderGoods tsog = new SellerOrderGoods();
|
|
|
tsog.setId(skup);
|
|
|
productProxyService.syncSkup(tsog, targetSOStatus.getSkupStatus());
|
|
|
}
|
|
|
SellerOrderGoods sogCondition = new SellerOrderGoods();
|
|
|
sogCondition.setId(skup);
|
|
|
sogCondition.setStatus(targetSOStatus.getSkupStatus().getCode());
|
|
|
result += sellerOrderGoodsMapper.updateByPrimaryKeySelective(sogCondition);
|
|
|
//sync skup
|
|
|
SellerOrderGoods tsog = new SellerOrderGoods();
|
|
|
tsog.setId(skup);
|
|
|
productProxyService.syncSkup(tsog, targetSOStatus.getSkupStatus());
|
|
|
return result;
|
|
|
}
|
|
|
|
...
|
...
|
@@ -251,6 +249,11 @@ public class SellerOrderCancelService { |
|
|
paymentService.refund(refundReq);
|
|
|
logger.info("in cancelAfterPayButNotBuyAction, refund earnestMoney finish, seller {}, order code {}, skup {}, earnestMoney {}",
|
|
|
sellerUid, orderCode, skup, earnestMoney);
|
|
|
BillLogEvent sellerBillLogEvent = bleb.tradeStatus(100)
|
|
|
.build();
|
|
|
EventBusPublisher.publishEvent(sellerBillLogEvent);
|
|
|
|
|
|
|
|
|
}catch (Exception ex){
|
|
|
logger.warn("in appraiseSuccess, refund fail, req {}", refundReq, ex);
|
|
|
BillLogEvent sellerBillLogEvent = bleb.tradeStatus(200)
|
...
|
...
|
@@ -266,13 +269,6 @@ public class SellerOrderCancelService { |
|
|
SellerOrderStatusNode statusNode = SellerOrderStatusNode.builder().targetStatus(targetSOStatus)
|
|
|
.exceptStatus(expectStatus).build();
|
|
|
result = cancelBeforePayAction(sellerUid, orderCode, skup, statusNode);
|
|
|
//refund earnestMoney
|
|
|
if (result>0){
|
|
|
|
|
|
}
|
|
|
BillLogEvent sellerBillLogEvent = bleb.tradeStatus(100)
|
|
|
.build();
|
|
|
EventBusPublisher.publishEvent(sellerBillLogEvent);
|
|
|
return result;
|
|
|
}
|
|
|
|
...
|
...
|
@@ -292,10 +288,7 @@ public class SellerOrderCancelService { |
|
|
logger.info("in seller cancel After Pay while Exist Buy Action, uid {}, orderCode {}, buyerOrderCode {}",
|
|
|
sellerUid, sellerOrderCode, buyerOrderCode);
|
|
|
|
|
|
//TODO 分赃(分账) 有待考虑使用2比对
|
|
|
TransferMoneyRequest tmReq = TransferMoneyRequest.builder().buyerOrderCode(buyerOrderCode)
|
|
|
.type(TransferCase.SELLER_PLAY_BUYER.getCode()).build();
|
|
|
paymentService.transferMon(tmReq);
|
|
|
|
|
|
|
|
|
BigDecimal goodsMoney = buyerOrder.getAmount();
|
|
|
PaymentRequest req = PaymentRequest.builder().uid(buyerUid)
|
...
|
...
|
@@ -307,51 +300,56 @@ public class SellerOrderCancelService { |
|
|
.amount(goodsMoney)
|
|
|
.skup(sellerOrder.getSkup());
|
|
|
try{
|
|
|
//TODO 分赃(分账) 有待考虑使用2比对
|
|
|
TransferMoneyRequest tmReq = TransferMoneyRequest.builder().buyerOrderCode(buyerOrderCode)
|
|
|
.type(TransferCase.SELLER_PLAY_BUYER.getCode()).build();
|
|
|
paymentService.transferMon(tmReq);
|
|
|
paymentService.refund(req);
|
|
|
|
|
|
BillLogEvent buyererBillLogEvent = bleb.tradeStatus(100)
|
|
|
.build();
|
|
|
EventBusPublisher.publishEvent(buyererBillLogEvent);
|
|
|
|
|
|
//
|
|
|
inBoxFacade.noticeBuyerWhenSellerCancelAfterPaid(buyerUid, buyerOrderCode);
|
|
|
//TODO 异步
|
|
|
SellerOrderGoods psog = sellerOrderGoodsMapper.selectByPrimaryKey(sellerOrder.getSkup());
|
|
|
inBoxFacade.sellerCancelAfterBuyerPaid(sellerUid, psog.getProductName());
|
|
|
}catch (Exception ex){
|
|
|
logger.warn("in cancelAfterPayExistBuyAction , refund fail,req {}", req, ex);
|
|
|
BillLogEvent buyererBillLogEvent = bleb.tradeStatus(200)
|
|
|
.build();
|
|
|
EventBusPublisher.publishEvent(buyererBillLogEvent);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
int result = 0;
|
|
|
}finally{
|
|
|
int result = 0;
|
|
|
//actions of buyer order and related
|
|
|
//update buyer Order
|
|
|
//target Buyer Order Status
|
|
|
Integer targetBOStatus;
|
|
|
targetBOStatus = OrderStatus.SELLER_CANCEL_AFTER_PAY.getCode();
|
|
|
BuyerOrder tbo = new BuyerOrder();
|
|
|
tbo.setUid(buyerUid);
|
|
|
tbo.setOrderCode(buyerOrderCode);
|
|
|
tbo.setStatus(targetBOStatus);
|
|
|
tbo.setUpdateTime(DateUtil.getCurrentTimeSecond());
|
|
|
result += buyerOrderMapper.updateByOrderCode(tbo);
|
|
|
|
|
|
//update seller order
|
|
|
SellerOrderStatus targetSOStatus;
|
|
|
targetSOStatus = SellerOrderStatus.PLAY_BUYER;
|
|
|
SellerOrder target = new SellerOrder();
|
|
|
target.setOrderCode(sellerOrderCode);
|
|
|
target.setUid(sellerUid);
|
|
|
target.setStatus(targetSOStatus.getCode());
|
|
|
target.setUpdateTime(DateUtil.getCurrentTimeSecond());
|
|
|
target.setExceptStatus(SellerOrderStatus.HAS_PAYED.getCode());
|
|
|
result += sellerOrderMapper.updateByOrderCode(target);
|
|
|
|
|
|
//actions of buyer order and related
|
|
|
//update buyer Order
|
|
|
//target Buyer Order Status
|
|
|
Integer targetBOStatus;
|
|
|
targetBOStatus = OrderStatus.SELLER_CANCEL_AFTER_PAY.getCode();
|
|
|
BuyerOrder tbo = new BuyerOrder();
|
|
|
tbo.setUid(buyerUid);
|
|
|
tbo.setOrderCode(buyerOrderCode);
|
|
|
tbo.setStatus(targetBOStatus);
|
|
|
tbo.setUpdateTime(DateUtil.getCurrentTimeSecond());
|
|
|
result += buyerOrderMapper.updateByOrderCode(tbo);
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
//update seller order
|
|
|
SellerOrderStatus targetSOStatus;
|
|
|
targetSOStatus = SellerOrderStatus.PLAY_BUYER;
|
|
|
SellerOrder target = new SellerOrder();
|
|
|
target.setOrderCode(sellerOrderCode);
|
|
|
target.setUid(sellerUid);
|
|
|
target.setStatus(targetSOStatus.getCode());
|
|
|
target.setUpdateTime(DateUtil.getCurrentTimeSecond());
|
|
|
target.setExceptStatus(SellerOrderStatus.HAS_PAYED.getCode());
|
|
|
result += sellerOrderMapper.updateByOrderCode(target);
|
|
|
|
|
|
BillLogEvent buyererBillLogEvent = bleb.tradeStatus(100)
|
|
|
.build();
|
|
|
EventBusPublisher.publishEvent(buyererBillLogEvent);
|
|
|
|
|
|
//
|
|
|
inBoxFacade.noticeBuyerWhenSellerCancelAfterPaid(buyerUid, buyerOrderCode);
|
|
|
//TODO 异步
|
|
|
SellerOrderGoods psog = sellerOrderGoodsMapper.selectByPrimaryKey(sellerOrder.getSkup());
|
|
|
inBoxFacade.sellerCancelAfterBuyerPaid(sellerUid, psog.getProductName());
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
private int cancelAfterPayAction(SellerOrder sellerOrder, BuyerOrder buyerOrder){
|
...
|
...
|
@@ -460,45 +458,38 @@ public class SellerOrderCancelService { |
|
|
PayRefundBo payRefundBo = paymentService.refund(refundReq);
|
|
|
logger.info("in yoho Off Shelve Cancel , refund earnestMoney finish, seller {}, order code {}, skup {}, earnestMoney {}",
|
|
|
sellerUid, orderCode, skup, earnestMoney);
|
|
|
BillLogEvent sellerBillLogEvent = bleb.tradeStatus(100)
|
|
|
.build();
|
|
|
EventBusPublisher.publishEvent(sellerBillLogEvent);
|
|
|
|
|
|
inBoxFacade.notifyUnshelfCauseBySpecialReason(sellerUid, psog.getProductName());
|
|
|
}catch (Exception ex){
|
|
|
logger.warn("in yoho Off Shelve Cancel, refund earnestMoney fail, seller {}, order code {}, skup {}, earnestMoney {}",
|
|
|
sellerUid, orderCode, skup, earnestMoney, ex);
|
|
|
BillLogEvent sellerBillLogEvent = bleb.tradeStatus(200)
|
|
|
.build();
|
|
|
EventBusPublisher.publishEvent(sellerBillLogEvent);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
final SellerOrderStatus targetSellerOrderStatus = SellerOrderStatus.YOHO_CANCEL_SELL;
|
|
|
//TODO check skup is buy away
|
|
|
SellerOrderGoods targetGoods = new SellerOrderGoods();
|
|
|
targetGoods.setId(skup);
|
|
|
targetGoods.setStatus(targetSellerOrderStatus.getSkupStatus().getCode());
|
|
|
targetGoods.setExceptStatus(skupStatus);
|
|
|
//利用数据库做并发控制
|
|
|
int result = sellerOrderGoodsMapper.updateStatusBySkpu(targetGoods);
|
|
|
if (result == 0) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
SellerOrder tso = new SellerOrder();
|
|
|
tso.setOrderCode(sellerOrder.getOrderCode());
|
|
|
tso.setExceptStatus(sellerOrder.getStatus());
|
|
|
tso.setStatus(targetSellerOrderStatus.getCode());
|
|
|
tso.setUid(sellerUid);
|
|
|
tso.setUpdateTime(DateUtil.getCurrentTimeSecond());
|
|
|
result = sellerOrderMapper.updateByOrderCode(tso);
|
|
|
BillLogEvent sellerBillLogEvent = bleb.tradeStatus(100)
|
|
|
.build();
|
|
|
EventBusPublisher.publishEvent(sellerBillLogEvent);
|
|
|
//refund earnestMoney only has payed
|
|
|
if (isPayEarnestMoney && result > 0) {
|
|
|
|
|
|
}finally {
|
|
|
final SellerOrderStatus targetSellerOrderStatus = SellerOrderStatus.YOHO_CANCEL_SELL;
|
|
|
//TODO check skup is buy away
|
|
|
SellerOrderGoods targetGoods = new SellerOrderGoods();
|
|
|
targetGoods.setId(skup);
|
|
|
targetGoods.setStatus(targetSellerOrderStatus.getSkupStatus().getCode());
|
|
|
targetGoods.setExceptStatus(skupStatus);
|
|
|
//利用数据库做并发控制
|
|
|
int result = sellerOrderGoodsMapper.updateStatusBySkpu(targetGoods);
|
|
|
if (result == 0) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
SellerOrder tso = new SellerOrder();
|
|
|
tso.setOrderCode(sellerOrder.getOrderCode());
|
|
|
tso.setExceptStatus(sellerOrder.getStatus());
|
|
|
tso.setStatus(targetSellerOrderStatus.getCode());
|
|
|
tso.setUid(sellerUid);
|
|
|
tso.setUpdateTime(DateUtil.getCurrentTimeSecond());
|
|
|
result = sellerOrderMapper.updateByOrderCode(tso);
|
|
|
}
|
|
|
|
|
|
|
|
|
inBoxFacade.notifyUnshelfCauseBySpecialReason(sellerUid, psog.getProductName());
|
|
|
}
|
|
|
|
|
|
} |
...
|
...
|
|