From f788607ff771a47bc60d6a86e00b3433c40f3d2c Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期五, 24 九月 2021 15:22:03 +0800 Subject: [PATCH] 接入视频直播 --- src/main/java/com/yeshi/buwan/util/SpringContext.java | 317 ++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 255 insertions(+), 62 deletions(-) diff --git a/src/main/java/com/yeshi/buwan/util/SpringContext.java b/src/main/java/com/yeshi/buwan/util/SpringContext.java index 54be0b3..8de95c9 100644 --- a/src/main/java/com/yeshi/buwan/util/SpringContext.java +++ b/src/main/java/com/yeshi/buwan/util/SpringContext.java @@ -1,27 +1,38 @@ 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.dto.mq.CMQResult; -import com.yeshi.buwan.dto.mq.FunTVAlbum2MQMsg; -import com.yeshi.buwan.dto.mq.IqiyiAlbum2MQMsg; -import com.yeshi.buwan.dto.mq.SolrVideoMQMsg; -import com.yeshi.buwan.funtv.entity.FunTVAlbum2; -import com.yeshi.buwan.iqiyi.entity.IqiyiAlbum2; +import com.yeshi.buwan.domain.VideoResource; +import com.yeshi.buwan.domain.video.InternetSearchVideo; +import com.yeshi.buwan.dto.mq.*; +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.manager.SolrAlbumDataManager; +import com.yeshi.buwan.service.inter.juhe.PPTVService; +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; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; /** @@ -36,16 +47,23 @@ private VideoInfoService videoInfoService; @Resource - private SolrAlbumDataManager solrDataManager; + private SolrAlbumVideoDataManager solrDataManager; @Resource private Iqiyi2Service iqiyi2Service; + + @Resource + private IqiyiUtil2 iqiyiUtil2; @Resource private FunTV2Service funTV2Service; @Resource private ResourceVideoService resourceVideoService; + + @Resource + private PPTVService pptvService; + private static boolean isInited = false; @@ -58,6 +76,12 @@ } } + @Bean + public DataSourceProxy dataSourceProxy(DruidDataSource druidDataSource) { + return new DataSourceProxy(druidDataSource); + } + + private synchronized void onApplication(ContextRefreshedEvent context) { if (!isInited) { isInited = true; @@ -67,36 +91,137 @@ } private void init() { + logger.error("鍒濆鍖�"); if (!Constant.JobTasker) { doSolrJob(); doAddIqiyi2Video(); doAddFunTV2Video(); + doAddPPTVVideo(); doDeleteVideoResource(); + doUpdateVideoExtraInfo(); + doInternetSearchVideoUpdateJob(); + doUpdateResourceVideoJob(); } } private void doSolrJob() { - new JobThreadExecutorServiceImpl().run(new Runnable() { - @Override - public void run() { + for (int i = 0; i < 5; i++) { + new JobThreadExecutorServiceImpl().run(new Runnable() { + @Override + public void run() { + logger.info("doSolrJob"); List<SolrVideoMQMsg> solrMsgList = CMQManager.getInstance().consumeSolrMsg(16); if (solrMsgList != null) for (SolrVideoMQMsg solrVideo : solrMsgList) { try { VideoInfo videoInfo = videoInfoService.getVideoInfo(solrVideo.getId()); if (videoInfo != null) { - if ("1".equalsIgnoreCase(videoInfo.getShow())) + if ("1".equalsIgnoreCase(videoInfo.getShow())) { + List<VideoResource> resourceList = new ArrayList<>(); + List<ResourceVideo> rvList = resourceVideoService.getResourceList(videoInfo.getId()); + if (rvList != null) + for (ResourceVideo rv : rvList) + resourceList.add(rv.getResource()); + videoInfo.setResourceList(resourceList); solrDataManager.saveOrUpdate(videoInfo); - else + } 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()); + } + } + } + }); + } } @@ -104,22 +229,24 @@ new JobThreadExecutorServiceImpl().run(new Runnable() { @Override public void run() { - List<IqiyiAlbum2MQMsg> iqiyiAlbumMsgList = CMQManager.getInstance().consumeIqiyiAlbumUpdateMsg(16); - if (iqiyiAlbumMsgList != null) - for (IqiyiAlbum2MQMsg iqiyiAlbum2MQMsg : iqiyiAlbumMsgList) { - try { - Long qikuID = iqiyiAlbum2MQMsg.getId(); - IqiyiAlbum2 album2 = iqiyi2Service.selectAlbumById(qikuID); - if (album2 != null) { - iqiyi2Service.addToVideoInfo(album2); - } - CMQManager.getInstance().deleteIqiyiAlbumUpdateMsg(iqiyiAlbum2MQMsg.getHandler()); - } catch (Exception e) { - logger.error("鐖卞鑹轰笓杈戞坊鍔犲埌瑙嗛鍑洪敊锛�" + e.getMessage()); - logger.error("ID:" + iqiyiAlbum2MQMsg.getId()); + logger.info("doAddIqiyi2Video"); + List<IqiyiAlbum2MQMsg> iqiyiAlbumMsgList = CMQManager.getInstance().consumeIqiyiAlbumUpdateMsg(16); + if (iqiyiAlbumMsgList != null) + for (IqiyiAlbum2MQMsg iqiyiAlbum2MQMsg : iqiyiAlbumMsgList) { + try { + Long qikuID = iqiyiAlbum2MQMsg.getId(); + IqiyiAlbum2 album2 = iqiyi2Service.selectAlbumById(qikuID); + logger.info("鐖卞鑹轰笓杈戯細" + album2.getName()); + if (album2 != null) { + iqiyi2Service.addToVideoInfo(album2); } + CMQManager.getInstance().deleteIqiyiAlbumUpdateMsg(iqiyiAlbum2MQMsg.getHandler()); + } catch (Exception e) { + logger.error("鐖卞鑹轰笓杈戞坊鍔犲埌瑙嗛鍑洪敊锛�" + e.getMessage()); + logger.error("ID:" + iqiyiAlbum2MQMsg.getId()); } - } + } + } }); } @@ -129,21 +256,54 @@ new JobThreadExecutorServiceImpl().run(new Runnable() { @Override public void run() { - List<FunTVAlbum2MQMsg> funTVAlbum2MsgList = CMQManager.getInstance().consumeFunTVAlbumUpdateMsg(16); - if (funTVAlbum2MsgList != null) - for (FunTVAlbum2MQMsg funTVAlbum2MQMsg : funTVAlbum2MsgList) { - try { - String mediaId = funTVAlbum2MQMsg.getId(); - FunTVAlbum2 album2 = funTV2Service.getAlbumDetail(mediaId); - if (album2 != null) { - funTV2Service.processAlbum(album2); - } - CMQManager.getInstance().deleteFunTVAlbumUpdateMsg(funTVAlbum2MQMsg.getHandler()); - } catch (Exception e) { - logger.error("椋庤涓撹緫娣诲姞鍒拌棰戝嚭閿欙細" + e.getMessage()); - logger.error("ID:" + funTVAlbum2MQMsg.getId()); + List<FunTVAlbum2MQMsg> funTVAlbum2MsgList = CMQManager.getInstance().consumeFunTVAlbumUpdateMsg(16); + if (funTVAlbum2MsgList != null) + for (FunTVAlbum2MQMsg funTVAlbum2MQMsg : funTVAlbum2MsgList) { + try { + String mediaId = funTVAlbum2MQMsg.getId(); + FunTVAlbum2 album2 = funTV2Service.getAlbumDetail(mediaId); + if (album2 != null) { + funTV2Service.processAlbum(album2); } + CMQManager.getInstance().deleteFunTVAlbumUpdateMsg(funTVAlbum2MQMsg.getHandler()); + } catch (Exception e) { + logger.error("椋庤涓撹緫娣诲姞鍒拌棰戝嚭閿欙細" + e.getMessage()); + logger.error("ID:" + funTVAlbum2MQMsg.getId()); } + } + } + }); + + } + + + private void doAddPPTVVideo() { + new JobThreadExecutorServiceImpl().run(new Runnable() { + @Override + public void run() { + List<PPTVMQMsg> pptvMsgList = CMQManager.getInstance().consumePPTVSeriesUpdateMsg(16); + if (pptvMsgList != null) + for (PPTVMQMsg pptvmqMsg : pptvMsgList) { + try { + switch (pptvmqMsg.getType()) { + case PPTVMQMsg.TYPE_ADD_OR_UPDATE: + PPTVSeries pptvSeries = pptvService.getSeriesDetail(pptvmqMsg.getInfoId()); + if (pptvSeries != null) { + pptvService.addToVideoInfo(pptvSeries); + } + break; + + case PPTVMQMsg.TYPE_DELETE: + pptvService.offLineSeries(pptvmqMsg.getInfoId()); + break; + } + CMQManager.getInstance().deletePPTVSeriesUpdateMsg(pptvmqMsg.getHandler()); + } catch (Exception e) { + e.printStackTrace(); + logger.error("PPTV娣诲姞鍒拌棰戝嚭閿欙細" + e.getMessage()); + logger.error("infoId:" + pptvmqMsg.getInfoId()); + } + } } }); @@ -153,26 +313,59 @@ new JobThreadExecutorServiceImpl().run(new Runnable() { @Override public void run() { - while (true) { - List<CMQResult> cmqMsgList = CMQManager.getInstance().consumeVideoResourceDeleteMsg(16); - if (cmqMsgList != null) - for (CMQResult msg : cmqMsgList) { - try { - String videoId = msg.getData() + ""; - //鏌ヨ璧勬簮鍒楄〃 - List<ResourceVideo> resourceVideoList = resourceVideoService.getResourceList(videoId); - //闅愯棌瑙嗛 - if (resourceVideoList == null || resourceVideoList.size() == 0) - videoInfoService.hiddenVideo(videoId); - //鏇存柊鎼滅储寮曟搸 - CMQManager.getInstance().addSolrMsg(videoId); - CMQManager.getInstance().deleteVideoResourceDeleteMsg(msg.getHandler()); - } catch (Exception e) { - logger.error("瑙嗛璧勬簮鍒犻櫎澶勭悊鍑洪敊锛�" + e.getMessage()); - logger.error("ID:" + msg.getData()); - } + List<CMQResult> cmqMsgList = CMQManager.getInstance().consumeVideoResourceDeleteMsg(16); + if (cmqMsgList != null) + for (CMQResult msg : cmqMsgList) { + try { + String videoId = msg.getData() + ""; + //鏌ヨ璧勬簮鍒楄〃 + List<ResourceVideo> resourceVideoList = resourceVideoService.getResourceList(videoId); + //闅愯棌瑙嗛 + if (resourceVideoList == null || resourceVideoList.size() == 0) + videoInfoService.hiddenVideo(videoId); + //鏇存柊鎼滅储寮曟搸 + CMQManager.getInstance().addSolrMsg(videoId); + CMQManager.getInstance().deleteVideoResourceDeleteMsg(msg.getHandler()); + } catch (Exception e) { + logger.error("瑙嗛璧勬簮鍒犻櫎澶勭悊鍑洪敊锛�" + e.getMessage()); + logger.error("ID:" + msg.getData()); } - } + } + } + }); + + } + + + private void doUpdateVideoExtraInfo() { + new JobThreadExecutorServiceImpl().run(new Runnable() { + @Override + public void run() { + List<CMQResult> cmqMsgList = CMQManager.getInstance().consumeUpdateVideoExtraInfoMsg(16); + if (cmqMsgList != null) + for (CMQResult msg : cmqMsgList) { + try { + VideoExtraInfoChangeMQMsg videoExtraInfoChangeMQMsg = (VideoExtraInfoChangeMQMsg) msg.getData(); + + if (videoExtraInfoChangeMQMsg != null) { + switch (videoExtraInfoChangeMQMsg.getType()) { + case VideoExtraInfoChangeMQMsg.TYPE_RESOURCE: + if (VideoExtraInfoChangeMQMsg.ACTION_DELETE.equalsIgnoreCase(videoExtraInfoChangeMQMsg.getAction())) {//鍒犻櫎瑙嗛婧� + CMQManager.getInstance().addVideoResourceDeleteMsg(videoExtraInfoChangeMQMsg.getVideoId()); + } + break; + case VideoExtraInfoChangeMQMsg.TYPE_CATEGORY: + break; + } + + videoInfoService.statisticVideoExtraInfo(videoExtraInfoChangeMQMsg.getVideoId()); + } + CMQManager.getInstance().deleteUpdateVideoExtraInfoMsg(msg.getHandler()); + } catch (Exception e) { + logger.error("瑙嗛璧勬簮鍒犻櫎澶勭悊鍑洪敊锛�" + e.getMessage()); + logger.error("ID:" + msg.getData()); + } + } } }); -- Gitblit v1.8.0