admin
2021-07-30 19533a17aa55fafc70d0a385928e785cb50e1ebc
爱奇艺视频更新
5个文件已修改
138 ■■■■■ 已修改文件
src/main/java/com/yeshi/buwan/dto/mq/UpdateResourceVideoMQMsg.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yeshi/buwan/service/imp/juhe/Iqiyi2ServiceImpl.java 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yeshi/buwan/service/inter/juhe/Iqiyi2Service.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yeshi/buwan/util/SpringContext.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yeshi/buwan/util/mq/CMQManager.java 30 ●●●●● 补丁 | 查看 | 原始文档 | 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;
    }
}