|
@@ -42,6 +42,7 @@ public class BidTask implements CacheMap {
|
|
|
private static final String DEPOSIT_TYPE_AUCTION = "拍卖会";
|
|
private static final String DEPOSIT_TYPE_AUCTION = "拍卖会";
|
|
|
private static final Integer DEPOSIT_STATUS_WAITING_PAYMENT = 0;
|
|
private static final Integer DEPOSIT_STATUS_WAITING_PAYMENT = 0;
|
|
|
private static final Integer DEPOSIT_STATUS_PAID = 1;
|
|
private static final Integer DEPOSIT_STATUS_PAID = 1;
|
|
|
|
|
+ private static final Integer DEPOSIT_STATUS_PENDING_REFUND = 5;
|
|
|
|
|
|
|
|
// region params
|
|
// region params
|
|
|
private static final ConcurrentHashMap<String, ConcurrentHashMap<String, Live>> liveCacheMap = new ConcurrentHashMap<>();
|
|
private static final ConcurrentHashMap<String, ConcurrentHashMap<String, Live>> liveCacheMap = new ConcurrentHashMap<>();
|
|
@@ -276,7 +277,7 @@ public class BidTask implements CacheMap {
|
|
|
Lot lot = lotMapper.selectLotById(order.getLotId());
|
|
Lot lot = lotMapper.selectLotById(order.getLotId());
|
|
|
if (isIndividualDeposit(lot) && isTerminalLot(lot)) {
|
|
if (isIndividualDeposit(lot) && isTerminalLot(lot)) {
|
|
|
selectPendingDeposit(order.getUserId(), lot)
|
|
selectPendingDeposit(order.getUserId(), lot)
|
|
|
- .forEach(deposit -> depositOrderService.refundDepositOrder(deposit.getOrderNo()));
|
|
|
|
|
|
|
+ .forEach(deposit -> depositOrderService.markRefundPending(deposit.getOrderNo()));
|
|
|
}
|
|
}
|
|
|
log.info("paid lot order synced, lotId={}", order.getLotId());
|
|
log.info("paid lot order synced, lotId={}", order.getLotId());
|
|
|
}
|
|
}
|
|
@@ -408,6 +409,19 @@ public class BidTask implements CacheMap {
|
|
|
//拍卖会结束发起退保证金,每五分钟执行一次
|
|
//拍卖会结束发起退保证金,每五分钟执行一次
|
|
|
@Scheduled(fixedRate = 1000*60*5)
|
|
@Scheduled(fixedRate = 1000*60*5)
|
|
|
public void depositOrderRefund(){
|
|
public void depositOrderRefund(){
|
|
|
|
|
+ refundPendingDepositOrders();
|
|
|
|
|
+ markRefundablePaidDepositOrders();
|
|
|
|
|
+ timeoutUnpaidDepositOrders();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void refundPendingDepositOrders() {
|
|
|
|
|
+ DepositOrder waitingRefund = new DepositOrder();
|
|
|
|
|
+ waitingRefund.setStatus(DEPOSIT_STATUS_PENDING_REFUND);
|
|
|
|
|
+ depositOrderService.selectDepositOrder(waitingRefund)
|
|
|
|
|
+ .forEach(deposit -> depositOrderService.refundDepositOrder(deposit.getOrderNo()));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void markRefundablePaidDepositOrders() {
|
|
|
DepositOrder pending = new DepositOrder();
|
|
DepositOrder pending = new DepositOrder();
|
|
|
pending.setStatus(DEPOSIT_STATUS_PAID);
|
|
pending.setStatus(DEPOSIT_STATUS_PAID);
|
|
|
List<DepositOrder> depositOrders = depositOrderService.selectDepositOrder(pending);
|
|
List<DepositOrder> depositOrders = depositOrderService.selectDepositOrder(pending);
|
|
@@ -418,7 +432,6 @@ public class BidTask implements CacheMap {
|
|
|
settleAuctionDeposit(deposit);
|
|
settleAuctionDeposit(deposit);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- timeoutUnpaidDepositOrders();
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private void timeoutUnpaidDepositOrders() {
|
|
private void timeoutUnpaidDepositOrders() {
|
|
@@ -452,13 +465,13 @@ public class BidTask implements CacheMap {
|
|
|
Order winningOrder = orderService.getOne(query);
|
|
Order winningOrder = orderService.getOne(query);
|
|
|
if (Objects.isNull(winningOrder)) {
|
|
if (Objects.isNull(winningOrder)) {
|
|
|
if (!isWinningUser(deposit, lot)) {
|
|
if (!isWinningUser(deposit, lot)) {
|
|
|
- depositOrderService.refundDepositOrder(deposit.getOrderNo());
|
|
|
|
|
|
|
+ depositOrderService.markRefundPending(deposit.getOrderNo());
|
|
|
}
|
|
}
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
if (Objects.equals(lot.getPaid(), 1L)
|
|
if (Objects.equals(lot.getPaid(), 1L)
|
|
|
|| Constants.LOT_STATUS_CANCELLED.equals(lot.getStatus())) {
|
|
|| Constants.LOT_STATUS_CANCELLED.equals(lot.getStatus())) {
|
|
|
- depositOrderService.refundDepositOrder(deposit.getOrderNo());
|
|
|
|
|
|
|
+ depositOrderService.markRefundPending(deposit.getOrderNo());
|
|
|
} else if (Constants.LOT_STATUS_PASS.equals(lot.getStatus())) {
|
|
} else if (Constants.LOT_STATUS_PASS.equals(lot.getStatus())) {
|
|
|
depositOrderService.reduceDeposit(deposit.getOrderNo());
|
|
depositOrderService.reduceDeposit(deposit.getOrderNo());
|
|
|
}
|
|
}
|
|
@@ -475,7 +488,7 @@ public class BidTask implements CacheMap {
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
if (CollectionUtils.isEmpty(winningOrders)) {
|
|
if (CollectionUtils.isEmpty(winningOrders)) {
|
|
|
- depositOrderService.refundDepositOrder(deposit.getOrderNo());
|
|
|
|
|
|
|
+ depositOrderService.markRefundPending(deposit.getOrderNo());
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
for (Order winningOrder : winningOrders) {
|
|
for (Order winningOrder : winningOrders) {
|
|
@@ -489,7 +502,7 @@ public class BidTask implements CacheMap {
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- depositOrderService.refundDepositOrder(deposit.getOrderNo());
|
|
|
|
|
|
|
+ depositOrderService.markRefundPending(deposit.getOrderNo());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private boolean hasWinningLotWithoutOrder(DepositOrder deposit, List<Order> winningOrders) {
|
|
private boolean hasWinningLotWithoutOrder(DepositOrder deposit, List<Order> winningOrders) {
|