wangqifan il y a 3 ans
Parent
commit
3ddbace9db

+ 28 - 17
src/main/java/com/izouma/nineth/service/TradeAuctionOrderService.java

@@ -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)

+ 5 - 0
src/main/java/com/izouma/nineth/web/TradeAuctionOrderController.java

@@ -68,6 +68,11 @@ public class TradeAuctionOrderController extends BaseController {
         return tradeAuctionOrderService.create(tradeAuctionId, userId, price);
     }
 
+    @PostMapping("/createFixedPrice")
+    public TradeAuctionOrder createFixedPrice(Long tradeAuctionId, Long userId, BigDecimal price) {
+        return tradeAuctionOrderService.createFixedPrice(tradeAuctionId, userId, price);
+    }
+
     @PostMapping("/testPay")
     public void create(Long orderId) {
         tradeAuctionOrderService.notify(orderId, RandomStringUtils