From f537abe9f3646c739beaf15076246a2f71a347e9 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期四, 20 二月 2025 16:57:55 +0800
Subject: [PATCH] IOS广告增加区域屏蔽

---
 src/main/java/com/yeshi/buwan/service/imp/juhe/TencentVideoServiceImpl.java |  189 +++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 175 insertions(+), 14 deletions(-)

diff --git a/src/main/java/com/yeshi/buwan/service/imp/juhe/TencentVideoServiceImpl.java b/src/main/java/com/yeshi/buwan/service/imp/juhe/TencentVideoServiceImpl.java
index 4521a0f..cfeabd4 100644
--- a/src/main/java/com/yeshi/buwan/service/imp/juhe/TencentVideoServiceImpl.java
+++ b/src/main/java/com/yeshi/buwan/service/imp/juhe/TencentVideoServiceImpl.java
@@ -1,53 +1,214 @@
 package com.yeshi.buwan.service.imp.juhe;
 
 import com.yeshi.buwan.dao.juhe.tencent.TencentCoverInfoDao;
+import com.yeshi.buwan.dao.juhe.tencent.TencentCoverVideoDao;
+import com.yeshi.buwan.dao.juhe.tencent.TencentSearchVideoMapDao;
+import com.yeshi.buwan.domain.VideoDetailInfo;
+import com.yeshi.buwan.domain.video.InternetSearchVideo;
+import com.yeshi.buwan.service.inter.juhe.InternetSearchVideoService;
 import com.yeshi.buwan.service.inter.juhe.TencentVideoService;
-import com.yeshi.buwan.tencent.entity.TencentCoverInfo;
-import com.yeshi.buwan.youku.entity.YouKuShowDetail;
-import com.yeshi.buwan.youku.entity.YouKuVideo;
+import com.yeshi.buwan.util.TimeUtil;
+import com.yeshi.buwan.util.video.web.TencentWebUtil;
+import com.yeshi.buwan.videos.tencent.TencentVideoApiUtil;
+import com.yeshi.buwan.videos.tencent.TencentVideoUtil;
+import com.yeshi.buwan.videos.tencent.entity.TencentCoverInfo;
+import com.yeshi.buwan.videos.tencent.entity.TencentCoverVideo;
+import com.yeshi.buwan.videos.tencent.entity.TencentSearchVideoMap;
+import com.yeshi.buwan.util.factory.InternetSearchVideoFactory;
+import com.yeshi.buwan.videos.tencent.vo.TencentCoverInfoVO;
 import org.springframework.data.domain.Sort;
 import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.data.mongodb.core.query.Update;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 @Service
 public class TencentVideoServiceImpl implements TencentVideoService {
 
     @Resource
+    private TencentSearchVideoMapDao tencentSearchVideoMapDao;
+
+    @Resource
     private TencentCoverInfoDao tencentCoverInfoDao;
+    @Resource
+    private TencentCoverVideoDao tencentCoverVideoDao;
+    @Resource
+    private InternetSearchVideoService internetSearchVideoService;
 
     @Override
-    public void save(TencentCoverInfo detail) {
+    public void save(TencentCoverInfo detail) throws Exception {
         if (detail.getUpdateTime() == null)
             detail.setUpdateTime(new Date());
         tencentCoverInfoDao.save(detail);
+        if (detail.getVideoList() != null)
+            for (TencentCoverVideo video : detail.getVideoList()) {
+                if (video.getUpdateTime() == null) {
+                    video.setUpdateTime(new Date());
+                }
+                tencentCoverVideoDao.save(video);
+            }
     }
 
     @Override
-    public TencentCoverInfo getConverDetail(String id) {
-        TencentCoverInfo detail = tencentCoverInfoDao.get(id);
+    public TencentCoverInfo getCoverDetail(String coverId) {
+        TencentCoverInfo detail = tencentCoverInfoDao.get(coverId);
+        Query query = new Query();
+        if (detail != null) {
+            query.addCriteria(Criteria.where("coverId").is(coverId));
+        }
+        query.with(new Sort(new Sort.Order(Sort.Direction.ASC, "position")));
+        List<TencentCoverVideo> videoList = tencentCoverVideoDao.findList(query);
+        detail.setVideoList(videoList);
         return detail;
     }
 
     @Override
-    public long count(String type) {
+    public TencentCoverInfo getSimpleCoverDetail(String coverId) {
+        Query query=new Query();
+        query.addCriteria(Criteria.where("_id").is(coverId));
+
+        TencentCoverInfo detail = tencentCoverInfoDao.findOne(query);
+        return detail;
+    }
+
+    @Override
+    public List<TencentCoverVideo> getVideoList(String coverId, int page, int pageSize) {
         Query query = new Query();
-        if (type != null)
-            query.addCriteria(Criteria.where("type").is(type));
+        query.addCriteria(Criteria.where("coverId").is(coverId));
+        query.with(new Sort(new Sort.Order(Sort.Direction.ASC, "position")));
+        query.skip((page - 1) * pageSize);
+        query.limit(pageSize);
+        List<TencentCoverVideo> videoList = tencentCoverVideoDao.findList(query);
+        return videoList;
+    }
+
+    @Override
+    public TencentCoverVideo getVideoDetail(String id) {
+        return tencentCoverVideoDao.get(id);
+    }
+
+
+    @Override
+    public long count(String category) {
+        Query query = new Query();
+        if (category != null)
+            query.addCriteria(Criteria.where("type_name").is(category));
         return tencentCoverInfoDao.count(query);
     }
 
     @Override
-    public List<TencentCoverInfo> list(String type, int page, int pageSize) {
+    public List<TencentCoverInfo> list(String category, int page, int pageSize) {
         Query query = new Query();
-        if (type != null)
-            query.addCriteria(Criteria.where("type").is(type));
+        if (category != null)
+            query.addCriteria(Criteria.where("type_name").is(category));
         query.limit(pageSize);
         query.skip((page - 1) * pageSize);
         return tencentCoverInfoDao.findList(query);
     }
+
+    @Override
+    public List<VideoDetailInfo> getVideoDetailList(String videoid, int page, int pageSize) {
+        TencentSearchVideoMap map = tencentSearchVideoMapDao.selectByVideoId(videoid);
+        if (map == null)
+            return null;
+        TencentCoverInfo coverInfo = tencentCoverInfoDao.get(map.getCoverId());
+
+        return TencentVideoUtil.convertToDetail(getVideoList(map.getCoverId(), page, pageSize), coverInfo);
+    }
+
+    @Override
+    public TencentSearchVideoMap selectMapByVideoId(String videoId) {
+        TencentSearchVideoMap map = tencentSearchVideoMapDao.selectByVideoId(videoId);
+        return map;
+    }
+
+    @Override
+    public void addToInternetSearch(TencentCoverInfo showDetail, boolean saveCoverInfo) throws Exception {
+        if(saveCoverInfo) {
+            save(showDetail);
+        }
+        InternetSearchVideo video = InternetSearchVideoFactory.create(showDetail);
+        if (internetSearchVideoService.save(video) == null) {
+            return;
+        }
+        TencentSearchVideoMap map = new TencentSearchVideoMap();
+        map.setCoverId(showDetail.getCover_id());
+        map.setVideoId(video.getId());
+        map.setCreateTime(new Date());
+        tencentSearchVideoMapDao.save(map);
+    }
+
+    /**
+     * @author hxh 
+     * @description 浠庡叏缃戞悳绉婚櫎
+     * @date 18:27 2024/8/16
+     * @param: coverId
+     * @return void
+     **/
+    private  void removeFromInternetSearch(String coverId){
+        Query query=new Query();
+        query.addCriteria(Criteria.where("coverId").is(coverId));
+        List<TencentSearchVideoMap> mapList = tencentSearchVideoMapDao.findList(query);
+        // 鍒犻櫎map
+        for(TencentSearchVideoMap map:mapList){
+            tencentSearchVideoMapDao.deleteByPrimaryKey(map.getVideoId());
+            internetSearchVideoService.removeResourceId( map.getVideoId(), TencentVideoUtil.RESOURCE_ID);
+        }
+    }
+
+    @Override
+    public void clearOfflineCovers() {
+      // 鎷夊彇闀挎湡娌℃湁鏇存柊鐨勪笓杈�
+        Query query=new Query();
+        query.addCriteria(Criteria.where("updateTime").lte(new Date(System.currentTimeMillis()-1000*60*60*24L*5)));
+        query.with(new Sort(new Sort.Order(Sort.Direction.ASC, "updateTime")));
+        query.skip(0);
+        query.limit(100);
+        List<TencentCoverInfo>  list =  tencentCoverInfoDao.findList(query);
+        for(TencentCoverInfo coverInfo:list){
+            try {
+               boolean onLine = TencentVideoApiUtil.isOnLine(coverInfo.getVideoList().get(0).getLink());
+                if(onLine){
+                    Query updateQuery=new Query();
+                    updateQuery.addCriteria(Criteria.where("_id").is(coverInfo.getCover_id()));
+                    Update update=new Update();
+                    update.set("updateTime",new Date());
+                    tencentCoverInfoDao.update(updateQuery, update);
+                }else{
+                    // 鍒犻櫎鏁版嵁
+                    Query updateQuery=new Query();
+                    updateQuery.addCriteria(Criteria.where("_id").is(coverInfo.getCover_id()));
+                    tencentCoverInfoDao.delete(updateQuery);
+                }
+                Thread.sleep(1000);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        // 鍒犻櫎鍏ㄧ綉鎼滈噷闈㈡鏉ユ簮鐨勮棰戝凡缁忚鍒犻櫎
+        query = new Query();
+        long count =    tencentSearchVideoMapDao.count(query);
+        int pageSize = 100;
+        int page =(int) (count%pageSize==0?count/pageSize:count/pageSize+1);
+        Set<String> deletedCoverIds = new HashSet<>();
+        for(int i=0;i<page;i++){
+            query.skip(i*pageSize);
+            query.limit(pageSize);
+            List<TencentSearchVideoMap> mapList =    tencentSearchVideoMapDao.findList(query);
+            for(TencentSearchVideoMap map:mapList){
+                Query cquery=new Query();
+                cquery.addCriteria(Criteria.where("_id").is(map.getCoverId()));
+               if(tencentCoverInfoDao.findOne(cquery)==null){
+                   deletedCoverIds.add(map.getCoverId());
+                   removeFromInternetSearch(map.getCoverId());
+                   tencentSearchVideoMapDao.deleteByPrimaryKey(map.getVideoId());
+               }
+            }
+        }
+        System.out.println(deletedCoverIds);
+    }
+
 }

--
Gitblit v1.8.0