admin
2021-08-27 8fee151ffae0c3818694b7318583814bf92663e2
src/main/java/com/yeshi/buwan/util/SpringContext.java
@@ -1,23 +1,33 @@
package com.yeshi.buwan.util;
import com.alibaba.druid.pool.DruidDataSource;
import com.yeshi.buwan.dao.juhe.iqiyi.VideoIqiyi2Dao;
import com.yeshi.buwan.domain.ResourceVideo;
import com.yeshi.buwan.domain.VideoInfo;
import com.yeshi.buwan.domain.VideoResource;
import com.yeshi.buwan.domain.video.InternetSearchVideo;
import com.yeshi.buwan.dto.mq.*;
import com.yeshi.buwan.funtv.entity.FunTVAlbum2;
import com.yeshi.buwan.iqiyi.entity.IqiyiAlbum2;
import com.yeshi.buwan.pptv.entity.PPTVSeries;
import com.yeshi.buwan.videos.funtv.entity.FunTVAlbum2;
import com.yeshi.buwan.videos.iqiyi.IqiYiNewAPI;
import com.yeshi.buwan.videos.iqiyi.entity.IqiyiAlbum2;
import com.yeshi.buwan.videos.iqiyi.entity.VideoIqiyi2;
import com.yeshi.buwan.videos.iqiyi.util.IqiyiUtil2;
import com.yeshi.buwan.videos.pptv.entity.PPTVSeries;
import com.yeshi.buwan.service.imp.JobThreadExecutorServiceImpl;
import com.yeshi.buwan.service.imp.ResourceVideoService;
import com.yeshi.buwan.service.imp.VideoInfoService;
import com.yeshi.buwan.service.inter.juhe.FunTV2Service;
import com.yeshi.buwan.service.inter.juhe.InternetSearchVideoService;
import com.yeshi.buwan.service.inter.juhe.Iqiyi2Service;
import com.yeshi.buwan.service.inter.juhe.PPTVService;
import com.yeshi.buwan.service.manager.SolrAlbumDataManager;
import com.yeshi.buwan.service.manager.search.SolrAlbumVideoDataManager;
import com.yeshi.buwan.service.manager.search.SolrInternetSearchVideoDataManager;
import com.yeshi.buwan.util.mq.CMQManager;
import io.seata.rm.datasource.DataSourceProxy;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Bean;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;
@@ -37,10 +47,13 @@
    private VideoInfoService videoInfoService;
    @Resource
    private SolrAlbumDataManager solrDataManager;
    private SolrAlbumVideoDataManager solrDataManager;
    @Resource
    private Iqiyi2Service iqiyi2Service;
    @Resource
    private IqiyiUtil2 iqiyiUtil2;
    @Resource
    private FunTV2Service funTV2Service;
@@ -50,6 +63,7 @@
    @Resource
    private PPTVService pptvService;
    private static boolean isInited = false;
@@ -61,6 +75,12 @@
            onApplication(arg0);
        }
    }
    @Bean
    public DataSourceProxy dataSourceProxy(DruidDataSource druidDataSource) {
        return new DataSourceProxy(druidDataSource);
    }
    private synchronized void onApplication(ContextRefreshedEvent context) {
        if (!isInited) {
@@ -76,8 +96,11 @@
            doSolrJob();
            doAddIqiyi2Video();
            doAddFunTV2Video();
            doAddPPTVVideo();
            doDeleteVideoResource();
            doUpdateVideoExtraInfo();
            doInternetSearchVideoUpdateJob();
            doUpdateResourceVideoJob();
        }
    }
@@ -103,10 +126,97 @@
                                        solrDataManager.saveOrUpdate(videoInfo);
                                    } else
                                        solrDataManager.deleteById(videoInfo.getId());
                                } else {//视频已经删除
                                    solrDataManager.deleteById(solrVideo.getId());
                                }
                                CMQManager.getInstance().deleteSolrMsg(solrVideo.getHandler());
                            } catch (Exception e) {
                                logger.error("添加到搜索引擎出错", e);
                            }
                        }
                }
            });
        }
    }
    @Resource
    private InternetSearchVideoService internetSearchVideoService;
    @Resource
    private SolrInternetSearchVideoDataManager solrInternetSearchVideoDataManager;
    private void doInternetSearchVideoUpdateJob() {
        for (int i = 0; i < 1; i++) {
            new JobThreadExecutorServiceImpl().run(new Runnable() {
                @Override
                public void run() {
                    List<InternetSearchVideoMQMsg> solrMsgList = CMQManager.getInstance().consumeInternetSearchVideoUpdateMsg(16);
                    if (solrMsgList != null)
                        for (InternetSearchVideoMQMsg solrVideo : solrMsgList) {
                            try {
                                InternetSearchVideo video = internetSearchVideoService.selectByPrimaryKey(solrVideo.getId());
                                if (video != null)
                                    solrInternetSearchVideoDataManager.saveOrUpdate(video);
                                else
                                    solrInternetSearchVideoDataManager.deleteById(video.getId());
                                CMQManager.getInstance().deleteInternetSearchVideoUpdateMsg(solrVideo.getHandler());
                            } catch (Exception e) {
                                logger.error("更新全网搜搜索引擎出错", e);
                            }
                        }
                }
            });
        }
    }
    @Resource
    private RedisManager redisManager;
    @Resource
    private VideoIqiyi2Dao videoIqiyi2Dao;
    private void doUpdateResourceVideoJob() {
        for (int i = 0; i < 1; i++) {
            new JobThreadExecutorServiceImpl().run(new Runnable() {
                @Override
                public void run() {
                    List<UpdateResourceVideoMQMsg> msgList = CMQManager.getInstance().consumeUpdateResourceVideoMsg(16);
                    if (msgList != null)
                        for (UpdateResourceVideoMQMsg videoMQMsg : msgList) {
                            try {
                                if (videoMQMsg != null) {
                                    String key = "resourcevideo-update-" + StringUtil.Md5(videoMQMsg.getResourceId() + "#" + videoMQMsg.getId());
                                    //可以更新
                                    if (StringUtil.isNullOrEmpty(redisManager.getCommonString(key))) {
                                        //12小时内不再更新
                                        redisManager.cacheCommonString(key, "1", 60 * 60 * 12);
                                        switch (videoMQMsg.getResourceId()) {
                                            case IqiyiUtil2
                                                    .RESOURCE_ID:
                                                //redis查询是否更新过
                                                IqiyiAlbum2 iqiyiAlbum2 = IqiYiNewAPI.getAlbumOrVideoDetail(Long.parseLong(videoMQMsg.getId()));
                                                if (iqiyiAlbum2 == null) {
                                                    VideoIqiyi2 videoIqiyi2 = videoIqiyi2Dao.selectByIqiyiId(Long.parseLong(videoMQMsg.getId()));
                                                    if (videoIqiyi2 != null) {
                                                        //下架
                                                        resourceVideoService.delete(videoIqiyi2.getVideoId() + "", videoMQMsg.getResourceId() + "");
                                                    }
                                                    //删除爱奇艺资源
                                                    iqiyi2Service.offlineIqiyiAlbum(Long.parseLong(videoMQMsg.getId()));
                                                } else {
                                                    //保存
                                                    iqiyiUtil2.syncByAid(iqiyiAlbum2.getId(),false);
                                                }
                                                break;
                                        }
                                    }
                                }
                            } catch (Exception e) {
                            } finally {
                                CMQManager.getInstance().deleteUpdateResourceVideoMsg(videoMQMsg.getHandler());
                            }
                        }
                }
@@ -189,6 +299,7 @@
                            }
                            CMQManager.getInstance().deletePPTVSeriesUpdateMsg(pptvmqMsg.getHandler());
                        } catch (Exception e) {
                            e.printStackTrace();
                            logger.error("PPTV添加到视频出错:" + e.getMessage());
                            logger.error("infoId:" + pptvmqMsg.getInfoId());
                        }