wangqifan 3 жил өмнө
parent
commit
8da6f61d1d

+ 3 - 0
src/main/java/com/izouma/nineth/config/CacheConfig.java

@@ -168,6 +168,9 @@ public class CacheConfig {
         cacheNamesConfigurationMap.put("newestOrder", RedisCacheConfiguration.defaultCacheConfig()
                 .entryTtl(Duration.ofMinutes(15))
                 .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(redisTemplate.getValueSerializer())));
+        cacheNamesConfigurationMap.put("domainBuyerTop", RedisCacheConfiguration.defaultCacheConfig()
+                .entryTtl(Duration.ofDays(7))
+                .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(redisTemplate.getValueSerializer())));
         RedisCacheManager redisCacheManager = RedisCacheManager.builder()
                 .cacheWriter(RedisCacheWriter.nonLockingRedisCacheWriter(redisTemplate.getConnectionFactory()))
                 .withInitialCacheConfigurations(cacheNamesConfigurationMap)

+ 18 - 0
src/main/java/com/izouma/nineth/dto/nftdomain/DomainTop.java

@@ -0,0 +1,18 @@
+package com.izouma.nineth.dto.nftdomain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DomainTop {
+    private Long       userId;
+    private String     avatar;
+    private String     nickname;
+    private BigDecimal amount;
+    private Long       countNum;
+}

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

@@ -32,7 +32,7 @@ public interface AssetRepo extends JpaRepository<Asset, Long>, JpaSpecificationE
 
     List<Asset> findAllByCollectionIdInAndStatusIn(List<Long> collectionId, Iterable<AssetStatus> statuses);
 
-    List<Asset> findAllByCollectionIdAndStatusInAndUserId(Long collectionId, Iterable<AssetStatus> statuses,Long userId);
+    List<Asset> findAllByCollectionIdAndStatusInAndUserId(Long collectionId, Iterable<AssetStatus> statuses, Long userId);
 
     List<Asset> findByCreatedAtBefore(LocalDateTime localDateTime);
 
@@ -168,6 +168,10 @@ public interface AssetRepo extends JpaRepository<Asset, Long>, JpaSpecificationE
     @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")
     List<Map<String, Object>> domainTop20();
 
+    @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" +
+            " and a.created_at <= ?2 and a.created_at >= ?1 GROUP BY a.user_id ORDER BY sum(price) desc limit 60")
+    List<Map<String, Object>> domainBuyerTop60(LocalDateTime start, LocalDateTime end);
+
     @Query(nativeQuery = true, value = "update asset a set a.hold_days = null,a.old_hold_days = null where a.name like ?1")
     @Modifying
     @Transactional

+ 8 - 0
src/main/java/com/izouma/nineth/service/DomainOrderService.java

@@ -12,6 +12,7 @@ import com.izouma.nineth.domain.User;
 import com.izouma.nineth.dto.PageQuery;
 import com.izouma.nineth.dto.excel.DomainCountDTO;
 import com.izouma.nineth.dto.nftdomain.DomainResult;
+import com.izouma.nineth.dto.nftdomain.DomainTop;
 import com.izouma.nineth.enums.*;
 import com.izouma.nineth.event.OrderNotifyEvent;
 import com.izouma.nineth.exception.BusinessException;
@@ -600,6 +601,13 @@ public class DomainOrderService {
         JSONArray jsonArray = new JSONArray();
         jsonArray.addAll(map);
         return jsonArray.toJavaList(DomainResult.class);
+    }
 
+    public List<DomainTop> domainTop() {
+        List<Map<String, Object>> map = assetRepo
+                .domainBuyerTop60(LocalDateTime.now().minusDays(7L), LocalDateTime.now());
+        JSONArray jsonArray = new JSONArray();
+        jsonArray.addAll(map);
+        return jsonArray.toJavaList(DomainTop.class);
     }
 }

+ 7 - 0
src/main/java/com/izouma/nineth/web/DomainOrderController.java

@@ -3,6 +3,7 @@ package com.izouma.nineth.web;
 import com.izouma.nineth.domain.DomainOrder;
 import com.izouma.nineth.dto.excel.DomainCountDTO;
 import com.izouma.nineth.dto.nftdomain.DomainResult;
+import com.izouma.nineth.dto.nftdomain.DomainTop;
 import com.izouma.nineth.enums.AuthorityName;
 import com.izouma.nineth.service.DomainOrderService;
 import com.izouma.nineth.dto.PageQuery;
@@ -102,5 +103,11 @@ public class DomainOrderController extends BaseController {
     public List<DomainResult> newestOrder() {
         return domainOrderService.newestOrder();
     }
+
+    @PostMapping("/domainTop")
+    @Cacheable(value = "domainBuyerTop")
+    public List<DomainTop> domainTop() {
+        return domainOrderService.domainTop();
+    }
 }