|
|
@@ -40,8 +40,10 @@ public class TradeAuctionOrderService {
|
|
|
public TradeAuctionOrder create(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().equals(userId)) {
|
|
|
- throw new BusinessException("不可竞价持有的易拍产品");
|
|
|
+ if (tradeAuction.getCurrentOwnerId() != null) {
|
|
|
+ if (tradeAuction.getCurrentOwnerId().equals(userId)) {
|
|
|
+ throw new BusinessException("不可竞价持有的易拍产品");
|
|
|
+ }
|
|
|
}
|
|
|
if (LocalDateTime.now().compareTo(tradeAuction.getCurrentEndTime()) < 0) {
|
|
|
throw new BusinessException("未到竞价时间");
|
|
|
@@ -126,22 +128,31 @@ public class TradeAuctionOrderService {
|
|
|
TradeAuction tradeAuction = tradeAuctionRepo.findById(tradeAuctionOrder.getTradeAuctionId())
|
|
|
.orElseThrow(new BusinessException("未找到该易拍活动"));
|
|
|
|
|
|
- BigDecimal result = tradeAuctionOrder.getCurrentPrice()
|
|
|
- .multiply(BigDecimal.valueOf(tradeAuction.getIncreasePer()))
|
|
|
- .divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
|
|
|
- tradeAuction.setNextPrice(result);
|
|
|
- tradeAuction.setEarning(result.subtract(tradeAuction.getPrice()));
|
|
|
- tradeAuction.setCommission(tradeAuctionOrder.getServiceCharge());
|
|
|
- tradeAuction.setStatus(TradeAuctionStatus.WAITING);
|
|
|
- tradeAuction.setCurrentPrice(tradeAuctionOrder.getCurrentPrice());
|
|
|
- tradeAuction.setCurrentOwner(tradeAuctionOrder.getNickname());
|
|
|
- tradeAuction.setCurrentOwnerId(tradeAuctionOrder.getUserId());
|
|
|
- tradeAuction.setCurrentEndTime(tradeAuction.getCurrentEndTime().plusDays(1));
|
|
|
- tradeAuction.setFixedPrice(tradeAuction.getPrice().multiply(BigDecimal.valueOf(150))
|
|
|
- .divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP));
|
|
|
- tradeAuctionRepo.save(tradeAuction);
|
|
|
+ if (tradeAuctionOrder.getPaymentType().equals(AuctionPaymentType.FIXED_PRICE)) {
|
|
|
+ tradeAuction.setCurrentPrice(tradeAuctionOrder.getCurrentPrice());
|
|
|
+ tradeAuction.setCurrentOwner(tradeAuctionOrder.getNickname());
|
|
|
+ tradeAuction.setCurrentOwnerId(tradeAuctionOrder.getUserId());
|
|
|
+ tradeAuction.setStatus(TradeAuctionStatus.FIXED_PRICE_PURCHASED);
|
|
|
+ tradeAuctionService.increaseSale(tradeAuction.getId(), 1);
|
|
|
+ tradeAuctionRepo.save(tradeAuction);
|
|
|
+ } else {
|
|
|
+ BigDecimal result = tradeAuctionOrder.getCurrentPrice()
|
|
|
+ .multiply(BigDecimal.valueOf(tradeAuction.getIncreasePer()))
|
|
|
+ .divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
|
|
|
+ tradeAuction.setNextPrice(result);
|
|
|
+ tradeAuction.setEarning(result.subtract(tradeAuction.getPrice()));
|
|
|
+ tradeAuction.setCommission(tradeAuctionOrder.getServiceCharge());
|
|
|
+ tradeAuction.setStatus(TradeAuctionStatus.WAITING);
|
|
|
+ tradeAuction.setCurrentPrice(tradeAuctionOrder.getCurrentPrice());
|
|
|
+ tradeAuction.setCurrentOwner(tradeAuctionOrder.getNickname());
|
|
|
+ tradeAuction.setCurrentOwnerId(tradeAuctionOrder.getUserId());
|
|
|
+ tradeAuction.setCurrentEndTime(tradeAuction.getCurrentEndTime().plusDays(1));
|
|
|
+ tradeAuction.setFixedPrice(tradeAuction.getPrice().multiply(BigDecimal.valueOf(150))
|
|
|
+ .divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP));
|
|
|
+ tradeAuctionRepo.save(tradeAuction);
|
|
|
|
|
|
- tradeAuctionService.increaseSale(tradeAuction.getId(), 1);
|
|
|
+ tradeAuctionService.increaseSale(tradeAuction.getId(), 1);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Scheduled(fixedRate = 30000)
|