src/main/java/com/yeshi/buwan/dto/mq/UpdateResourceVideoMQMsg.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/yeshi/buwan/service/imp/juhe/Iqiyi2ServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/yeshi/buwan/service/inter/juhe/Iqiyi2Service.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/yeshi/buwan/util/SpringContext.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/yeshi/buwan/util/mq/CMQManager.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/yeshi/buwan/dto/mq/UpdateResourceVideoMQMsg.java
@@ -7,6 +7,8 @@ private Integer resourceId; private Date date; private String handler; public UpdateResourceVideoMQMsg(String id, Integer resourceId, Date date) { this.id = id; this.resourceId = resourceId; @@ -41,4 +43,12 @@ public void setDate(Date date) { this.date = date; } public String getHandler() { return handler; } public void setHandler(String handler) { this.handler = handler; } } src/main/java/com/yeshi/buwan/service/imp/juhe/Iqiyi2ServiceImpl.java
@@ -8,27 +8,36 @@ import com.yeshi.buwan.domain.entity.PlayUrl; import com.yeshi.buwan.domain.system.SystemConfig; import com.yeshi.buwan.domain.video.AlbumVideoMap; import com.yeshi.buwan.dto.mq.UpdateResourceVideoMQMsg; import com.yeshi.buwan.iqiyi.IqiYiNewAPI; import com.yeshi.buwan.iqiyi.entity.IqiyiAlbum2; import com.yeshi.buwan.iqiyi.entity.VideoIqiyi2; import com.yeshi.buwan.iqiyi.util.IqiyiUtil; import com.yeshi.buwan.iqiyi.util.IqiyiUtil2; import com.yeshi.buwan.query.Iqiyi2AlbumQuery; import com.yeshi.buwan.service.imp.*; import com.yeshi.buwan.service.imp.CategoryVideoService; 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.juhe.Iqiyi2Service; import com.yeshi.buwan.service.inter.system.SystemConfigService; import com.yeshi.buwan.util.StringUtil; import com.yeshi.buwan.util.ThreadUtil; import com.yeshi.buwan.util.TimeUtil; import com.yeshi.buwan.util.log.VideoLogFactory; import com.yeshi.buwan.util.mq.CMQManager; import com.yeshi.buwan.util.video.VideoConstant; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.io.Serializable; import java.util.*; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.regex.Pattern; @Service @@ -69,7 +78,17 @@ if (videoIqiyi2 == null) return null; IqiyiAlbum2 album = iqiyiAlbum2Dao.get(videoIqiyi2.getIqiyiId()); final IqiyiAlbum2 album = iqiyiAlbum2Dao.get(videoIqiyi2.getIqiyiId()); if (album != null) { ThreadUtil.run(new Runnable() { @Override public void run() { CMQManager.getInstance().addUpdateResourceVideoMsg(new UpdateResourceVideoMQMsg(album.getId() + "", IqiyiUtil2.RESOURCE_ID, new Date())); } }); } List<IqiyiAlbum2> album2List = new ArrayList<>(); if (album.getFeatureAlbumId() > 0) {//单视频 album2List.add(album); @@ -111,6 +130,16 @@ iqiyiAlbum2Dao.save(album); } @Override public void offlineIqiyiAlbum(Long id) { //删除专辑 Query query = new Query(); query.addCriteria(new Criteria().orOperator(Criteria.where("id").is(id), Criteria.where("featureAlbumId").is(id))); //删除专辑下的视频 iqiyiAlbum2Dao.delete(query); } public boolean isUnNormalUpdateVideoName(String name) { SystemConfig config = systemConfigService.getConfigByKeyCache("iqiyi_update_video_name"); if (config != null) { src/main/java/com/yeshi/buwan/service/inter/juhe/Iqiyi2Service.java
@@ -33,6 +33,12 @@ */ public void saveIqiyiAlbum(IqiyiAlbum2 album); /** * 专辑下线 * @param id */ public void offlineIqiyiAlbum(Long id); /** * 将专辑添加到视频 src/main/java/com/yeshi/buwan/util/SpringContext.java
@@ -1,13 +1,17 @@ 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.IqiYiNewAPI; import com.yeshi.buwan.iqiyi.entity.IqiyiAlbum2; import com.yeshi.buwan.iqiyi.entity.VideoIqiyi2; import com.yeshi.buwan.iqiyi.util.IqiyiUtil2; import com.yeshi.buwan.pptv.entity.PPTVSeries; import com.yeshi.buwan.service.imp.JobThreadExecutorServiceImpl; import com.yeshi.buwan.service.imp.ResourceVideoService; @@ -92,6 +96,7 @@ doDeleteVideoResource(); doUpdateVideoExtraInfo(); doInternetSearchVideoUpdateJob(); doUpdateResourceVideoJob(); } } @@ -162,6 +167,56 @@ } @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))) { 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())); break; } //12小时内不再更新 redisManager.cacheCommonString(key, "1", 60 * 60 * 12); } } } catch (Exception e) { } finally { CMQManager.getInstance().deleteUpdateResourceVideoMsg(videoMQMsg.getHandler()); } } } }); } } private void doAddIqiyi2Video() { new JobThreadExecutorServiceImpl().run(new Runnable() { @Override src/main/java/com/yeshi/buwan/util/mq/CMQManager.java
@@ -32,6 +32,7 @@ //全网搜 public static String QUEUENAME_UPDATE_INTERNET_SEARCH = "buwan-video-update-internet-search"; public static String QUEUENAME_UPDATE_RESOURCE_VIDEO = "buwan-video-update-resource-video"; private static String TOPIC_VIDEO_EXTRAINFO = "buwan_topic_video_extrainfo_change"; @@ -46,6 +47,7 @@ cmqUtil.createQueue(QUEUENAME_VIDEO_RESOURCE_DELETE, 1024 * 1024); cmqUtil.createQueue(QUEUENAME_UPDATE_VIDEO_EXTRAINFO, 1024 * 1024); cmqUtil.createQueue(QUEUENAME_UPDATE_INTERNET_SEARCH, 1024 * 1024); cmqUtil.createQueue(QUEUENAME_UPDATE_RESOURCE_VIDEO, 1024 * 1024); //创建主题 cmqUtil.createTopic(TOPIC_VIDEO_EXTRAINFO); @@ -263,6 +265,32 @@ cmqUtil.deleteMsg(QUEUENAME_UPDATE_INTERNET_SEARCH, handler); } // public void /** * 视频来源更新 * * @param msg */ public void addUpdateResourceVideoMsg(UpdateResourceVideoMQMsg msg) { cmqUtil.sendMsg(QUEUENAME_UPDATE_RESOURCE_VIDEO, new Gson().toJson(msg)); } public void deleteUpdateResourceVideoMsg(String handler) { cmqUtil.deleteMsg(QUEUENAME_UPDATE_RESOURCE_VIDEO, handler); } public List<UpdateResourceVideoMQMsg> consumeUpdateResourceVideoMsg(int count) { Gson gson = new Gson(); List<UpdateResourceVideoMQMsg> list = new ArrayList<>(); List<Message> msgList = cmqUtil.recieveMsg(count, QUEUENAME_UPDATE_RESOURCE_VIDEO); if (msgList != null) for (Message msg : msgList) { UpdateResourceVideoMQMsg mm = gson.fromJson(msg.msgBody, UpdateResourceVideoMQMsg.class); mm.setHandler(msg.receiptHandle); list.add(mm); } return list; } }