admin
2021-08-27 8fee151ffae0c3818694b7318583814bf92663e2
src/main/java/com/yeshi/buwan/service/imp/juhe/PPTVServiceImpl.java
@@ -2,7 +2,6 @@
import com.yeshi.buwan.dao.VideoInfoDao;
import com.yeshi.buwan.dao.VideoResourceMapExtraInfoDao;
import com.yeshi.buwan.dao.VideoTypeDao;
import com.yeshi.buwan.dao.juhe.pptv.PPTVProgramDao;
import com.yeshi.buwan.dao.juhe.pptv.PPTVSeriesDao;
import com.yeshi.buwan.dao.juhe.pptv.PPTVSeriesProgramMapDao;
@@ -13,18 +12,19 @@
import com.yeshi.buwan.domain.VideoType;
import com.yeshi.buwan.domain.video.AlbumVideoMap;
import com.yeshi.buwan.dto.mq.PPTVMQMsg;
import com.yeshi.buwan.pptv.PPTVQuery;
import com.yeshi.buwan.pptv.PPTVUtil;
import com.yeshi.buwan.pptv.entity.PPTVProgram;
import com.yeshi.buwan.pptv.entity.PPTVSeries;
import com.yeshi.buwan.pptv.entity.PPTVSeriesProgramMap;
import com.yeshi.buwan.pptv.entity.VideoPPTVMap;
import com.yeshi.buwan.videos.pptv.PPTVApiUtil;
import com.yeshi.buwan.videos.pptv.PPTVQuery;
import com.yeshi.buwan.videos.pptv.PPTVUtil;
import com.yeshi.buwan.videos.pptv.entity.*;
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.VideoTypeService;
import com.yeshi.buwan.service.inter.juhe.PPTVService;
import com.yeshi.buwan.util.mq.CMQManager;
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;
@@ -65,95 +65,114 @@
        if (series.getSeries() == null || series.getSeries().size() <= 0)
            return;
        VideoInfo newVideoInfo = PPTVUtil.convertToVideoInfo(series);
        if (newVideoInfo == null)
        List<PPTVUtil.VideoConvertResult> newVideoInfoList = PPTVUtil.convertToVideoInfo(series);
        if (newVideoInfoList == null)
            return;
//        if (newVideoInfo.getVideoType() != null) {
//            newVideoInfo.setVideoType(videoTypeService.getVideoType(newVideoInfo.getVideoType().getId()));
//        }
        VideoPPTVMap videoPPTV = videoPPTVMapDao.selectByInfoId(series.getInfoID());
        if (videoPPTV != null) {//渠道视频已经存在
            VideoInfo videoInfo = videoInfoService.getVideoInfo(videoPPTV.getVideoId() + "");
            if (videoInfo == null)
                return;
            newVideoInfo.setId(videoInfo.getId());
            if (!newVideoInfo.getTag().equalsIgnoreCase(videoInfo.getTag())) {
                newVideoInfo.setCreatetime(videoInfo.getCreatetime());
                //更新信息tag信息
                videoInfo.setVideocount(newVideoInfo.getVideocount());
                videoInfo.setTag(newVideoInfo.getTag());
                videoInfo.setPicture(newVideoInfo.getPicture());
                videoInfo.setHpicture(newVideoInfo.getHpicture());
                videoInfo.setVpicture(newVideoInfo.getVpicture());
                videoInfo.setShow(newVideoInfo.getShow());
                videoInfo.setVideoType(newVideoInfo.getVideoType());
                videoInfoDao.update(videoInfo);
            }
        } else {//视频不存在
            //判断2个视频实体是否为同一视频
            VideoInfo oldVideo = videoInfoService.getExistSameVideoWithDirector(newVideoInfo);
            if (oldVideo == null) {
                //添加视频
                Serializable id = videoInfoDao.save(newVideoInfo);
                newVideoInfo.setId(id + "");
            } else {//为同一视频
                //更新tag
                newVideoInfo.setId(oldVideo.getId());
                oldVideo.setVideocount(newVideoInfo.getVideocount());
                oldVideo.setTag(newVideoInfo.getTag());
                oldVideo.setPicture(newVideoInfo.getPicture());
                oldVideo.setHpicture(newVideoInfo.getHpicture());
                oldVideo.setVpicture(newVideoInfo.getVpicture());
                oldVideo.setShow(newVideoInfo.getShow());
                oldVideo.setVideoType(newVideoInfo.getVideoType());
                videoInfoDao.update(oldVideo);
        for (PPTVUtil.VideoConvertResult newVideoInfoResult : newVideoInfoList) {
            VideoInfo newVideoInfo = newVideoInfoResult.videoInfo;
            VideoType videoType = videoTypeService.getVideoType(newVideoInfo.getVideoType().getId());
            if (videoType.getParent() != null)
                newVideoInfo.setVideoType(videoType.getParent());
            VideoPPTVMapDao.DaoQuery daoQuery = new VideoPPTVMapDao.DaoQuery();
            daoQuery.programCode = newVideoInfoResult.programCode;
            daoQuery.infoId = series.getInfoID();
            List<VideoPPTVMap> videoPPTVMapList = videoPPTVMapDao.list(daoQuery);
            VideoPPTVMap videoPPTV = null;
            if (videoPPTVMapList != null && videoPPTVMapList.size() > 0)
                videoPPTV = videoPPTVMapList.get(0);
            if (videoPPTV != null) {//渠道视频已经存在
                VideoInfo videoInfo = videoInfoService.getVideoInfo(videoPPTV.getVideoId() + "");
                if (videoInfo == null)
                    return;
                newVideoInfo.setId(videoInfo.getId());
                if (!newVideoInfo.getTag().equalsIgnoreCase(videoInfo.getTag())) {
                    newVideoInfo.setCreatetime(videoInfo.getCreatetime());
                    //更新信息tag信息
                    videoInfo.setVideocount(newVideoInfo.getVideocount());
                    videoInfo.setTag(newVideoInfo.getTag());
                    videoInfo.setPicture(newVideoInfo.getPicture());
                    videoInfo.setHpicture(newVideoInfo.getHpicture());
                    videoInfo.setVpicture(newVideoInfo.getVpicture());
                    videoInfo.setShow(newVideoInfo.getShow());
                    videoInfo.setVideoType(newVideoInfo.getVideoType());
                    videoInfoDao.update(videoInfo);
                }
            } else {//视频不存在
                //判断2个视频实体是否为同一视频
                VideoInfo oldVideo = videoInfoService.getExistSameVideoWithDirector(newVideoInfo);
                if (oldVideo == null) {
                    //添加视频
                    Serializable id = videoInfoDao.save(newVideoInfo);
                    newVideoInfo.setId(id + "");
                } else {//为同一视频
                    //更新tag
                    newVideoInfo.setId(oldVideo.getId());
                    oldVideo.setVideocount(newVideoInfo.getVideocount());
                    oldVideo.setTag(newVideoInfo.getTag());
                    oldVideo.setPicture(newVideoInfo.getPicture());
                    oldVideo.setHpicture(newVideoInfo.getHpicture());
                    oldVideo.setVpicture(newVideoInfo.getVpicture());
                    oldVideo.setShow(newVideoInfo.getShow());
                    oldVideo.setVideoType(newVideoInfo.getVideoType());
                    videoInfoDao.update(oldVideo);
                }
                //加入专辑视频映射
                AlbumVideoMap map = new AlbumVideoMap();
                map.setId(newVideoInfo.getId());
                map.setCreateTime(new Date());
                map.setVideoId(newVideoInfo.getId());
                map.setRootVideoType(newVideoInfo.getVideoType().getId());
                map.setVideoCount(newVideoInfo.getVideocount());
                albumVideoMapDao.save(map);
                //加入映射
                VideoPPTVMap vi = new VideoPPTVMap();
                vi.setInfoId(series.getInfoID());
                vi.setVideoId(newVideoInfo.getId());
                vi.setCreateTime(new Date());
                vi.setSeriesCode(series.getSeriesCode());
                vi.setProgramCode(newVideoInfoResult.programCode);
                videoPPTVMapDao.save(vi);
            }
            //加入专辑视频映射
            AlbumVideoMap map = new AlbumVideoMap();
            map.setId(newVideoInfo.getId());
            map.setCreateTime(new Date());
            map.setVideoId(newVideoInfo.getId());
            map.setRootVideoType(newVideoInfo.getVideoType().getId());
            map.setVideoCount(newVideoInfo.getVideocount());
            albumVideoMapDao.save(map);
            //添加视频资源附加信息
            VideoResourceMapExtraInfo vrm = new VideoResourceMapExtraInfo(newVideoInfo.getId(), (long) PPTVUtil.RESOURCE_ID);
            VideoResourceMapExtraInfo extra = videoResourceMapExtraInfoDao.find(VideoResourceMapExtraInfo.class, vrm.getId());
            if (extra == null) {
                vrm.setFree(Integer.parseInt(series.getFree()));
                vrm.setCreateTime(new Date());
                videoResourceMapExtraInfoDao.save(vrm);
            } else {//更新
                extra.setFree(Integer.parseInt(series.getFree()));
                extra.setUpdateTime(new Date());
                videoResourceMapExtraInfoDao.update(extra);
            }
            //加入映射
            VideoPPTVMap vi = new VideoPPTVMap();
            vi.setInfoId(series.getInfoID());
            vi.setVideoId(newVideoInfo.getId());
            vi.setCreateTime(new Date());
            videoPPTVMapDao.save(vi);
            //添加视频来源映射
            resourceVideoService.addVideoResource(newVideoInfo.getId(), PPTVUtil.RESOURCE_ID + "");
            //添加视频分类映射
            categoryVideoService.addCategoryVideo(newVideoInfo.getId(), videoType.getId());
            CMQManager.getInstance().addSolrMsg(newVideoInfo.getId());
        }
        //添加视频资源附加信息
        VideoResourceMapExtraInfo vrm = new VideoResourceMapExtraInfo(newVideoInfo.getId(), (long) PPTVUtil.RESOURCE_ID);
        VideoResourceMapExtraInfo extra = videoResourceMapExtraInfoDao.find(VideoResourceMapExtraInfo.class, vrm.getId());
        if (extra == null) {
            vrm.setFree(Integer.parseInt(series.getFree()));
            vrm.setCreateTime(new Date());
            videoResourceMapExtraInfoDao.save(vrm);
        } else {//更新
            extra.setFree(Integer.parseInt(series.getFree()));
            extra.setUpdateTime(new Date());
            videoResourceMapExtraInfoDao.update(extra);
        }
        //添加视频来源映射
        resourceVideoService.addVideoResource(newVideoInfo.getId(), PPTVUtil.RESOURCE_ID + "");
        //添加视频分类映射
        categoryVideoService.addCategoryVideo(newVideoInfo.getId(), newVideoInfo.getVideoType().getId());
        CMQManager.getInstance().addSolrMsg(newVideoInfo.getId());
    }
    @Override
    public void offLineSeries(String infoId) {
        VideoPPTVMapDao.DaoQuery daoQuery = new VideoPPTVMapDao.DaoQuery();
        daoQuery.infoId = infoId;
        //查询出对应的视频ID
        VideoPPTVMap map = videoPPTVMapDao.selectByInfoId(infoId);
        if (map == null)
        List<VideoPPTVMap> mapList = videoPPTVMapDao.list(daoQuery);
        if (mapList == null || mapList.size() == 0)
            return;
        videoPPTVMapDao.deleteByPrimaryKey(map.getVideoId());
        resourceVideoService.delete(map.getVideoId() + "", PPTVUtil.RESOURCE_ID + "");
        for (VideoPPTVMap map : mapList) {
            videoPPTVMapDao.deleteByPrimaryKey(map.getVideoId());
            resourceVideoService.delete(map.getVideoId() + "", PPTVUtil.RESOURCE_ID + "");
        }
    }
    @Override
@@ -195,7 +214,11 @@
    @Override
    public void save(List<PPTVSeries> seriesList) {
        for (PPTVSeries series : seriesList) {
            save(series);
            try {
                save(series);
            } catch (Exception e) {
            }
        }
    }
@@ -217,9 +240,12 @@
                    CMQManager.getInstance().addPPTVSeriesUpdateMsg(new PPTVMQMsg(series.getInfoID(), PPTVMQMsg.TYPE_ADD_OR_UPDATE));
                }
                System.out.println("addorupdate:" + series.getName());
                break;
            //删除
            case "del":
                System.out.println("delete:" + series.getName());
                deleteSeries(series);
                infoIds.add(series.getInfoID());
                break;
@@ -251,6 +277,12 @@
    }
    @Override
    public VideoPPTVMap getVideoPPTVMapByVideoId(String videoId) {
        VideoPPTVMap map = videoPPTVMapDao.get(videoId);
        return map;
    }
    @Override
    public PPTVProgram selectProgramById(String id) {
        return pptvProgramDao.get(id);
    }
@@ -268,8 +300,53 @@
    }
    @Override
    public VideoPPTVMap selectVideoPPTVMapByInfoId(String infoId) {
        return videoPPTVMapDao.selectByInfoId(infoId);
    public VideoPPTVMap selectVideoPPTVMapByPPInfo(String infoId, String programCode) {
        VideoPPTVMapDao.DaoQuery daoQuery = new VideoPPTVMapDao.DaoQuery();
        daoQuery.infoId = infoId;
        daoQuery.programCode = programCode;
        List<VideoPPTVMap> list = videoPPTVMapDao.list(daoQuery);
        if (list == null || list.size() == 0)
            return null;
        return list.get(0);
    }
    @Override
    public PPTVSeries selectSeriesBySeriesCode(String cid) {
        Query query = new Query();
        query.addCriteria(new Criteria().where("seriesCode").is(cid));
        return pptvSeriesDao.findOne(query);
    }
    @Override
    public PPTVSeries selectSeriesByInfoId(String infoId) {
        return pptvSeriesDao.get(infoId);
    }
    @Override
    public void updateSeriesGoodsInfo(String infoId, PPTVGoodsInfo goodsInfo) {
        Query query = new Query();
        query.addCriteria(Criteria.where("_id").is(infoId));
        Update update = new Update();
        update.set("goodsInfo", goodsInfo);
        pptvSeriesDao.update(query, update);
    }
    @Override
    public void updateProgramGoodsInfo(String vid, PPTVGoodsInfo goodsInfo) {
        Query query = new Query();
        query.addCriteria(Criteria.where("_id").is(vid));
        Update update = new Update();
        update.set("goodsInfo", goodsInfo);
        pptvProgramDao.update(query, update);
    }
    @Override
    public void syncSeries(String cid) {
        PPTVSeries series = PPTVApiUtil.getDetail(cid);
        if (series != null) {
            save(series);
        }
    }
    /**
@@ -281,7 +358,7 @@
        PPTVQuery query = new PPTVQuery();
        query.seriesCode = series.getSeriesCode();
        Set<String> seriesCodeSet = deleteMap(query);
        pptvSeriesDao.delete(series.getInfoID());
        pptvSeriesDao.deleteByPrimaryKey(series.getInfoID());
    }
@@ -320,7 +397,7 @@
        PPTVQuery query = new PPTVQuery();
        query.programCode = program.getProgramCode();
        Set<String> infoIdSet = deleteMap(query);
        pptvProgramDao.delete(program.getProgramCode());
        pptvProgramDao.deleteByPrimaryKey(program.getProgramCode());
        return infoIdSet;
    }