lidongze 3 лет назад
Родитель
Сommit
4f085a59c0
1 измененных файлов с 13 добавлено и 3 удалено
  1. 13 3
      src/main/java/com/izouma/nineth/service/CollectionService.java

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

@@ -26,7 +26,10 @@ import org.apache.rocketmq.spring.core.RocketMQTemplate;
 import org.springframework.beans.BeanUtils;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.core.env.Environment;
-import org.springframework.data.domain.*;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.data.redis.core.BoundHashOperations;
 import org.springframework.data.redis.core.BoundValueOperations;
@@ -36,14 +39,14 @@ import org.springframework.stereotype.Service;
 import org.springframework.web.bind.annotation.RequestParam;
 
 import javax.annotation.PostConstruct;
-import javax.persistence.criteria.*;
+import javax.persistence.criteria.Join;
+import javax.persistence.criteria.Predicate;
 import javax.transaction.Transactional;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
-import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ForkJoinPool;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
@@ -110,6 +113,13 @@ public class CollectionService {
                             return criteriaBuilder.and(and.toArray(new Predicate[0]));
                         });
             }
+            if (query.containsKey("distinct")) {
+                query.remove("distinct");
+                specification = specification.and((Specification<Collection>) (root, criteriaQuery, criteriaBuilder) -> {
+                    criteriaQuery.groupBy(root.get("name"));
+                    return criteriaBuilder.and();
+                });
+            }
         }
 
         if (query.containsKey("rarityLabel")) {