Browse Source

铸造活动新功能

xiongzhu 3 years ago
parent
commit
eb24f47683

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

@@ -1,6 +1,7 @@
 package com.izouma.nineth.domain;
 
 import com.izouma.nineth.annotations.Searchable;
+import com.izouma.nineth.converter.LongArrayConverter;
 import com.izouma.nineth.converter.MintRuleConverter;
 import com.izouma.nineth.converter.StringArrayConverter;
 import com.izouma.nineth.dto.MintActivityRule;
@@ -99,6 +100,6 @@ public class MintActivity extends BaseEntity {
 
     private int autoDropNum = 1;
 
-    @Convert(converter = StringArrayConverter.class)
+    @Convert(converter = LongArrayConverter.class)
     private List<Long> holdingTags;
 }

+ 6 - 1
src/main/java/com/izouma/nineth/repo/AssetRepo.java

@@ -122,5 +122,10 @@ public interface AssetRepo extends JpaRepository<Asset, Long>, JpaSpecificationE
             "where asset.user_id = ?1 and asset_tag.tag_id in ?2 group by tag_id", nativeQuery = true)
     long checkHoldingTags(Long userId, List<Long> tagIds);
 
-    List<Asset> findByUserIdAndStatusAndTagsIdIn(Long userId, AssetStatus status, List<Long> tagIds);
+    @Query(value = "select asset.* from asset left join asset_tag on asset.id = asset_tag.asset_id " +
+            "where asset_tag.tag_id in ?2 " +
+            "and asset.user_id = ?1 " +
+            "and asset.status = 'NORMAL' " +
+            "group by asset.id",nativeQuery = true)
+    List<Asset> findByTagsContain(Long userId,  List<Long> tagIds);
 }

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

@@ -826,7 +826,7 @@ public class MintOrderService {
 
     public boolean checkHolding(Long userId, MintActivity mintActivity) {
         if (mintActivity.getHoldingTags() != null && !mintActivity.getHoldingTags().isEmpty()) {
-            List<Asset> assets = assetRepo.findByUserIdAndStatusAndTagsIdIn(userId, AssetStatus.NORMAL, mintActivity.getHoldingTags());
+            List<Asset> assets = assetRepo.findByTagsContain(userId, mintActivity.getHoldingTags());
             for (Long tag : mintActivity.getHoldingTags()) {
                 Asset a = assets.stream().filter(asset -> asset.getTags().stream().anyMatch(t -> t.getId().equals(tag)))
                         .findFirst().orElse(null);