package com.yeshi.buwan.service.imp.juhe;
|
|
import com.yeshi.buwan.dao.VideoInfoDao;
|
import com.yeshi.buwan.dao.juhe.funtv.FunTVAlbum2Dao;
|
import com.yeshi.buwan.dao.juhe.funtv.FunTVShortVideo2Dao;
|
import com.yeshi.buwan.dao.juhe.funtv.FunTVVideo2Dao;
|
import com.yeshi.buwan.dao.juhe.funtv.VideoFunTV2Dao;
|
import com.yeshi.buwan.dao.video.AlbumVideoMapDao;
|
import com.yeshi.buwan.domain.ResourceVideo;
|
import com.yeshi.buwan.domain.VideoDetailInfo;
|
import com.yeshi.buwan.domain.VideoInfo;
|
import com.yeshi.buwan.domain.VideoResource;
|
import com.yeshi.buwan.domain.entity.PlayUrl;
|
import com.yeshi.buwan.domain.video.AlbumVideoMap;
|
import com.yeshi.buwan.funtv.FunTVUtil2;
|
import com.yeshi.buwan.funtv.entity.FunTVAlbum2;
|
import com.yeshi.buwan.funtv.entity.FunTVShortVideo2;
|
import com.yeshi.buwan.funtv.entity.FunTVVideo2;
|
import com.yeshi.buwan.funtv.entity.VideoFunTV2;
|
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.FunTV2Service;
|
import com.yeshi.buwan.util.mq.CMQManager;
|
import com.yeshi.buwan.util.video.VideoConstant;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.annotation.Resource;
|
import java.io.Serializable;
|
import java.util.*;
|
|
@Service
|
public class FunTV2ServiceImpl implements FunTV2Service {
|
|
@Resource
|
private FunTVAlbum2Dao funTVAlbum2Dao;
|
|
@Resource
|
private FunTVVideo2Dao funTVVideo2Dao;
|
|
@Resource
|
private FunTVShortVideo2Dao funTVShortVideo2Dao;
|
|
@Resource
|
private VideoFunTV2Dao videoFunTV2Dao;
|
|
@Resource
|
private VideoInfoService videoInfoService;
|
|
@Resource
|
private VideoInfoDao videoInfoDao;
|
|
@Resource
|
private AlbumVideoMapDao albumVideoMapDao;
|
|
@Resource
|
private ResourceVideoService resourceVideoService;
|
|
@Resource
|
private CategoryVideoService categoryVideoService;
|
|
@Resource
|
private VideoResourceService videoResourceService;
|
|
|
@Override
|
public void saveAlbum(FunTVAlbum2 album2) {
|
funTVAlbum2Dao.save(album2);
|
}
|
|
@Override
|
public void saveVideo(FunTVVideo2 video) {
|
funTVVideo2Dao.save(video);
|
}
|
|
@Override
|
public void saveShortVideo(FunTVShortVideo2 shortVideo2) {
|
funTVShortVideo2Dao.save(shortVideo2);
|
}
|
|
@Override
|
public void addToVideoInfo(FunTVAlbum2 album) {
|
if (album.getEpisodes() != null && album.getEpisodes().size() <= 0)
|
return;
|
|
VideoInfo newVideoInfo = FunTVUtil2.convertFunTVAlbumToVideoInfo(album);
|
VideoFunTV2 videoFunTV2 = videoFunTV2Dao.selectByMediaId(album.getId());
|
if (videoFunTV2 != null) {//渠道视频已经存在
|
VideoInfo videoInfo = videoInfoService.getVideoInfo(videoFunTV2.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.getExistSameVideo(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.setCreateTime(new Date());
|
map.setVideoId(newVideoInfo.getId());
|
map.setRootVideoType(newVideoInfo.getVideoType().getId());
|
map.setVideoCount(newVideoInfo.getVideocount());
|
albumVideoMapDao.save(map);
|
|
//加入映射
|
VideoFunTV2 vi = new VideoFunTV2();
|
vi.setMediaId(album.getId());
|
vi.setVideoId(Long.parseLong(newVideoInfo.getId()));
|
videoFunTV2Dao.save(vi);
|
}
|
|
//添加视频来源映射
|
resourceVideoService.addVideoResource(newVideoInfo.getId(), FunTVUtil2.RESOURCE_ID + "");
|
//添加视频分类映射
|
categoryVideoService.addCategoryVideo(newVideoInfo.getId(), newVideoInfo.getVideoType().getId());
|
CMQManager.getInstance().addSolrMsg(newVideoInfo.getId());
|
}
|
|
@Override
|
public FunTVAlbum2 getAlbumDetail(String id) {
|
FunTVAlbum2 album2 = funTVAlbum2Dao.get(id);
|
if (album2 == null)
|
return null;
|
List<FunTVVideo2> video2List = funTVVideo2Dao.listByMediaId(id);
|
if (video2List != null) {
|
Comparator<FunTVVideo2> cm = new Comparator<FunTVVideo2>() {
|
@Override
|
public int compare(FunTVVideo2 o1, FunTVVideo2 o2) {
|
return Integer.parseInt(o1.getNum()) - Integer.parseInt(o2.getNum());
|
}
|
};
|
Collections.sort(video2List, cm);
|
}
|
album2.setEpisodes(video2List);
|
return album2;
|
}
|
|
@Override
|
public List<VideoDetailInfo> getVideoDetailList(String id) {
|
VideoFunTV2 videoFunTV2 = videoFunTV2Dao.selectByVideoId(id);
|
if (videoFunTV2 == null)
|
return null;
|
FunTVAlbum2 album2 = getAlbumDetail(videoFunTV2.getMediaId());
|
List<VideoDetailInfo> list = new ArrayList<>();
|
if (album2 != null && album2.getEpisodes() != null)
|
for (FunTVVideo2 video2 : album2.getEpisodes())
|
list.add(FunTVUtil2.convertFunTVVideoToVideoDetail(video2, album2));
|
return list;
|
}
|
|
@Override
|
public VideoDetailInfo getLatestVideoDetail(String id) {
|
VideoFunTV2 videoFunTV2 = videoFunTV2Dao.selectByVideoId(id);
|
if (videoFunTV2 == null)
|
return null;
|
FunTVAlbum2 album2 = getAlbumDetail(videoFunTV2.getMediaId());
|
if (album2 != null && album2.getEpisodes() != null && album2.getEpisodes().size() > 0)
|
return FunTVUtil2.convertFunTVVideoToVideoDetail(album2.getEpisodes().get(album2.getEpisodes().size() - 1), album2);
|
return null;
|
}
|
|
|
@Override
|
public int getShowType(String videoid) {
|
VideoInfo videoInfo = videoInfoDao.find(VideoInfo.class, videoid);
|
if (videoInfo.getVideoType() != null && (videoInfo.getVideoType().getId() == VideoConstant.VIDEO_CATEGORY_DIANSHIJU || videoInfo.getVideoType().getId() == VideoConstant.VIDEO_CATEGORY_DONGMAN))
|
return 2;
|
else
|
return 1;
|
}
|
|
@Override
|
public PlayUrl getPlayUrl(String detailSystemId, int resourceId, String id, String videoId) {
|
FunTVVideo2 video2 = funTVVideo2Dao.get(id);
|
VideoResource vr = videoResourceService.getResource(resourceId + "");
|
int t = FunTVUtil2.getPlayType(video2);
|
PlayUrl pu = new PlayUrl();
|
pu.setParams("");
|
pu.setPlayType(t);
|
pu.setResource(vr);
|
pu.setAid(video2.getMediaId());
|
pu.setVid(video2.getId());
|
|
if (t == FunTVUtil2.PLAY_NONE) {
|
pu.setUrl("");
|
} else {
|
pu.setUrl(video2.getFunH5Url());
|
}
|
return pu;
|
}
|
|
/**
|
* 处理专辑
|
*
|
* @param album2
|
*/
|
@Transactional
|
public void processAlbum(FunTVAlbum2 album2) {
|
if ("1".equalsIgnoreCase(album2.getStatus()))
|
addToVideoInfo(album2);
|
else
|
offLineAlbum(album2.getId());
|
|
}
|
|
@Transactional
|
@Override
|
public void offLineAlbum(String mediaId) {
|
//查询出对应的视频ID
|
VideoFunTV2 videoFunTV2 = videoFunTV2Dao.selectByMediaId(mediaId);
|
if (videoFunTV2 == null)
|
return;
|
|
List<ResourceVideo> resourceVideoList = resourceVideoService.getResourceList(videoFunTV2.getVideoId() + "");
|
for (int i = 0; i < resourceVideoList.size(); i++) {
|
ResourceVideo rv = resourceVideoList.get(i);
|
if (rv.getResource() != null && Integer.parseInt(rv.getResource().getId()) == FunTVUtil2.RESOURCE_ID) {
|
//删除资源映射
|
resourceVideoService.delete(rv);
|
resourceVideoList.remove(i);
|
i--;
|
}
|
}
|
|
if (resourceVideoList.size() == 0) {
|
//隐藏视频
|
videoInfoService.hiddenVideo(videoFunTV2.getVideoId() + "");
|
//更新搜索引擎
|
CMQManager.getInstance().addSolrMsg(videoFunTV2.getVideoId() + "");
|
}
|
|
//删除媒体与媒体对应的视频
|
funTVAlbum2Dao.delete(mediaId);
|
List<FunTVVideo2> video2List = funTVVideo2Dao.listByMediaId(mediaId);
|
if (video2List != null)
|
for (FunTVVideo2 video2 : video2List)
|
funTVVideo2Dao.delete(video2.getId());
|
}
|
|
}
|