|
|
@@ -72,6 +72,41 @@ public class TradeAuctionOrderService {
|
|
|
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().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())
|
|
|
+ .earnedPrice(price.subtract(tradeAuction.getPrice()))
|
|
|
+ .serviceCharge(serviceCharge)
|
|
|
+ .name(tradeAuction.getName())
|
|
|
+ .nickname(user.getNickname())
|
|
|
+ .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;
|
|
|
+ }
|
|
|
+
|
|
|
@Transactional
|
|
|
public void notify(Long orderId, String transactionId, PayMethod payMethod) {
|
|
|
TradeAuctionOrder tradeAuctionOrder = tradeAuctionOrderRepo.findById(orderId)
|
|
|
@@ -89,7 +124,8 @@ public class TradeAuctionOrderService {
|
|
|
TradeAuction tradeAuction = tradeAuctionRepo.findById(tradeAuctionOrder.getTradeAuctionId())
|
|
|
.orElseThrow(new BusinessException("未找到该易拍活动"));
|
|
|
|
|
|
- BigDecimal result = tradeAuctionOrder.getCurrentPrice().multiply(BigDecimal.valueOf(tradeAuction.getIncreasePer()))
|
|
|
+ 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()));
|
|
|
@@ -98,6 +134,8 @@ public class TradeAuctionOrderService {
|
|
|
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);
|