|
|
@@ -38,7 +38,7 @@ public class TradeAuctionOrderService {
|
|
|
.toPageRequest(pageQuery));
|
|
|
}
|
|
|
|
|
|
- public TradeAuctionOrder create(Long auctionId, Long userId, BigDecimal price) {
|
|
|
+ public TradeAuctionOrder create(Long auctionId, Long userId, BigDecimal price, AuctionPaymentType auctionPaymentType) {
|
|
|
TradeAuction tradeAuction = tradeAuctionRepo.findById(auctionId).orElseThrow(new BusinessException("未找到易拍活动"));
|
|
|
User user = userRepo.findById(userId).orElseThrow(new BusinessException("暂无用户"));
|
|
|
if (tradeAuction.getCurrentOwnerId() != null) {
|
|
|
@@ -60,45 +60,7 @@ public class TradeAuctionOrderService {
|
|
|
.serviceCharge(serviceCharge)
|
|
|
.name(tradeAuction.getName())
|
|
|
.nickname(user.getNickname())
|
|
|
- .paymentType(AuctionPaymentType.DEPOSIT)
|
|
|
- .userId(user.getId())
|
|
|
- .originPrice(tradeAuction.getPrice())
|
|
|
- .currentPrice(tradeAuction.getCurrentPrice())
|
|
|
- .price(price)
|
|
|
- .paybackStatus(PaybackStatus.NOPASSED)
|
|
|
- .pic(tradeAuction.getPic())
|
|
|
- .source(AuctionSource.OFFICIAL)
|
|
|
- .status(AuctionOrderStatus.NOT_PAID)
|
|
|
- .build();
|
|
|
- tradeAuctionOrder = tradeAuctionOrderRepo.save(tradeAuctionOrder);
|
|
|
- //下订单减库存
|
|
|
- tradeAuctionService.decreaseStock(tradeAuction.getStock(), 1);
|
|
|
- return tradeAuctionOrder;
|
|
|
- }
|
|
|
-
|
|
|
- public TradeAuctionOrder createFixedPrice(Long auctionId, Long userId, BigDecimal price) {
|
|
|
- TradeAuction tradeAuction = tradeAuctionRepo.findById(auctionId).orElseThrow(new BusinessException("未找到易拍活动"));
|
|
|
- User user = userRepo.findById(userId).orElseThrow(new BusinessException("暂无用户"));
|
|
|
- if (tradeAuction.getCurrentOwnerId() != null) {
|
|
|
- if (tradeAuction.getCurrentOwnerId().equals(userId)) {
|
|
|
- throw new BusinessException("不可竞价持有的易拍产品");
|
|
|
- }
|
|
|
- }
|
|
|
- if (LocalDateTime.now().compareTo(tradeAuction.getCurrentEndTime()) < 0) {
|
|
|
- throw new BusinessException("未到竞价时间");
|
|
|
- }
|
|
|
- if (!tradeAuction.getStatus().equals(TradeAuctionStatus.ONGOING)) {
|
|
|
- throw new BusinessException("易拍产品未处在竞价状态");
|
|
|
- }
|
|
|
- BigDecimal serviceCharge = (BigDecimal.valueOf(0.03).multiply(tradeAuction.getCurrentPrice()))
|
|
|
- .add(tradeAuction.getCurrentPrice().subtract(tradeAuction.getPrice()));
|
|
|
- TradeAuctionOrder tradeAuctionOrder = TradeAuctionOrder.builder()
|
|
|
- .tradeAuctionId(tradeAuction.getId())
|
|
|
- .paymentType(AuctionPaymentType.FIXED_PRICE)
|
|
|
- .earnedPrice(price.subtract(tradeAuction.getPrice()))
|
|
|
- .serviceCharge(serviceCharge)
|
|
|
- .name(tradeAuction.getName())
|
|
|
- .nickname(user.getNickname())
|
|
|
+ .paymentType(auctionPaymentType)
|
|
|
.userId(user.getId())
|
|
|
.originPrice(tradeAuction.getPrice())
|
|
|
.currentPrice(tradeAuction.getCurrentPrice())
|
|
|
@@ -144,7 +106,7 @@ public class TradeAuctionOrderService {
|
|
|
tradeAuction.setCurrentOwnerId(tradeAuctionOrder.getUserId());
|
|
|
tradeAuction.setStatus(TradeAuctionStatus.FIXED_PRICE_PURCHASED);
|
|
|
|
|
|
- } else {
|
|
|
+ } else if (tradeAuctionOrder.getPaymentType().equals(AuctionPaymentType.DEPOSIT)) {
|
|
|
BigDecimal result = tradeAuctionOrder.getPrice()
|
|
|
.multiply(BigDecimal.valueOf(tradeAuction.getIncreasePer()))
|
|
|
.divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
|
|
|
@@ -161,6 +123,12 @@ public class TradeAuctionOrderService {
|
|
|
tradeAuction.setCurrentEndTime(tradeAuction.getCurrentEndTime().plusMinutes(tradeAuction.getMinutes()));
|
|
|
tradeAuction.setFixedPrice(tradeAuctionOrder.getPrice().multiply(BigDecimal.valueOf(150))
|
|
|
.divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP));
|
|
|
+ } else {
|
|
|
+ tradeAuction.setCurrentPrice(tradeAuctionOrder.getCurrentPrice());
|
|
|
+ tradeAuction.setCurrentOwner(tradeAuctionOrder.getNickname());
|
|
|
+ tradeAuction.setCurrentOwnerId(tradeAuctionOrder.getUserId());
|
|
|
+ tradeAuction.setStatus(TradeAuctionStatus.FINISH);
|
|
|
+ tradeAuctionOrder.setStatus(AuctionOrderStatus.AIR_DROP);
|
|
|
}
|
|
|
tradeAuctionOrder.setCurrentEndTime(tradeAuction.getCurrentEndTime().plusMinutes(tradeAuction.getMinutes()));
|
|
|
tradeAuctionOrderRepo.save(tradeAuctionOrder);
|