|
@@ -40,7 +40,10 @@ import com.yohoufo.order.service.seller.support.SkupTypeCodeSupport; |
|
@@ -40,7 +40,10 @@ import com.yohoufo.order.service.seller.support.SkupTypeCodeSupport; |
40
|
import com.yohoufo.order.utils.LoggerUtils;
|
40
|
import com.yohoufo.order.utils.LoggerUtils;
|
41
|
import com.yohoufo.order.utils.OrderAssist;
|
41
|
import com.yohoufo.order.utils.OrderAssist;
|
42
|
import com.yohoufo.order.utils.PaymentHelper;
|
42
|
import com.yohoufo.order.utils.PaymentHelper;
|
|
|
43
|
+import lombok.Builder;
|
|
|
44
|
+import lombok.Data;
|
43
|
import lombok.Setter;
|
45
|
import lombok.Setter;
|
|
|
46
|
+import lombok.val;
|
44
|
import org.apache.commons.collections.CollectionUtils;
|
47
|
import org.apache.commons.collections.CollectionUtils;
|
45
|
import org.slf4j.Logger;
|
48
|
import org.slf4j.Logger;
|
46
|
import org.springframework.beans.factory.annotation.Autowired;
|
49
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -137,7 +140,7 @@ public class BuyerOrderCancelService { |
|
@@ -137,7 +140,7 @@ public class BuyerOrderCancelService { |
137
|
boolean noResponsibility = Objects.isNull(penaltyAmount)
|
140
|
boolean noResponsibility = Objects.isNull(penaltyAmount)
|
138
|
|| BigDecimal.ZERO.compareTo(penaltyAmount) == 0;
|
141
|
|| BigDecimal.ZERO.compareTo(penaltyAmount) == 0;
|
139
|
//退还优惠券
|
142
|
//退还优惠券
|
140
|
- refundCouponIfNeed(buyerUid, orderCode);
|
143
|
+ asyncRefundCoupon(buyerUid, orderCode, BuyerRefundCouponEvent.BizCase.BUYER_CANCEL_BSD);
|
141
|
int skup = bsdEvent.getSkup();
|
144
|
int skup = bsdEvent.getSkup();
|
142
|
SellerOrderGoods psog = sellerOrderGoodsMapper.selectByPrimaryKey(skup);
|
145
|
SellerOrderGoods psog = sellerOrderGoodsMapper.selectByPrimaryKey(skup);
|
143
|
int targetGoodsStatus = SkupStatus.BUYER_CANCEL_BEFORE_SELLER_DELIVER.getCode();
|
146
|
int targetGoodsStatus = SkupStatus.BUYER_CANCEL_BEFORE_SELLER_DELIVER.getCode();
|
|
@@ -275,7 +278,7 @@ public class BuyerOrderCancelService { |
|
@@ -275,7 +278,7 @@ public class BuyerOrderCancelService { |
275
|
boolean noResponsibility = Objects.isNull(penaltyAmount)
|
278
|
boolean noResponsibility = Objects.isNull(penaltyAmount)
|
276
|
|| BigDecimal.ZERO.compareTo(penaltyAmount) == 0;
|
279
|
|| BigDecimal.ZERO.compareTo(penaltyAmount) == 0;
|
277
|
//退还优惠券
|
280
|
//退还优惠券
|
278
|
- refundCouponIfNeed(buyerUid, orderCode);
|
281
|
+ asyncRefundCoupon(buyerUid, orderCode, BuyerRefundCouponEvent.BizCase.BUYER_CANCEL_BDR);
|
279
|
|
282
|
|
280
|
int skup = bdrEvent.getSkup();
|
283
|
int skup = bdrEvent.getSkup();
|
281
|
SellerOrderGoods targetGoods = new SellerOrderGoods();
|
284
|
SellerOrderGoods targetGoods = new SellerOrderGoods();
|
|
@@ -346,10 +349,12 @@ public class BuyerOrderCancelService { |
|
@@ -346,10 +349,12 @@ public class BuyerOrderCancelService { |
346
|
return;
|
349
|
return;
|
347
|
}
|
350
|
}
|
348
|
OrderStatus targetStatus = null;
|
351
|
OrderStatus targetStatus = null;
|
349
|
- Consumer<BuyerOrder> consumer = null;
|
352
|
+ Consumer<RefundGoodsAmoutNode> consumer = null;
|
|
|
353
|
+ boolean needCompensateCoupon = false;
|
350
|
switch (failType){
|
354
|
switch (failType){
|
351
|
case PLATFORM:
|
355
|
case PLATFORM:
|
352
|
targetStatus = OrderStatus.PLATFORM_BLOWN_CUSTOMS_CLEARANCE;
|
356
|
targetStatus = OrderStatus.PLATFORM_BLOWN_CUSTOMS_CLEARANCE;
|
|
|
357
|
+ needCompensateCoupon = true;
|
353
|
consumer = (buyerOrder1) -> cancelOverseasOrderByPlatform(buyerOrder1);
|
358
|
consumer = (buyerOrder1) -> cancelOverseasOrderByPlatform(buyerOrder1);
|
354
|
break;
|
359
|
break;
|
355
|
case BUYER:
|
360
|
case BUYER:
|
|
@@ -372,9 +377,23 @@ public class BuyerOrderCancelService { |
|
@@ -372,9 +377,23 @@ public class BuyerOrderCancelService { |
372
|
logger.warn("cancelOverseasOrder fail -> buyerOrderMapper.updateStatusByOrderCode, orderCode {}", orderCode);
|
377
|
logger.warn("cancelOverseasOrder fail -> buyerOrderMapper.updateStatusByOrderCode, orderCode {}", orderCode);
|
373
|
return;
|
378
|
return;
|
374
|
}
|
379
|
}
|
|
|
380
|
+ BigDecimal leftGoodsMoney = buyerOrder.getAmount();
|
|
|
381
|
+
|
|
|
382
|
+ BuyerOrderGoods pbog = buyerOrderGoodsMapper.selectOnlyByOrderCode(orderCode);
|
|
|
383
|
+ Integer skup = pbog.getSkup();
|
375
|
//
|
384
|
//
|
376
|
buyerOrder.setStatus(targetStatus.getCode());
|
385
|
buyerOrder.setStatus(targetStatus.getCode());
|
377
|
- consumer.accept(buyerOrder);
|
386
|
+
|
|
|
387
|
+ RefundGoodsAmoutNode rgaNode = RefundGoodsAmoutNode.builder()
|
|
|
388
|
+ .buyerOrder(buyerOrder)
|
|
|
389
|
+ .skup(skup)
|
|
|
390
|
+ .targetOrderStatus(targetStatus)
|
|
|
391
|
+ .leftBuyerMoney(leftGoodsMoney)
|
|
|
392
|
+ .needCompensateCoupon(needCompensateCoupon)
|
|
|
393
|
+ .build();
|
|
|
394
|
+
|
|
|
395
|
+ //
|
|
|
396
|
+ consumer.accept(rgaNode);
|
378
|
//
|
397
|
//
|
379
|
orderStatusFlowService.addAsy(orderCode,targetStatus.getCode());
|
398
|
orderStatusFlowService.addAsy(orderCode,targetStatus.getCode());
|
380
|
}
|
399
|
}
|
|
@@ -384,20 +403,42 @@ public class BuyerOrderCancelService { |
|
@@ -384,20 +403,42 @@ public class BuyerOrderCancelService { |
384
|
* 货品平台自己吃了
|
403
|
* 货品平台自己吃了
|
385
|
* 买家钱退给买家
|
404
|
* 买家钱退给买家
|
386
|
* 赔偿卖家ufo券 券金额还未定
|
405
|
* 赔偿卖家ufo券 券金额还未定
|
387
|
- * @param buyerOrder
|
406
|
+ * @param rgaNode
|
388
|
*/
|
407
|
*/
|
389
|
- private void cancelOverseasOrderByPlatform(BuyerOrder buyerOrder){
|
408
|
+ private void cancelOverseasOrderByPlatform(RefundGoodsAmoutNode rgaNode){
|
|
|
409
|
+ BuyerOrder buyerOrder = rgaNode.buyerOrder;
|
|
|
410
|
+ int skup = rgaNode.skup;
|
|
|
411
|
+ OrderStatus targetOrderStatus = rgaNode.targetOrderStatus;
|
|
|
412
|
+ BigDecimal leftBuyerMoney = rgaNode.leftBuyerMoney;
|
|
|
413
|
+ boolean needCompensateCoupon = rgaNode.needCompensateCoupon;
|
|
|
414
|
+ if (needCompensateCoupon){
|
|
|
415
|
+ asyncRefundCoupon(buyerOrder.getUid(), buyerOrder.getOrderCode(), BuyerRefundCouponEvent.BizCase.PLATFORM_BLOWN_CUSTOMS_CLEARANCE);
|
|
|
416
|
+ }
|
390
|
|
417
|
|
|
|
418
|
+ refundGoodsAmount(buyerOrder, skup, targetOrderStatus, leftBuyerMoney);
|
391
|
}
|
419
|
}
|
392
|
|
420
|
|
393
|
/**
|
421
|
/**
|
394
|
* 买家原因失败
|
422
|
* 买家原因失败
|
395
|
* 货品平台自己吃了
|
423
|
* 货品平台自己吃了
|
396
|
* 货款钱退给买家
|
424
|
* 货款钱退给买家
|
397
|
- * @param buyerOrder
|
425
|
+ * @param rgaNode
|
398
|
*/
|
426
|
*/
|
399
|
- private void cancelOverseasOrderByBuyer(BuyerOrder buyerOrder){
|
427
|
+ private void cancelOverseasOrderByBuyer(RefundGoodsAmoutNode rgaNode){
|
|
|
428
|
+ BuyerOrder buyerOrder = rgaNode.buyerOrder;
|
|
|
429
|
+ int skup = rgaNode.skup;
|
|
|
430
|
+ OrderStatus targetOrderStatus = rgaNode.targetOrderStatus;
|
|
|
431
|
+ BigDecimal leftBuyerMoney = rgaNode.leftBuyerMoney;
|
|
|
432
|
+ refundGoodsAmount(buyerOrder, skup, targetOrderStatus, leftBuyerMoney);
|
|
|
433
|
+ }
|
400
|
|
434
|
|
|
|
435
|
+ @Data@Builder
|
|
|
436
|
+ private static class RefundGoodsAmoutNode{
|
|
|
437
|
+ BuyerOrder buyerOrder;
|
|
|
438
|
+ int skup;
|
|
|
439
|
+ OrderStatus targetOrderStatus;
|
|
|
440
|
+ BigDecimal leftBuyerMoney;
|
|
|
441
|
+ boolean needCompensateCoupon;
|
401
|
}
|
442
|
}
|
402
|
|
443
|
|
403
|
private void refundGoodsAmount(BuyerOrder buyerOrder,int skup, OrderStatus targetOrderStatus, BigDecimal leftBuyerMoney){
|
444
|
private void refundGoodsAmount(BuyerOrder buyerOrder,int skup, OrderStatus targetOrderStatus, BigDecimal leftBuyerMoney){
|
|
@@ -428,7 +469,8 @@ public class BuyerOrderCancelService { |
|
@@ -428,7 +469,8 @@ public class BuyerOrderCancelService { |
428
|
BuyerOrder buyerOrder;
|
469
|
BuyerOrder buyerOrder;
|
429
|
TransferCase transferCase;
|
470
|
TransferCase transferCase;
|
430
|
OrderStatus targetOrderStatus;
|
471
|
OrderStatus targetOrderStatus;
|
431
|
- boolean reSellFlag;//重新上架标志,重新上架则不退保证金了
|
472
|
+ //重新上架标志,重新上架则不退保证金了
|
|
|
473
|
+ boolean reSellFlag;
|
432
|
|
474
|
|
433
|
@Setter
|
475
|
@Setter
|
434
|
SellerWalletDetail.Type swdType;
|
476
|
SellerWalletDetail.Type swdType;
|
|
@@ -578,4 +620,14 @@ public class BuyerOrderCancelService { |
|
@@ -578,4 +620,14 @@ public class BuyerOrderCancelService { |
578
|
logger.warn("refund coupon error,uid:{},orderCode:{}", uid, orderCode, ex);
|
620
|
logger.warn("refund coupon error,uid:{},orderCode:{}", uid, orderCode, ex);
|
579
|
}
|
621
|
}
|
580
|
}
|
622
|
}
|
|
|
623
|
+
|
|
|
624
|
+ public void asyncRefundCoupon(int uid, long orderCode, BuyerRefundCouponEvent.BizCase refundCouponCase) {
|
|
|
625
|
+ val buyerRefundCouponEvent = BuyerRefundCouponEvent.builder()
|
|
|
626
|
+ .bizCase(refundCouponCase)
|
|
|
627
|
+ .uid(uid)
|
|
|
628
|
+ .orderCode(orderCode)
|
|
|
629
|
+ .build();
|
|
|
630
|
+ logger.info("async refund coupon by order {} request is {}", orderCode, buyerRefundCouponEvent);
|
|
|
631
|
+ EventBusPublisher.publishEvent(buyerRefundCouponEvent);
|
|
|
632
|
+ }
|
581
|
} |
633
|
} |