xiongzhu 3 лет назад
Родитель
Сommit
ba7bb49c5c

+ 2 - 2
src/main/java/com/izouma/nineth/domain/Asset.java

@@ -182,7 +182,7 @@ public class Asset extends CollectionBaseEntity {
     @Transient
     private boolean opened = true;
 
-    @ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.ALL})
+    @ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE})
     @JoinTable(
             name = "asset_tag",
             joinColumns = {@JoinColumn(name = "asset_id", referencedColumnName = "id", foreignKey = @ForeignKey(
@@ -218,7 +218,7 @@ public class Asset extends CollectionBaseEntity {
                 .ownerAvatar(user.getAvatar())
                 .type(collection.getType())
                 .holdDays(collection.getHoldDays())
-                .tags(collection.getTags())
+                .tags(new HashSet<>(collection.getTags()))
                 .build();
     }
 

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

@@ -1,7 +1,5 @@
 package com.izouma.nineth.domain;
 
-import com.alibaba.excel.annotation.ExcelIgnore;
-import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonView;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.izouma.nineth.annotations.Searchable;
@@ -12,16 +10,13 @@ import com.izouma.nineth.converter.PrivilegeListConverter;
 import com.izouma.nineth.converter.PropertyListConverter;
 import com.izouma.nineth.enums.CollectionSource;
 import com.izouma.nineth.enums.CollectionType;
-import com.izouma.nineth.security.Authority;
 import com.izouma.nineth.utils.CollectionTagSerializer;
-import com.izouma.nineth.utils.UserAuthoritySerializer;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
-import org.hibernate.annotations.BatchSize;
 import org.hibernate.annotations.DynamicUpdate;
 import org.hibernate.annotations.Formula;
 
@@ -66,7 +61,7 @@ public class Collection extends CollectionBaseEntity {
         interface Basic {
         }
 
-        interface Internal {
+        interface Detail {
         }
     }
 
@@ -244,7 +239,7 @@ public class Collection extends CollectionBaseEntity {
     @ApiModelProperty("最低消费")
     private BigDecimal minimumCharge;
 
-    @ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.ALL})
+    @ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE})
     @JoinTable(
             name = "collection_tag",
             joinColumns = {@JoinColumn(name = "collection_id", referencedColumnName = "id",
@@ -256,7 +251,7 @@ public class Collection extends CollectionBaseEntity {
                             "FOREIGN KEY (tag_id) REFERENCES tag(id) ON DELETE CASCADE ON UPDATE CASCADE"
                     ))})
     @JsonSerialize(using = CollectionTagSerializer.class, as = HashSet.class)
-    @JsonView(View.Internal.class)
+    @JsonView(View.Detail.class)
     private Set<Tag> tags = new HashSet<>();
 
 }

+ 4 - 0
src/main/java/com/izouma/nineth/repo/CollectionRepo.java

@@ -1,5 +1,6 @@
 package com.izouma.nineth.repo;
 
+import com.fasterxml.jackson.annotation.JsonView;
 import com.izouma.nineth.domain.Collection;
 import com.izouma.nineth.dto.CollectionInfoDTO;
 import com.izouma.nineth.dto.CollectionStockAndSale;
@@ -48,6 +49,9 @@ public interface CollectionRepo extends JpaRepository<Collection, Long>, JpaSpec
     @Cacheable("collection")
     Optional<Collection> findById(@Nonnull Long id);
 
+    @Query("select c from Collection c where c.del = false and c.id = ?1")
+    Optional<Collection> findDetailById(@Nonnull Long id);
+
     @Cacheable("collectionInfo")
     @Query("select new com.izouma.nineth.dto.CollectionInfoDTO(c,cp) from Collection c left join CollectionPrivilege cp " +
             "on c.id = cp.collectionId where c.id = ?1 ")

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

@@ -68,6 +68,7 @@ public class AssetService {
     private CollectionPrivilegeRepo collectionPrivilegeRepo;
     private PasswordEncoder         passwordEncoder;
     private MintActivityRepo        mintActivityRepo;
+    private TagRepo                 tagRepo;
 
     public Page<Asset> all(PageQuery pageQuery) {
         Page<Asset> all = assetRepo
@@ -111,9 +112,9 @@ public class AssetService {
 
     public Asset createAsset(BlindBoxItem winItem, User user, Long orderId, BigDecimal price, String type,
                              Integer number, Integer holdDays) {
-        Collection blindBox = collectionRepo.findById(winItem.getBlindBoxId())
+        Collection blindBox = collectionRepo.findDetailById(winItem.getBlindBoxId())
                 .orElseThrow(new BusinessException("盲盒不存在"));
-        Collection collection = collectionRepo.findById(winItem.getCollectionId())
+        Collection collection = collectionRepo.findDetailById(winItem.getCollectionId())
                 .orElseThrow(new BusinessException("藏品不存在"));
         Asset asset = Asset.create(winItem, user, holdDays);
         asset.setTokenId(TokenUtils.genTokenId());
@@ -346,6 +347,7 @@ public class AssetService {
         newAsset.setOrderId(orderId);
         newAsset.setFromAssetId(asset.getId());
         newAsset.setType(CollectionType.DEFAULT);
+        newAsset.setTags(new HashSet<>(asset.getTags()));
         assetRepo.save(newAsset);
 
         tokenHistoryRepo.save(TokenHistory.builder()

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

@@ -163,7 +163,7 @@ public class CollectionService {
 //                record.getVipQuota(), record.getTimeDelay(), record.getSaleTime(), record.getHoldDays(),
 //                record.getOpenQuota(), record.getTotalQuota(), record.getMinimumCharge());
 
-        Collection collection = collectionRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
+        Collection collection = collectionRepo.findDetailById(record.getId()).orElseThrow(new BusinessException("无记录"));
         collection.setOnShelf(record.isOnShelf());
         collection.setSalable(record.isSalable());
         collection.setStartTime(record.getStartTime());

+ 2 - 2
src/main/java/com/izouma/nineth/service/OrderService.java

@@ -332,7 +332,7 @@ public class OrderService {
                 collectionRepo.setOnShelf(collectionId, false);
             }
             order = orderRepo.save(order);
-            if (order.getTotalPrice().equals(BigDecimal.ZERO)) {
+            if (order.getTotalPrice().compareTo(BigDecimal.ZERO) == 0) {
                 notifyOrder(order.getId(), PayMethod.WEIXIN, null);
             }
 
@@ -607,7 +607,7 @@ public class OrderService {
 
         try {
             Order order = orderRepo.findById(orderId).orElseThrow(new BusinessException("订单不存在"));
-            Collection collection = collectionRepo.findById(order.getCollectionId())
+            Collection collection = collectionRepo.findDetailById(order.getCollectionId())
                     .orElseThrow(new BusinessException("藏品不存在"));
 
             User user = userRepo.findById(order.getUserId()).orElseThrow(new BusinessException("用户不存在"));