Authored by LUOXC

虚假发货

... ... @@ -34,7 +34,7 @@ public class SellerWalletDetail {
public enum Type {
// 1:充值,11:发布上架,12:加价,13:减价,
// 21卖家下架,22系统下架,31卖家不卖,32卖家超时发货,33鉴定不通过,
// 21卖家下架,22系统下架,31卖家不卖,32卖家超时发货,33鉴定不通过,34卖家虚假发货
// 41买家取消(无物流), 42买家取消(有物流),
// 51鉴定通过,
// 61退还保证金(退出商家)
... ... @@ -47,7 +47,7 @@ public class SellerWalletDetail {
SELLER_CANCEL("卖家不卖了", 31),
SELLER_OVER_TIME("卖家发货超时", 32),
APPRAISE_FAIL("鉴定不通过", 33),
CS_CANCEL_BEFORE_DEPOT_RECEIVE("鉴定中心收货前客服取消", 34),
SELLER_SHAM_SEND_OUT("卖家虚假发货", 34),
BUYER_CANCEL_NO_DELIVERY("买家取消(无物流)", 41),
BUYER_CANCEL_DELIVERY("买家取消(有物流)", 42),
APPRAISE_OK("鉴定通过", 51),
... ...
... ... @@ -23,7 +23,7 @@ public enum AlarmConfig {
"buyerOrder.transferEarnestMoney",
"buyerOrder.refundGoodsMoney"),
CS_CANCEL_BEFORE_DEPOT_RECEIVE("鉴定中心收货前客服取消",
SELLER_SHAM_SEND_OUT("卖家虚假发货",
"buyerOrder.transferEarnestMoney",
"buyerOrder.refundGoodsMoney");
... ...
... ... @@ -15,7 +15,7 @@ import lombok.experimental.Builder;
@AllArgsConstructor
public class BuyerRefundCouponEvent extends Event {
public enum BizCase{
APPRAISE_FAIL, SELLER_DELIVER_TIMEOUT, SELLER_PLAY_BUYER, BUYER_CANCEL_BSD, BUYER_CANCEL_BDR,CS_CANCEL_BEFORE_DEPOT_RECEIVE
APPRAISE_FAIL, SELLER_DELIVER_TIMEOUT, SELLER_PLAY_BUYER, BUYER_CANCEL_BSD, BUYER_CANCEL_BDR, SELLER_SHAM_SEND_OUT
}
Integer uid;
... ...
... ... @@ -182,7 +182,7 @@ public class BuyerOrderPaymentService extends AbstractOrderPaymentService {
// 支付成功回调超时,但已经被超时取消,这种场景是可以退款的
OrderStatus.BUYER_CANCEL_TIMEOUT.getCode(),
OrderStatus.BUYER_CANCEL_BEFORE_PAY.getCode(),
OrderStatus.CS_CANCEL_BEFORE_DEPOT_RECEIVE.getCode());
OrderStatus.SELLER_SHAM_SEND_OUT.getCode());
@Override
public boolean canRefund(OrderInfo orderInfo) {
... ...
... ... @@ -632,7 +632,7 @@ public class MerchantOrderPaymentService extends AbstractOrderPaymentService {
} else if (type == SellerWalletDetail.Type.SELLER_CANCEL
|| type == SellerWalletDetail.Type.SELLER_OVER_TIME
|| type == SellerWalletDetail.Type.APPRAISE_FAIL
|| type == SellerWalletDetail.Type.CS_CANCEL_BEFORE_DEPOT_RECEIVE) {
|| type == SellerWalletDetail.Type.SELLER_SHAM_SEND_OUT) {
// 处罚保证金
// 如果是超级卖家
sellerType = sellerService.getEntrySellerType(uid);
... ...
... ... @@ -166,20 +166,20 @@ public class BuyerOrderCancelService {
.cancel();
}
public void cancelForCsBeforeDepotReceive(int uid, long orderCode){
public void cancelForSellerShamSendOut(int uid, long orderCode){
new BuyerOrderCancelHandler(uid, orderCode)
.withBuyerOrderSupplier(buyerOrderMapper, buyerOrderGoodsMapper)
// 卖家发货 -> 鉴定中心收货前客服取消
.withStateTransition(OrderStatus.SELLER_SEND_OUT, OrderStatus.CS_CANCEL_BEFORE_DEPOT_RECEIVE, orderStatusFlowService)
.withStateTransition(OrderStatus.SELLER_SEND_OUT, OrderStatus.SELLER_SHAM_SEND_OUT, orderStatusFlowService)
// 保证金分账给平台和买家
.withTransfer(transferService, TransferCase.EARNEST_MONEY_TO_BUYER, SellerWalletDetail.Type.CS_CANCEL_BEFORE_DEPOT_RECEIVE)
.withTransfer(transferService, TransferCase.EARNEST_MONEY_TO_BUYER, SellerWalletDetail.Type.SELLER_SHAM_SEND_OUT)
// 退买家货款
.withRefundGoodsMoney(payRefundService::refund).refundCase(RefundCase.BUYER_GOODS_MONEY).and()
// 通知卖家涉及虚假发货
.withNoticeSeller(inBoxFacade::sellerDeliverNotice, 4).sellerOrderGoodsMapper(sellerOrderGoodsMapper).and()
// 退优惠券
.withRefundCoupon(BuyerRefundCouponEvent.BizCase.CS_CANCEL_BEFORE_DEPOT_RECEIVE)
.withFailAlarm(AlarmConfig.CS_CANCEL_BEFORE_DEPOT_RECEIVE)
.withRefundCoupon(BuyerRefundCouponEvent.BizCase.SELLER_SHAM_SEND_OUT)
.withFailAlarm(AlarmConfig.SELLER_SHAM_SEND_OUT)
.cancel();
}
... ...
... ... @@ -324,7 +324,7 @@ public class BuyerOrderServiceImpl implements IBuyerOrderService {
@Override
public void cancelByCS(int uid, long orderCode) {
buyerOrderCancelService.cancelForCsBeforeDepotReceive(uid, orderCode);
buyerOrderCancelService.cancelForSellerShamSendOut(uid, orderCode);
}
@Override
... ...
... ... @@ -667,8 +667,8 @@ public class InBoxFacade {
ibt = InboxBusinessTypeEnum.NOTICE_SELLER_DELIVER_GOODS_FAIL;
smsInboxBusinessTypeEnum = InboxBusinessTypeEnum.SMS_NOTIFIED_SEND_FAILED;
} else if (times == 4) {
ibt = InboxBusinessTypeEnum.NOTICE_SELLER_CS_CANCEL_ORDER_TRADE_FAIL;
smsInboxBusinessTypeEnum = InboxBusinessTypeEnum.SMS_NOTICE_SELLER_CS_CANCEL_ORDER_TRADE_FAIL;
ibt = InboxBusinessTypeEnum.NOTICE_SELLER_SELLER_SHAM_SEND_OUT;
smsInboxBusinessTypeEnum = InboxBusinessTypeEnum.SMS_NOTICE_SELLER_SELLER_SHAM_SEND_OUT;
}else {
return;
}
... ...