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