ouyang 3 лет назад
Родитель
Сommit
0421cd32e3

+ 8 - 0
src/main/java/com/izouma/nineth/domain/Collection.java

@@ -210,4 +210,12 @@ public class Collection extends BaseEntity {
     @ApiModelProperty("购买须知")
     private String purchaseInstructions;
 
+    @ApiModelProperty("预约结束时间")
+    private LocalDateTime endTime;
+
+    @ApiModelProperty("购买资格公布时间")
+    private LocalDateTime publishTime;
+
+    @ApiModelProperty("购买时间")
+    private LocalDateTime purchaseTime;
 }

+ 35 - 0
src/main/java/com/izouma/nineth/domain/Subscribe.java

@@ -0,0 +1,35 @@
+package com.izouma.nineth.domain;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.Entity;
+import javax.persistence.Index;
+import javax.persistence.Table;
+
+@Data
+@Entity
+@Table(name = "subscribe", indexes = {
+        @Index(columnList = "userId"),
+        @Index(columnList = "collectionId"),
+        @Index(columnList = "createdAt")
+})
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@ApiModel("预约人员")
+public class Subscribe extends BaseEntity {
+
+    @ApiModelProperty("用户ID")
+    private Long userId;
+
+    @ApiModelProperty("藏品id")
+    private Long collectionId;
+
+    @ApiModelProperty("购买资格")
+    private boolean purchaseQualifications;
+}

+ 18 - 0
src/main/java/com/izouma/nineth/repo/SubscribeRepo.java

@@ -0,0 +1,18 @@
+package com.izouma.nineth.repo;
+
+
+import com.izouma.nineth.domain.Subscribe;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+
+import javax.transaction.Transactional;
+
+public interface SubscribeRepo extends JpaRepository<Subscribe, Long>, JpaSpecificationExecutor<Subscribe> {
+    @Query("update Subscribe t set t.del = true where t.id = ?1")
+    @Modifying
+    @Transactional
+    void softDelete(Long id);
+}

+ 9 - 9
src/main/java/com/izouma/nineth/service/AssetService.java

@@ -372,7 +372,7 @@ public class AssetService {
                         .toUser(owner.getNickname())
                         .toUserId(owner.getId())
                         .toAvatar(owner.getAvatar())
-                        .operation("出售")
+                        .operation("出售")
                         .price(order.getPrice())
                         .build();
                 t.setCreatedAt(asset.getCreatedAt());
@@ -402,9 +402,9 @@ public class AssetService {
             userHistory.setAssetName(asset.map(Asset::getName).orElse(null));
             userHistory.setPic(asset.map(Asset::getPic).orElse(new ArrayList<>()));
             switch (tokenHistory.getOperation()) {
-                case "出售":
+                case "出售":
                 case "转让":
-                    userHistory.setDescription(tokenHistory.getToUserId().equals(userId) ? "作品交易——买" : "作品交易——售出");
+                    userHistory.setDescription(tokenHistory.getToUserId().equals(userId) ? "作品交易——已购买" : "作品交易——售出");
                     break;
                 case "空投":
                     userHistory.setDescription("空投");
@@ -428,8 +428,8 @@ public class AssetService {
                 if (ObjectUtils.isNotEmpty(query.get("operation"))){
                     String operation = (String) query.get("operation");
                     switch (operation){
-                        case "买":
-                            and.add(criteriaBuilder.or(criteriaBuilder.equal(root.get("operation"), "出售"),criteriaBuilder.equal(root.get("operation"), "转让"),criteriaBuilder.equal(root.get("operation"), "空投")));
+                        case "已购买":
+                            and.add(criteriaBuilder.or(criteriaBuilder.equal(root.get("operation"), "出售"),criteriaBuilder.equal(root.get("operation"), "转让"),criteriaBuilder.equal(root.get("operation"), "空投")));
                             and.add(criteriaBuilder.and(criteriaBuilder.equal(root.get("toUserId"), userId)));
                             break;
                         case "卖出":
@@ -459,16 +459,16 @@ public class AssetService {
             userHistory.setAssetName(asset.map(Asset::getName).orElse(null));
             userHistory.setPic(asset.map(Asset::getPic).orElse(new ArrayList<>()));
             switch (tokenHistory.getOperation()) {
-                case "出售":
+                case "出售":
                 case "转让":
-                    userHistory.setDescription(tokenHistory.getToUserId().equals(userId) ? "买入" : "卖出");
+                    userHistory.setDescription(tokenHistory.getToUserId().equals(userId) ? "已购买" : "已出售");
                     break;
                 case "空投":
-                    userHistory.setDescription("买");
+                    userHistory.setDescription("已购买");
                     break;
                 case "转赠":
                     //userHistory.setDescription(tokenHistory.getToUserId().equals(userId) ? "他人赠送" : "作品赠送");
-                    userHistory.setDescription("赠送");
+                    userHistory.setDescription("赠送");
                     break;
             }
 

+ 35 - 0
src/main/java/com/izouma/nineth/service/SubscribeService.java

@@ -0,0 +1,35 @@
+package com.izouma.nineth.service;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.izouma.nineth.domain.Collection;
+import com.izouma.nineth.domain.Subscribe;
+import com.izouma.nineth.exception.BusinessException;
+import com.izouma.nineth.repo.CollectionRepo;
+import com.izouma.nineth.repo.SubscribeRepo;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+
+
+@Service
+@AllArgsConstructor
+@Slf4j
+public class SubscribeService {
+    private CollectionRepo collectionRepo;
+    private SubscribeRepo subscribeRepo;
+
+    public void create(Subscribe record) {
+        Collection collection = collectionRepo.findById(record.getCollectionId()).orElseThrow(new BusinessException("查无此藏品"));
+        if (!collection.getStartTime().isBefore(LocalDateTime.now())){
+            throw new BusinessException("还未到预约时间");
+        }
+        if (!collection.getEndTime().isBefore(LocalDateTime.now())){
+            throw new BusinessException("已超过预约时间");
+        }
+        subscribeRepo.save(record);
+    }
+}

+ 30 - 0
src/main/java/com/izouma/nineth/web/SubscribeController.java

@@ -0,0 +1,30 @@
+package com.izouma.nineth.web;
+
+import com.izouma.nineth.domain.Collection;
+import com.izouma.nineth.domain.Subscribe;
+import com.izouma.nineth.repo.CollectionRepo;
+import com.izouma.nineth.repo.SubscribeRepo;
+import com.izouma.nineth.service.CollectionService;
+import com.izouma.nineth.service.SubscribeService;
+import lombok.AllArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/subscribe")
+@AllArgsConstructor
+public class SubscribeController {
+    private CollectionService collectionService;
+    private CollectionRepo collectionRepo;
+    private SubscribeService subscribeService;
+    private SubscribeRepo subscribeRepo;
+
+
+    @PostMapping("/makeAnAppointment")
+    public void makeAnAppointment(@RequestBody Subscribe record) {
+        subscribeService.create(record);
+    }
+}