From 7804263c6061aef813f0db27cb3046f746572606 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期六, 06 三月 2021 16:07:26 +0800
Subject: [PATCH] 后台管理优化

---
 src/main/java/com/yeshi/buwan/service/manager/SolrAlbumVideoDataManager.java |  101 ++++++++++++++++++++++++++++++++------------------
 1 files changed, 64 insertions(+), 37 deletions(-)

diff --git a/src/main/java/com/yeshi/buwan/service/manager/SolrAlbumDataManager.java b/src/main/java/com/yeshi/buwan/service/manager/SolrAlbumVideoDataManager.java
similarity index 67%
rename from src/main/java/com/yeshi/buwan/service/manager/SolrAlbumDataManager.java
rename to src/main/java/com/yeshi/buwan/service/manager/SolrAlbumVideoDataManager.java
index 936f88c..2ba98e9 100644
--- a/src/main/java/com/yeshi/buwan/service/manager/SolrAlbumDataManager.java
+++ b/src/main/java/com/yeshi/buwan/service/manager/SolrAlbumVideoDataManager.java
@@ -1,7 +1,7 @@
 package com.yeshi.buwan.service.manager;
 
 import com.yeshi.buwan.domain.ResourceVideo;
-import com.yeshi.buwan.domain.SolrVideo;
+import com.yeshi.buwan.domain.solr.SolrAlbumVideo;
 import com.yeshi.buwan.domain.VideoInfo;
 import com.yeshi.buwan.domain.VideoResource;
 import com.yeshi.buwan.domain.video.AlbumVideoMap;
@@ -9,7 +9,10 @@
 import com.yeshi.buwan.dto.search.SolrVideoSearchFilter;
 import com.yeshi.buwan.service.imp.ResourceVideoService;
 import com.yeshi.buwan.service.imp.VideoInfoService;
+import com.yeshi.buwan.service.imp.VideoResourceService;
+import com.yeshi.buwan.service.inter.VideoResourceMapExtraInfoService;
 import com.yeshi.buwan.service.inter.juhe.AlbumVideoMapService;
+import com.yeshi.buwan.service.inter.video.VideoInfoExtraService;
 import com.yeshi.buwan.util.StringUtil;
 import com.yeshi.buwan.util.factory.SolrVideoFactory;
 import org.apache.solr.client.solrj.response.UpdateResponse;
@@ -19,6 +22,7 @@
 import org.springframework.data.solr.core.SolrTemplate;
 import org.springframework.data.solr.core.query.Criteria;
 import org.springframework.data.solr.core.query.Query;
+import org.springframework.data.solr.core.query.SimpleFilterQuery;
 import org.springframework.data.solr.core.query.SimpleQuery;
 import org.springframework.data.solr.core.query.result.ScoredPage;
 import org.springframework.stereotype.Component;
@@ -30,11 +34,11 @@
  * 鎼滅储寮曟搸-涓撹緫鏁版嵁绠$悊
  */
 @Component
-public class SolrAlbumDataManager {
+public class SolrAlbumVideoDataManager {
 
-    private final static String CORE_NAME = "buwan_album";
+    private final String CORE_NAME = "buwan_album";
 
-    private final Logger logger = LoggerFactory.getLogger(SolrAlbumDataManager.class);
+    private final Logger logger = LoggerFactory.getLogger(SolrAlbumVideoDataManager.class);
 
     @Resource
     private SolrTemplate solrTemplate;
@@ -49,8 +53,26 @@
     private ResourceVideoService resourceVideoService;
 
 
+    @Resource
+    private VideoInfoExtraService videoInfoExtraService;
+
+    @Resource
+    private VideoResourceService videoResourceService;
+
+
     public void saveOrUpdate(VideoInfo videoInfo) {
-        UpdateResponse updateResponse = solrTemplate.saveBean(CORE_NAME, SolrVideoFactory.create(videoInfo, videoInfo.getResourceList()));
+        List<VideoResource> resourceList = videoResourceService.getResourceList();
+        List<Long> rids = new ArrayList<>();
+        for (VideoResource vr : resourceList) {
+            rids.add(Long.parseLong(vr.getId()));
+        }
+
+        List<VideoInfo> videoList = new ArrayList<>();
+        videoList.add(videoInfo);
+        videoInfoExtraService.batchExtra(videoList, rids);
+
+
+        UpdateResponse updateResponse = solrTemplate.saveBean(CORE_NAME, SolrVideoFactory.createAlbum(videoInfo, videoInfo.getResourceList()));
         if (updateResponse.getStatus() == 0) {
             solrTemplate.commit(CORE_NAME);
         } else {
@@ -59,9 +81,17 @@
     }
 
     public void saveOrUpdate(List<VideoInfo> videoInfoList) {
-        List<SolrVideo> solrVideoList = new ArrayList<>();
+        List<VideoResource> resourceList = videoResourceService.getResourceList();
+        List<Long> rids = new ArrayList<>();
+        for (VideoResource vr : resourceList) {
+            rids.add(Long.parseLong(vr.getId()));
+        }
+        videoInfoExtraService.batchExtra(videoInfoList, rids);
+
+
+        List<SolrAlbumVideo> solrVideoList = new ArrayList<>();
         for (VideoInfo vi : videoInfoList) {
-            solrVideoList.add(SolrVideoFactory.create(vi, vi.getResourceList()));
+            solrVideoList.add(SolrVideoFactory.createAlbum(vi, vi.getResourceList()));
         }
         UpdateResponse updateResponse = solrTemplate.saveBeans(CORE_NAME, solrVideoList);
         if (updateResponse.getStatus() == 0) {
@@ -84,7 +114,7 @@
 //        }
 //    }
     public void deleteById(String id) {
-        UpdateResponse updateResponse = solrTemplate.deleteByIds(CORE_NAME, id);
+        UpdateResponse updateResponse = solrTemplate.deleteById(CORE_NAME, id);
         if (updateResponse.getStatus() == 0) {
             solrTemplate.commit(CORE_NAME);
         } else {
@@ -92,9 +122,9 @@
         }
     }
 
-    public SolrVideo findOne(String id) {
-        Optional<SolrVideo> solrVideo = solrTemplate.getById(CORE_NAME, id, SolrVideo.class);
-        return solrVideo.get();
+    public SolrAlbumVideo findOne(String id) {
+        SolrAlbumVideo solrVideo = solrTemplate.getById(CORE_NAME, id, SolrAlbumVideo.class);
+        return solrVideo;
     }
 
     public SolrResultDTO find(SolrVideoSearchFilter filter, int page, int pageSize) {
@@ -105,35 +135,30 @@
         Query query = null;
         if (!StringUtil.isNullOrEmpty(filter.getKey())) {
             //solr绮惧噯妫�绱㈤渶瑕佸甫寮曞彿
-            query = new SimpleQuery("name:\"" + filter.getKey() + "\"");
+            query = new SimpleQuery(new Criteria("name").expression("\"" + filter.getKey() + "\"").or("mainactor").expression("\"" + filter.getKey() + "\""));
+        } else if (!StringUtil.isNullOrEmpty(filter.getActor())) {
+            query = new SimpleQuery(new Criteria("mainactor").expression("\"" + filter.getActor() + "\""));
+        } else if (!StringUtil.isNullOrEmpty(filter.getDirector())) {
+            query = new SimpleQuery(new Criteria("director").expression("\"" + filter.getDirector() + "\""));
         } else {
-            query = new SimpleQuery();
+            query = new SimpleQuery("*:*");
         }
-        Criteria criteria = new Criteria("contenttype").is(filter.getContentType());
+
 
         if (filter.getVideoType() != null) {
-            criteria = criteria.and("root_video_type").is(filter.getVideoType());
-        }
-
-        if (filter.getActor() != null) {
-            criteria = criteria.and("mainactor").expression("\"" + filter.getActor() + "\"");
-        }
-
-        if (filter.getDirector() != null) {
-            criteria = criteria.and("director").expression("\"" + filter.getDirector() + "\"");
+            query.addFilterQuery(new SimpleFilterQuery(Criteria.where("root_video_type").is(filter.getVideoType())));
         }
 
         if (filter.getResourceIds() != null && filter.getResourceIds().length > 0) {
-            criteria = criteria.and("resourceIds").contains(filter.getResourceIds());
+            query.addFilterQuery(new SimpleFilterQuery(Criteria.where("resourceIds").contains(filter.getResourceIds())));
+        }
+        if(filter.getFreeType()!=null){
+            query.addFilterQuery(new SimpleFilterQuery(Criteria.where("free_type").is(filter.getFreeType())));
         }
 
 
-        /** 娣诲姞鏉′欢 */
-        if (criteria != null)
-            query.addCriteria(criteria);
-
         /** 璁剧疆鍒嗛〉寮�濮嬭褰曟暟(绗竴椤�) 榛樿0 */
-        query.setOffset((page - 1) * pageSize * 1L);
+        query.setOffset((page - 1) * pageSize);
         /** 璁剧疆姣忛〉鏄剧ず璁板綍鏁帮紝榛樿10 */
         query.setRows(pageSize);
         if (StringUtil.isNullOrEmpty(filter.getSortKey())) {
@@ -141,23 +166,25 @@
         } else {
             query.addSort(new Sort(Sort.Direction.DESC, filter.getSortKey()));
         }
-        ScoredPage<SolrVideo> result = solrTemplate.queryForPage(CORE_NAME, query, SolrVideo.class);
+
+
+        ScoredPage<SolrAlbumVideo> result = solrTemplate.queryForPage(CORE_NAME, query, SolrAlbumVideo.class);
         System.out.println("鎬昏褰曟暟锛�" + result.getTotalElements());
-        List<SolrVideo> list = result.getContent();
+        List<SolrAlbumVideo> list = result.getContent();
         return new SolrResultDTO(list, (int) result.getTotalElements());
     }
 
     public List<String> getSuggestKeyList(String key) {
         Query query = new SimpleQuery("name:\"" + key + "\"");
         /** 璁剧疆鍒嗛〉寮�濮嬭褰曟暟(绗竴椤�) 榛樿0 */
-        query.setOffset(0L);
+        query.setOffset(0);
         /** 璁剧疆姣忛〉鏄剧ず璁板綍鏁帮紝榛樿10 */
         query.setRows(10);
-        ScoredPage<SolrVideo> result = solrTemplate.queryForPage(CORE_NAME, query, SolrVideo.class);
+        ScoredPage<SolrAlbumVideo> result = solrTemplate.queryForPage(CORE_NAME, query, SolrAlbumVideo.class);
         System.out.println("鎬昏褰曟暟锛�" + result.getTotalElements());
-        List<SolrVideo> list = result.getContent();
+        List<SolrAlbumVideo> list = result.getContent();
         List<String> keyList = new ArrayList<>();
-        for (SolrVideo sv : list)
+        for (SolrAlbumVideo sv : list)
             if (!keyList.contains(sv.getName()))
                 keyList.add(sv.getName());
         return keyList;
@@ -195,10 +222,9 @@
                         vi.setResourceList(map.get(vi.getId()));
                     }
                 }
-
                 saveOrUpdate(videoList);
             } catch (Exception e) {
-                logger.error("涓撹緫鎼滅储寮曟搸鏁版嵁鍚屾澶辫触");
+                logger.error("涓撹緫鎼滅储寮曟搸鏁版嵁鍚屾澶辫触",e);
             }
         }
     }
@@ -207,6 +233,7 @@
         AlbumVideoMap map = albumVideoMapService.selectByVideoId(videoId);
         if (map == null)
             return;
+
         VideoInfo video = videoInfoService.getVideoInfo(videoId);
         if (video != null) {
             List<ResourceVideo> rvList = resourceVideoService.getResourceList(video.getId());

--
Gitblit v1.8.0