AssetRepo.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. package com.izouma.nineth.repo;
  2. import com.izouma.nineth.domain.Asset;
  3. import com.izouma.nineth.dto.FuAssetDTO;
  4. import com.izouma.nineth.dto.MetaRestResult;
  5. import com.izouma.nineth.enums.AssetSource;
  6. import com.izouma.nineth.enums.AssetStatus;
  7. import com.izouma.nineth.enums.CollectionType;
  8. import org.springframework.data.domain.Page;
  9. import org.springframework.data.domain.Pageable;
  10. import org.springframework.data.jpa.repository.JpaRepository;
  11. import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
  12. import org.springframework.data.jpa.repository.Modifying;
  13. import org.springframework.data.jpa.repository.Query;
  14. import javax.transaction.Transactional;
  15. import java.time.LocalDateTime;
  16. import java.util.*;
  17. public interface AssetRepo extends JpaRepository<Asset, Long>, JpaSpecificationExecutor<Asset> {
  18. @Query("update Asset t set t.del = true where t.id = ?1")
  19. @Modifying
  20. @Transactional
  21. void softDelete(Long id);
  22. Asset findByIdAndUserIdAndDel(Long id, Long userId, boolean del);
  23. long countByIpfsUrlAndStatusNot(String ipfsUrl, AssetStatus status);
  24. List<Asset> findByCollectionId(Long collectionId);
  25. List<Asset> findByCollectionIdInAndStatus(Iterable<Long> collectionId, AssetStatus status);
  26. List<Asset> findAllByCollectionIdInAndStatusIn(List<Long> collectionId, Iterable<AssetStatus> statuses);
  27. List<Asset> findAllByCollectionIdAndStatusInAndUserId(Long collectionId, Iterable<AssetStatus> statuses, Long userId);
  28. List<Asset> findByCreatedAtBefore(LocalDateTime localDateTime);
  29. Optional<Asset> findByCollectionIdAndStatus(Long collectionId,AssetStatus statuses );
  30. Optional<Asset> findByIdAndStatus(Long collectionId,AssetStatus statuses );
  31. List<Asset> findByConsignmentTrue();
  32. List<Asset> findByTokenIdIn(Iterable<String> tokenId);
  33. List<Asset> findByTokenIdOrderByCreatedAt(String tokenId);
  34. List<Asset> findAllByUserIdAndCompanyIdAndStatusIn(Long userId, Long companyId, List<AssetStatus> status);
  35. List<Asset> findByOrderId(Long orderId);
  36. Page<Asset> findByUserIdAndStatusAndCompanyIdAndNameLikeAndConsignment(Long userId, AssetStatus status, Long companyId, String name, Pageable pageable, Boolean consignment);
  37. @Query("select a from Asset a join Order o on o.assetId = a.id join Asset aa on aa.orderId = o.id where a.id = ?1")
  38. Optional<Asset> findChild(Long id);
  39. @Query("select a from Asset a join User u on a.userId = u.id where a.consignment = true and u.settleAccountId is null")
  40. List<Asset> findNoAccount();
  41. Set<Asset> findAllByUserIdInAndCollectionId(List<Long> ids, Long collectionId);
  42. List<Asset> findByTxHash(String hash);
  43. List<Asset> findByIdIn(Iterable<Long> ids);
  44. @Query("select a from Asset a left join TokenHistory t on a.tokenId = t.tokenId where t.id is null")
  45. List<Asset> findByNoHistory();
  46. List<Asset> findByTokenIdAndCreatedAtBetween(String tokenId, LocalDateTime start, LocalDateTime end);
  47. Asset findFirstByTokenId(String tokenId);
  48. Asset findFirstByTxHashIsNullAndTokenIdNotNullAndStatusOrderByCreatedAt(AssetStatus status);
  49. @Query("select a from Asset a where a.txHash is null and a.tokenId is not null " +
  50. "and a.status = com.izouma.nineth.enums.AssetStatus.NORMAL and a.createdAt < ?1 " +
  51. "order by a.createdAt desc")
  52. List<Asset> toMint(LocalDateTime time);
  53. List<Asset> findAllByIdInAndUserId(Collection<Long> id, Long userId);
  54. @Query(value = "select c.id, c.pic, c.model3d, c.minter_avatar, c.owner_avatar, c.detail from asset c", nativeQuery = true)
  55. List<List<String>> selectResource();
  56. List<Asset> findAllByOwnerIdAndStatusAndOasisIdNotNull(Long userId, AssetStatus status);
  57. @Modifying
  58. @Transactional
  59. @Query(value = "update asset c set c.pic = ?2, c.model3d = ?3, c.minter_avatar = ?4, " +
  60. "c.owner_avatar = ?5, c.detail = ?6 where c.id = ?1", nativeQuery = true)
  61. int updateCDN(Long id, String pic, String model3d, String minterAvatar,
  62. String ownerAvatar, String detail);
  63. Page<Asset> findByUserIdAndStatusAndCompanyIdAndNameLike(Long userId, AssetStatus status, Long companyId, String name, Pageable pageable);
  64. List<Asset> findAllByOasisIdInAndStatusIn(List<Long> oasisIds, List<AssetStatus> assetStatuses);
  65. List<Asset> findAllByUserIdAndCollectionIdAndStatus(Long userId, Long collectionId, AssetStatus status);
  66. @Modifying
  67. @Transactional
  68. @Query(value = "update Asset a set a.holdDays = ?2 where a.id = ?1")
  69. void updateHoldDays(Long id, Integer holdDays);
  70. @Query("select a from Asset a " +
  71. " join a.tags t on t.id = ?2 " +
  72. "where a.userId = ?1 " +
  73. " and a.status = com.izouma.nineth.enums.AssetStatus.NORMAL")
  74. Page<Asset> byTag(Long userId, Long tagId, Pageable pageable);
  75. @Query(nativeQuery = true, value = "select id from asset where user_id = ?1 and collection_id in ?2 " +
  76. "and status = 'NORMAL' limit 1")
  77. Long findDiscount(Long userId, Collection<Long> ids);
  78. @Query(nativeQuery = true, value = "select collection_id from asset where user_id = ?1 and collection_id in ?2 " +
  79. "and status = 'NORMAL'")
  80. Set<Long> findDiscounts(Long userId, Collection<Long> ids);
  81. List<Asset> findByStatus(AssetStatus status);
  82. List<Asset> findAllByUserIdAndTypeAndOpenedAndCompanyId(Long userId, CollectionType type, Boolean opened, Long companyId);
  83. @Query(nativeQuery = true, value = "SELECT * FROM (SELECT asset.user_id userId,user.nickname nickname,user.username username,user.avatar avatar,asset.name,asset.prefix_name prefixName,count(*) num FROM asset left join user on asset.user_id = user.id where asset.user_id not in (1435297,4273750, 56302, 7209) and asset.status in ('NORMAL','TRADING','GIFTING','MINTING','AUCTIONING') and asset.company_id = 1 GROUP BY asset.user_id) a WHERE a.num > 10")
  84. List<Map<String, String>> findAllUserHold();
  85. List<Asset> findAllByUserIdAndDelAndStatusIn(Long userId, boolean del, List<AssetStatus> status);
  86. @Query("select a from Asset a where a.status in ?2 and a.userId = ?1 and a.name like ?3 and a.type in (com.izouma.nineth.enums.CollectionType.DEFAULT,com.izouma.nineth.enums.CollectionType.BLIND_BOX)")
  87. List<Asset> findAllByUserIdAndStatusInAndNameLike(Long userId, List<AssetStatus> status, String name);
  88. @Query("select a from Asset a where a.status = 'NORMAL' and a.consignment = true and a.name like ?1")
  89. List<Asset> findOnShelfByNameLike(String search);
  90. List<Asset> findAllByIdNotInAndUserIdAndStatusInAndOpened(List<Long> ids, Long userId, List<AssetStatus> status, boolean opened);
  91. List<Asset> findAllByUserIdAndStatusInAndOpened(Long userId, List<AssetStatus> status, boolean opened);
  92. @Query(value = "select count(tag_id) " +
  93. "from asset " +
  94. " left join asset_tag on asset.id = asset_tag.asset_id " +
  95. "where asset.user_id = ?1 and asset_tag.tag_id in ?2 group by tag_id", nativeQuery = true)
  96. long checkHoldingTags(Long userId, List<Long> tagIds);
  97. @Query(value = "select asset.* from asset left join asset_tag on asset.id = asset_tag.asset_id " +
  98. "where asset_tag.tag_id in ?2 " +
  99. "and asset.user_id = ?1 " +
  100. "and asset.status = 'NORMAL' " +
  101. "group by asset.id", nativeQuery = true)
  102. List<Asset> findByTagsContain(Long userId, List<Long> tagIds);
  103. @Query("select count(id) from Asset where status = ?2 and name like ?1")
  104. Long countDestroyed(String name, AssetStatus status);
  105. @Query("select count(id) from Asset where name like ?1 and status in ('NORMAL','TRADING','GIFTING','MINTING','AUCTIONING','AUCTION_TRADING','DESTROYING') and ownerId <> 1435297")
  106. Long countNameLikeNotDestroyed(String name);
  107. @Query("select count(id) from Asset where prefixName like ?1 and status in ('NORMAL','TRADING','GIFTING','MINTING','AUCTIONING','AUCTION_TRADING','DESTROYING') and ownerId <> 1435297")
  108. String countPrefixNameLikeNotDestroyed(String name);
  109. @Query(value = "SELECT count(a.id) from asset a where a.name LIKE ?1 and status = 'NORMAL' and owner_id = ?2", nativeQuery = true)
  110. Long countNameLikeNotDestroyedAndOwner(String name, Long ownerId);
  111. @Query(value = "select a from Asset a where a.userId = ?6 and a.name like ?1 and a.name like ?4 and a.name not like ?5 and a.status in ?2 and a.id not in ?3 and a.del = false")
  112. List<Asset> findAllBoats(String name, List<AssetStatus> status, List<Long> boatIds, String like, String unLike, Long userId);
  113. @Query(value = "select new com.izouma.nineth.dto.FuAssetDTO(a.prefixName, count(a.id)) from Asset a where a.userId = ?1 and a.status in ?2 and a.prefixName in ?3 and a.del = false group by a.prefixName")
  114. List<FuAssetDTO> queryFu(Long userId, List<AssetStatus> status, List<String> prefixNames);
  115. Asset findFirstByCollectionIdAndUserIdAndSource(Long collectionId, Long userId, AssetSource source);
  116. Long countAllByCollectionIdAndUserIdAndSource(Long collectionId, Long userId, AssetSource source);
  117. @Query(nativeQuery = true, value = "select count(a.id) countNum,a.user_Id userId,a.owner_avatar avatar,a.`owner` nickname from asset a inner join `user` u on u.id = a.user_id where a.status = 'NORMAL' and a.type = 'DOMAIN' GROUP BY a.user_id ORDER BY count(a.id) desc limit 60")
  118. List<Map<String, Object>> domainTop20();
  119. @Query(nativeQuery = true, value = "select count(a.id) countNum,sum(price) amount,a.user_Id userId,u.avatar avatar,u.nickname nickname from order_info a inner join `user` u on u.id = a.user_id where a.status = 'FINISH' and a.type = 'DOMAIN'\n" +
  120. " and a.created_at <= ?2 and a.created_at >= ?1 GROUP BY a.user_id ORDER BY sum(price) desc limit 60")
  121. List<Map<String, Object>> domainBuyerTop60(LocalDateTime start, LocalDateTime end);
  122. @Query(nativeQuery = true, value = "update asset a set a.hold_days = null,a.old_hold_days = null where a.name like ?1")
  123. @Modifying
  124. @Transactional
  125. void openTrade(String name);
  126. Asset findFirstByNameAndStatus(String name, AssetStatus status);
  127. Asset findByNameAndStatusAndCategoryAndDel(String name, AssetStatus status, String categroy,boolean del);
  128. @Query(nativeQuery = true,value = "select phone from asset inner join user on asset.user_id = user.id where asset.name like ?1 and status = 'NORMAL' and category = '元域名'")
  129. String findPhone(String name);
  130. }