licailing vor 4 Jahren
Ursprung
Commit
6cb224e7c6

+ 15 - 0
src/main/java/com/izouma/nineth/dto/RecommendNews.java

@@ -0,0 +1,15 @@
+package com.izouma.nineth.dto;
+
+import com.izouma.nineth.domain.News;
+import com.izouma.nineth.domain.Recommend;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class RecommendNews {
+    private News      news;
+    private Recommend recommend;
+}

+ 8 - 0
src/main/java/com/izouma/nineth/repo/NewsRepo.java

@@ -1,6 +1,8 @@
 package com.izouma.nineth.repo;
 
 import com.izouma.nineth.domain.News;
+import com.izouma.nineth.dto.RecommendCollection;
+import com.izouma.nineth.dto.RecommendNews;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
@@ -8,6 +10,7 @@ import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 
 import javax.transaction.Transactional;
+import java.util.List;
 
 public interface NewsRepo extends JpaRepository<News, Long>, JpaSpecificationExecutor<News> {
     @Query("update News t set t.del = true where t.id = ?1")
@@ -20,4 +23,9 @@ public interface NewsRepo extends JpaRepository<News, Long>, JpaSpecificationExe
     @Transactional
     @CacheEvict(value = "news", key = "#id")
     void addLike(Long id, int num);
+
+    @Query("select new com.izouma.nineth.dto.RecommendNews(n,r) from News n join Recommend r on n.id = r.collectionId " +
+                "where n.del = false and r.type = ?1 and r.category = 'NEWS' order by r.sort desc")
+    List<RecommendNews> recommend(String type);
+
 }

+ 17 - 8
src/main/java/com/izouma/nineth/web/CollectionController.java

@@ -2,11 +2,14 @@ package com.izouma.nineth.web;
 
 import com.izouma.nineth.domain.Collection;
 import com.izouma.nineth.domain.FileObject;
+import com.izouma.nineth.domain.News;
 import com.izouma.nineth.dto.CollectionDTO;
 import com.izouma.nineth.dto.CreateBlindBox;
 import com.izouma.nineth.dto.PageQuery;
+import com.izouma.nineth.dto.RecommendNews;
 import com.izouma.nineth.exception.BusinessException;
 import com.izouma.nineth.repo.CollectionRepo;
+import com.izouma.nineth.repo.NewsRepo;
 import com.izouma.nineth.service.CollectionService;
 import com.izouma.nineth.service.LikeService;
 import com.izouma.nineth.utils.SecurityUtils;
@@ -35,6 +38,7 @@ public class CollectionController extends BaseController {
     private CollectionService collectionService;
     private CollectionRepo    collectionRepo;
     private LikeService       likeService;
+    private NewsRepo          newsRepo;
 
     //@PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/save")
@@ -101,8 +105,8 @@ public class CollectionController extends BaseController {
         collectionService.appointment(id, SecurityUtils.getAuthenticatedUser().getId());
     }
 
-    @GetMapping("/recommend")
-    @Cacheable("recommend")
+    //    @GetMapping("/recommend")
+//    @Cacheable("recommend")
     public List<CollectionDTO> recommend(@RequestParam String type) {
         return collectionRepo.recommend(type).stream().map(rc -> {
             if (StringUtils.isNotBlank(rc.getRecommend().getPic())) {
@@ -115,10 +119,10 @@ public class CollectionController extends BaseController {
         }).collect(Collectors.toList());
     }
 
-    //    @GetMapping("/recommendAll")
-//    @Cacheable("recommendAll")
-    public Map<String, List> recommendAll(@RequestParam String type) {
-        Map<String, List> map = new HashMap<>();
+    @GetMapping("/recommend")
+    @Cacheable("recommend")
+    public Map<String, List<?>> recommendAll(@RequestParam String type) {
+        Map<String, List<?>> map = new HashMap<>();
 
         List<CollectionDTO> collectionDTOS = collectionRepo.recommend(type).stream().map(rc -> {
             if (StringUtils.isNotBlank(rc.getRecommend().getPic())) {
@@ -131,8 +135,13 @@ public class CollectionController extends BaseController {
         }).collect(Collectors.toList());
         map.put("collection", collectionDTOS);
 
-
-
+        List<News> news = newsRepo.recommend(type).stream().map(rn -> {
+            if (StringUtils.isNotBlank(rn.getRecommend().getPic())) {
+                rn.getNews().setPic(rn.getRecommend().getPic());
+            }
+            return rn.getNews();
+        }).collect(Collectors.toList());
+        map.put("news", news);
         return map;
     }
 }