...
|
...
|
@@ -93,7 +93,7 @@ public class AppraiseService { |
|
|
|
|
|
|
|
|
BillLogEvent.BillLogEventBuilder bleb = BillLogEvent.builder()
|
|
|
.buyerUid(buyerUid).sellerUid(sellerUid).orderCode(orderCode)
|
|
|
.buyerUid(buyerUid).sellerUid(sellerUid).orderCode(sellerOrder.getOrderCode())
|
|
|
.payType(sellerOrder.getPayment()).refundCase(RefundCase.SELLER_EARNEST_MONEY)
|
|
|
.skup(skup);
|
|
|
try {
|
...
|
...
|
@@ -179,6 +179,14 @@ public class AppraiseService { |
|
|
LOGGER.warn("appraiseFail getOrderInfo order not exist, orderCode {}", orderCode);
|
|
|
throw new ServiceException(ServiceError.ORDER_NULL);
|
|
|
}
|
|
|
OrderStatus expectStatus = OrderStatus.PLATFORM_CHECKING;
|
|
|
if (buyerOrder.getStatus() != expectStatus.getCode()){
|
|
|
LOGGER.warn("appraiseFail expectStatus {}, actual status {}, ordercode {}", expectStatus,
|
|
|
buyerOrder.getStatus(), orderCode);
|
|
|
throw new ServiceException(ServiceError.ORDER_STATUS_INVALIDATE);
|
|
|
}
|
|
|
|
|
|
|
|
|
int buyerUid = buyerOrder.getUid();
|
|
|
int sellerUid = buyerOrder.getSellerUid();
|
|
|
BuyerOrderGoods bog = buyerOrderGoodsMapper.selectByOrderCode(buyerUid, orderCode);
|
...
|
...
|
@@ -187,11 +195,7 @@ public class AppraiseService { |
|
|
//将卖家的保证金分账给平台和买家
|
|
|
TransferMoneyRequest tmReq = TransferMoneyRequest.builder().buyerOrderCode(orderCode)
|
|
|
.type(TransferCase.APPRAISE_FAIL.getCode()).build();
|
|
|
try{
|
|
|
paymentService.transferMon(tmReq);
|
|
|
}catch (Exception ex){
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
BigDecimal goodsMoney = buyerOrder.getAmount();
|
|
|
PaymentRequest req = PaymentRequest.builder().uid(buyerUid)
|
|
|
.orderCode(orderCode).refundAmount(goodsMoney.doubleValue())
|
...
|
...
|
@@ -202,34 +206,41 @@ public class AppraiseService { |
|
|
.amount(goodsMoney)
|
|
|
.skup(skup);
|
|
|
try{
|
|
|
paymentService.transferMon(tmReq);
|
|
|
paymentService.refund(req);
|
|
|
BillLogEvent buyererBillLogEvent = bleb.tradeStatus(100)
|
|
|
.build();
|
|
|
EventBusPublisher.publishEvent(buyererBillLogEvent);
|
|
|
SellerOrderGoods sellerOrderGoods = sellerOrderGoodsMapper.selectByPrimaryKey(skup);
|
|
|
inBoxFacade.noticeSellerWhenAppraiseFail(sellerUid, sellerOrderGoods.getProductName());
|
|
|
|
|
|
inBoxFacade.buyerGetEarnestMoneyWhenAppraiseFail(buyerUid, buyerOrder.getOrderCode());
|
|
|
}catch (Exception ex){
|
|
|
LOGGER.warn("in appraiseFail , refund fail,req {}", req, ex);
|
|
|
LOGGER.warn("in appraiseFail ,Transfer or refund fail,req {}", req, ex);
|
|
|
BillLogEvent buyererBillLogEvent = bleb.tradeStatus(200)
|
|
|
.build();
|
|
|
EventBusPublisher.publishEvent(buyererBillLogEvent);
|
|
|
return false;
|
|
|
}finally {
|
|
|
|
|
|
|
|
|
// 更新买家订单状态 为鉴定不通过
|
|
|
OrderStatus targetStatus = OrderStatus.CHECKING_FAKE;
|
|
|
LOGGER.info("appraiseFail update buyer order {} ", buyerOrder);
|
|
|
// TODO 最好把其他不用更新的值置为null,以免并发修改其他无关此场景的字段
|
|
|
|
|
|
// TODO 通过修改记录状态来控制并发操作“鉴定不通过” 修改状态带上原始状态,成功修改完状态后再调用分账接口
|
|
|
|
|
|
buyerOrderMapper.updateStatusByOrderCode(orderCode, buyerUid, expectStatus.getCode(), targetStatus.getCode(),
|
|
|
DateUtil.getCurrentTimeSecond());
|
|
|
|
|
|
//更新物流信息,写到最后
|
|
|
expressInfoService.appraiseFail(sellerUid, expressCompanyId, orderCode, wayBillCode, depotNum);
|
|
|
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
BillLogEvent buyererBillLogEvent = bleb.tradeStatus(100)
|
|
|
.build();
|
|
|
EventBusPublisher.publishEvent(buyererBillLogEvent);
|
|
|
|
|
|
// 更新买家订单状态 为鉴定不通过
|
|
|
buyerOrder.setStatus(OrderStatus.CHECKING_FAKE.getCode());
|
|
|
buyerOrder.setUpdateTime(DateUtil.getCurrentTimeSecond());
|
|
|
LOGGER.info("appraiseFail update buyer order {} ", buyerOrder);
|
|
|
// TODO 最好把其他不用更新的值置为null,以免并发修改其他无关此场景的字段
|
|
|
|
|
|
// TODO 通过修改记录状态来控制并发操作“鉴定不通过” 修改状态带上原始状态,成功修改完状态后再调用分账接口
|
|
|
buyerOrderMapper.updateByPrimaryKeySelective(buyerOrder);
|
|
|
|
|
|
//更新物流信息,写到最后
|
|
|
expressInfoService.appraiseFail(buyerOrder.getSellerUid(), expressCompanyId, orderCode, wayBillCode, depotNum);
|
|
|
SellerOrderGoods sellerOrderGoods = sellerOrderGoodsMapper.selectByPrimaryKey(skup);
|
|
|
inBoxFacade.noticeSellerWhenAppraiseFail(sellerUid, sellerOrderGoods.getProductName());
|
|
|
|
|
|
inBoxFacade.buyerGetEarnestMoneyWhenAppraiseFail(buyerUid, buyerOrder.getOrderCode());
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
} |
...
|
...
|
|