Jelajahi Sumber

创建拍卖订单

licailing 4 tahun lalu
induk
melakukan
4d194b4125

+ 6 - 0
src/main/java/com/izouma/nineth/domain/AuctionActivity.java

@@ -80,4 +80,10 @@ public class AuctionActivity extends BaseEntity {
     private int              royalties;
     private int              royalties;
     @ApiModelProperty("手续费比例")
     @ApiModelProperty("手续费比例")
     private int              serviceCharge;
     private int              serviceCharge;
+    @Column(columnDefinition = "int(11) default 0")
+    @ApiModelProperty("围观次数")
+    private int              likes;
+    @Column(columnDefinition = "int(11) default 0")
+    @ApiModelProperty("出价次数")
+    private int              bids;
 }
 }

+ 4 - 0
src/main/java/com/izouma/nineth/domain/UserAddress.java

@@ -35,4 +35,8 @@ public class UserAddress extends BaseEntity {
     private String phone;
     private String phone;
 
 
     private boolean def;
     private boolean def;
+
+    public String getDetail() {
+        return this.getProvinceName() + " " + this.getCityName() + " " + this.getDistrictName() + " " + this.getAddress();
+    }
 }
 }

+ 0 - 1
src/main/java/com/izouma/nineth/repo/AuctionOrderRepo.java

@@ -3,7 +3,6 @@ package com.izouma.nineth.repo;
 import com.izouma.nineth.domain.AuctionOrder;
 import com.izouma.nineth.domain.AuctionOrder;
 import com.izouma.nineth.enums.AuctionPaymentType;
 import com.izouma.nineth.enums.AuctionPaymentType;
 import com.izouma.nineth.enums.AuctionOrderStatus;
 import com.izouma.nineth.enums.AuctionOrderStatus;
-import com.izouma.nineth.enums.OrderStatus;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Modifying;

+ 2 - 0
src/main/java/com/izouma/nineth/repo/AuctionRecordRepo.java

@@ -13,4 +13,6 @@ public interface AuctionRecordRepo extends JpaRepository<AuctionRecord, Long>, J
     @Modifying
     @Modifying
     @Transactional
     @Transactional
     void softDelete(Long id);
     void softDelete(Long id);
+
+    AuctionRecord findTopByAuctionIdAndUserId(Long auctionId, Long userId);
 }
 }

+ 22 - 0
src/main/java/com/izouma/nineth/service/AuctionOrderService.java

@@ -14,6 +14,7 @@ import org.springframework.stereotype.Service;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.util.Arrays;
 import java.util.Arrays;
+import java.util.Optional;
 
 
 @Service
 @Service
 @AllArgsConstructor
 @AllArgsConstructor
@@ -26,6 +27,7 @@ public class AuctionOrderService {
     private AuctionActivityRepo auctionActivityRepo;
     private AuctionActivityRepo auctionActivityRepo;
     private AuctionRecordRepo   auctionRecordRepo;
     private AuctionRecordRepo   auctionRecordRepo;
     private AssetRepo           assetRepo;
     private AssetRepo           assetRepo;
+    private UserAddressRepo     userAddressRepo;
 
 
     public Page<AuctionOrder> all(PageQuery pageQuery) {
     public Page<AuctionOrder> all(PageQuery pageQuery) {
         return auctionOrderRepo.findAll(JpaUtils.toSpecification(pageQuery, AuctionOrder.class), JpaUtils.toPageRequest(pageQuery));
         return auctionOrderRepo.findAll(JpaUtils.toSpecification(pageQuery, AuctionOrder.class), JpaUtils.toPageRequest(pageQuery));
@@ -49,6 +51,17 @@ public class AuctionOrderService {
 
 
         if (AuctionPaymentType.DEPOSIT.equals(type)) {
         if (AuctionPaymentType.DEPOSIT.equals(type)) {
             return this.createDeposit(user, auction, auctionRecordId);
             return this.createDeposit(user, auction, auctionRecordId);
+        } else if (AuctionPaymentType.PURCHASE_PRICE.equals(type)) {
+            if (LocalDateTime.now().isAfter(auction.getEndTime())) {
+                throw new BusinessException("拍卖还未结束");
+            }
+            AuctionRecord record = auctionRecordRepo.findTopByAuctionIdAndUserId(auctionId, userId);
+            if (ObjectUtils.isEmpty(record) || !record.isPayDeposit()) {
+                throw new BusinessException("未支付保证金");
+            }
+            if (record.getBidderPrice().compareTo(auction.getPurchasePrice()) != 0) {
+                throw new BusinessException("与成交价不否");
+            }
         }
         }
 
 
         if (AuctionSource.TRANSFER.equals(auction.getSource())) {
         if (AuctionSource.TRANSFER.equals(auction.getSource())) {
@@ -61,6 +74,12 @@ public class AuctionOrderService {
         auctionActivityRepo.save(auction);
         auctionActivityRepo.save(auction);
 
 
         BigDecimal price = AuctionPaymentType.FIXED_PRICE.equals(type) ? auction.getFixedPrice() : auction.getPurchasePrice();
         BigDecimal price = AuctionPaymentType.FIXED_PRICE.equals(type) ? auction.getFixedPrice() : auction.getPurchasePrice();
+
+        UserAddress userAddress = null;
+        if (addressId != null) {
+            userAddress = userAddressRepo.findById(addressId).orElseThrow(new BusinessException("地址信息不存在"));
+        }
+
         AuctionOrder order = AuctionOrder.builder()
         AuctionOrder order = AuctionOrder.builder()
                 .auctionId(auction.getId())
                 .auctionId(auction.getId())
                 .userId(user.getId())
                 .userId(user.getId())
@@ -75,6 +94,9 @@ public class AuctionOrderService {
                 .totalPrice(price)
                 .totalPrice(price)
                 .auctionRecordId(auctionRecordId)
                 .auctionRecordId(auctionRecordId)
                 .status(AuctionOrderStatus.NOT_PAID)
                 .status(AuctionOrderStatus.NOT_PAID)
+                .contactName(Optional.ofNullable(userAddress).map(UserAddress::getName).orElse(null))
+                .contactPhone(Optional.ofNullable(userAddress).map(UserAddress::getPhone).orElse(null))
+                .address(Optional.ofNullable(userAddress).map(UserAddress::getDetail).orElse(null))
                 .build();
                 .build();
 
 
         return auctionOrderRepo.save(order);
         return auctionOrderRepo.save(order);

+ 1 - 3
src/main/java/com/izouma/nineth/service/MintOrderService.java

@@ -347,9 +347,7 @@ public class MintOrderService {
                     .mintActivityId(mintActivityId)
                     .mintActivityId(mintActivityId)
                     .contactName(Optional.ofNullable(userAddress).map(UserAddress::getName).orElse(null))
                     .contactName(Optional.ofNullable(userAddress).map(UserAddress::getName).orElse(null))
                     .contactPhone(Optional.ofNullable(userAddress).map(UserAddress::getPhone).orElse(null))
                     .contactPhone(Optional.ofNullable(userAddress).map(UserAddress::getPhone).orElse(null))
-                    .address(Optional.ofNullable(userAddress).map(u ->
-                                    u.getProvinceName() + " " + u.getCityName() + " " + u.getDistrictName() + " " + u.getAddress())
-                            .orElse(null))
+                    .address(Optional.ofNullable(userAddress).map(UserAddress::getDetail).orElse(null))
                     .build());
                     .build());
 
 
             // 铸造资产
             // 铸造资产