package com.yeshi.buwan.service.imp.juhe;
|
|
import com.yeshi.buwan.dao.VideoInfoDao;
|
import com.yeshi.buwan.dao.juhe.hanmi.HanmiShowDao;
|
import com.yeshi.buwan.dao.juhe.hanmi.HanmiShowEpisodeDao;
|
import com.yeshi.buwan.dao.juhe.hanmi.VideoHanmiMapDao;
|
import com.yeshi.buwan.dao.video.AlbumVideoMapDao;
|
import com.yeshi.buwan.domain.AdminInfo;
|
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.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.HanmiService;
|
import com.yeshi.buwan.util.StringUtil;
|
import com.yeshi.buwan.util.TimeUtil;
|
import com.yeshi.buwan.util.mq.CMQManager;
|
import com.yeshi.buwan.videos.hanmi.HanmiUtil;
|
import com.yeshi.buwan.videos.hanmi.entity.HanmiShow;
|
import com.yeshi.buwan.videos.hanmi.entity.HanmiShowEpisode;
|
import com.yeshi.buwan.videos.hanmi.entity.VideoHanmiMap;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.io.Serializable;
|
import java.util.ArrayList;
|
import java.util.Calendar;
|
import java.util.Date;
|
import java.util.List;
|
|
@Service
|
public class HanmiServiceImpl implements HanmiService {
|
@Resource
|
private HanmiShowDao hanmiShowDao;
|
|
@Resource
|
private HanmiShowEpisodeDao hanmiShowEpisodeDao;
|
|
@Resource
|
private VideoHanmiMapDao videoHanmiMapDao;
|
|
@Resource
|
private VideoInfoService videoInfoService;
|
|
@Resource
|
private VideoInfoDao videoInfoDao;
|
|
@Resource
|
private ResourceVideoService resourceVideoService;
|
|
@Resource
|
private CategoryVideoService categoryVideoService;
|
|
@Resource
|
private VideoResourceService videoResourceService;
|
|
@Resource
|
private AlbumVideoMapDao albumVideoMapDao;
|
|
public List<VideoDetailInfo> getVideoDetailList(String videoId, int page, int pageSize) {
|
//查询专辑
|
VideoHanmiMap videoHanmiMap = videoHanmiMapDao.selectByVideoId(videoId);
|
if (videoHanmiMap == null)
|
return null;
|
List<HanmiShowEpisode> list = hanmiShowEpisodeDao.listByShowId(videoHanmiMap.getShowId(), (page - 1) * pageSize, pageSize);
|
List<VideoDetailInfo> detailInfoList = new ArrayList<>();
|
if (list != null)
|
for (HanmiShowEpisode a : list)
|
detailInfoList.add(HanmiUtil.convertEpisodeToVideoDetail(a));
|
return detailInfoList;
|
}
|
|
// 获取最新一集的详情
|
public VideoDetailInfo getLatestVideoDetail(String videoId) {
|
VideoHanmiMap videoHanmiMap = videoHanmiMapDao.selectByVideoId(videoId);
|
if (videoHanmiMap == null)
|
return null;
|
HanmiShowEpisode episode = hanmiShowEpisodeDao.getLatestEpisode(videoHanmiMap.getShowId());
|
if (episode != null)
|
return HanmiUtil.convertEpisodeToVideoDetail(episode);
|
return null;
|
}
|
|
@Override
|
public void saveShow(HanmiShow show) {
|
if (show.getCreateTime() == null) {
|
show.setCreateTime(new Date());
|
}
|
show.setUpdateTime(new Date());
|
hanmiShowDao.save(show);
|
if (show.getEpisodeList() != null) {
|
for (HanmiShowEpisode episode : show.getEpisodeList()) {
|
if (episode.getShowId() == null) {
|
episode.setShowId(show.getId());
|
}
|
if (episode.getCreateTime() == null) {
|
episode.setCreateTime(new Date());
|
}
|
if (episode.getId() == null) {
|
episode.setId(HanmiShowEpisode.createId(show.getId(), episode.getTag()));
|
}
|
// if (hanmiShowEpisodeDao.get(episode.getId()) != null)
|
// continue;
|
hanmiShowEpisodeDao.save(episode);
|
}
|
}
|
}
|
|
@Override
|
public void addToVideoInfo(HanmiShow show) {
|
|
if (StringUtil.isNullOrEmpty(show.getTitle())) {
|
return;
|
}
|
|
VideoInfo newVideoInfo = convertShowToVideoInfo(show);
|
VideoHanmiMap map = videoHanmiMapDao.selectByShowId(show.getId());
|
if (map != null) {//渠道视频已经存在
|
VideoInfo videoInfo = videoInfoService.getVideoInfo(map.getVideoId() + "");
|
if (videoInfo == null)
|
return;
|
newVideoInfo.setId(videoInfo.getId());
|
if (!newVideoInfo.getTag().equalsIgnoreCase(videoInfo.getTag()) || newVideoInfo.getVideocount() != videoInfo.getVideocount()) {
|
newVideoInfo.setCreatetime(videoInfo.getCreatetime());
|
//更新信息tag信息
|
videoInfo.setLatestHpicture(newVideoInfo.getLatestHpicture());
|
videoInfo.setLatestVpicture(newVideoInfo.getLatestVpicture());
|
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());
|
videoInfo.setUpdatetime(newVideoInfo.getUpdatetime());
|
videoInfoDao.update(videoInfo);
|
}
|
} else {//视频不存在
|
//判断2个视频实体是否为同一视频
|
VideoInfo oldVideo = videoInfoService.getExistSameVideoWithTime(newVideoInfo);
|
if (oldVideo == null) {
|
//添加视频
|
Serializable id = videoInfoDao.save(newVideoInfo);
|
newVideoInfo.setId(id + "");
|
} else {//为同一视频
|
//更新tag
|
newVideoInfo.setId(oldVideo.getId());
|
oldVideo.setLatestHpicture(newVideoInfo.getLatestHpicture());
|
oldVideo.setLatestVpicture(newVideoInfo.getLatestVpicture());
|
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());
|
oldVideo.setUpdatetime(newVideoInfo.getUpdatetime());
|
videoInfoDao.update(oldVideo);
|
}
|
|
//加入专辑视频映射
|
AlbumVideoMap vmap = new AlbumVideoMap();
|
vmap.setId(newVideoInfo.getId());
|
vmap.setCreateTime(new Date());
|
vmap.setVideoId(newVideoInfo.getId());
|
vmap.setRootVideoType(newVideoInfo.getVideoType().getId());
|
vmap.setVideoCount(newVideoInfo.getVideocount());
|
albumVideoMapDao.save(vmap);
|
|
|
//加入映射
|
VideoHanmiMap vi = new VideoHanmiMap();
|
vi.setShowId(show.getId());
|
vi.setVideoId(newVideoInfo.getId());
|
videoHanmiMapDao.save(vi);
|
}
|
|
//添加视频来源映射
|
resourceVideoService.addVideoResource(newVideoInfo.getId(), HanmiUtil.RESOURCE_ID + "");
|
//添加视频分类映射
|
categoryVideoService.addCategoryVideo(newVideoInfo.getId(), newVideoInfo.getVideoType().getId());
|
|
//加入专辑搜索引擎
|
CMQManager.getInstance().addSolrMsg(newVideoInfo.getId());
|
}
|
|
@Override
|
public PlayUrl getPlayUrl(String detailSystemId, int resourceId, String id, String videoId) {
|
HanmiShowEpisode album = hanmiShowEpisodeDao.get(id);
|
VideoResource vr = videoResourceService.getResource(resourceId + "");
|
int t = HanmiUtil.getPlayType(album);
|
PlayUrl pu = new PlayUrl();
|
pu.setParams("");
|
pu.setPlayType(t);
|
pu.setResource(vr);
|
if (t == HanmiUtil.PLAY_NONE) {
|
pu.setUrl("");
|
} else if (t == HanmiUtil.PLAY_HTML || t == HanmiUtil.PLAY_SDK) {
|
pu.setUrl(album.getPlayUrl());
|
}
|
return pu;
|
}
|
|
@Override
|
public int getShowType(String videoid) {
|
VideoHanmiMap map = videoHanmiMapDao.selectByVideoId(videoid);
|
if (map != null) {
|
HanmiShow show = hanmiShowDao.get(map.getShowId());
|
if (show != null) {
|
if ("韩剧".equalsIgnoreCase(show.getType())) {
|
return 2;
|
}
|
}
|
}
|
return 1;
|
}
|
|
@Override
|
public VideoInfo convertShowToVideoInfo(HanmiShow show) {
|
Calendar ca = Calendar.getInstance();
|
ca.setTimeInMillis(TimeUtil.convertGernalTime(show.getRelaseDate(), "yyyy-MM-dd"));
|
int day = ca.get(Calendar.DAY_OF_MONTH);
|
int month = ca.get(Calendar.MONTH) + 1;
|
int year = ca.get(Calendar.YEAR);
|
|
VideoInfo video = new VideoInfo();
|
video.setArea(show.getArea());
|
video.setBaseurl(show.getUrl());
|
video.setCanSave(false);
|
video.setCommentCount(0);
|
video.setCreatetime(System.currentTimeMillis());
|
video.setDay(day + "");
|
video.setYear(year + "");
|
video.setMonth(month + "");
|
video.setDirector(show.getDirector());
|
video.setFinish("1");
|
video.setIntroduction(show.getDesc());
|
video.setMainActor(show.getActors());
|
video.setName(show.getTitle());
|
video.setNowNumber(show.getEpisodeList().size() + "");
|
|
video.setOrderby("0" + "");
|
video.setPicture(show.getPicture());
|
video.setVpicture(show.getPicture());
|
|
video.setScore(show.getScore());
|
video.setShare("0");
|
video.setShow("1");
|
|
video.setThirdType("1");
|
video.setTotalNumber("0");
|
|
video.setWatchCount(0 + "");
|
|
video.setAdmin(new AdminInfo("1"));
|
video.setContentType(1);
|
video.setCommentCount(0);
|
|
String tag = show.getTag();
|
video.setTag(tag);
|
|
|
long videoCount = show.getEpisodeList().size();
|
if (videoCount == 0L)
|
videoCount = 1;
|
|
video.setVideocount((int) videoCount);
|
|
video.setUpdatetime(System.currentTimeMillis() + "");
|
|
video.setVideoType(HanmiUtil.getVideoType(show));
|
return video;
|
}
|
|
@Override
|
public HanmiShow selectShowById(String id) {
|
return hanmiShowDao.get(id);
|
}
|
|
@Override
|
public long countById(String id) {
|
return hanmiShowEpisodeDao.countByShowId(id);
|
}
|
|
@Override
|
public void deleteByShowId(String id) {
|
hanmiShowDao.delete(id);
|
long count = hanmiShowEpisodeDao.countByShowId(id);
|
int page = (int) count / 100 + 1;
|
for (int i = 0; i < page; i++) {
|
List<HanmiShowEpisode> episodes = hanmiShowEpisodeDao.listByShowId(id, i * 100, 100);
|
for (HanmiShowEpisode episode : episodes) {
|
hanmiShowEpisodeDao.delete(episode.getId());
|
}
|
}
|
|
|
VideoHanmiMap bean = videoHanmiMapDao.selectByShowId(id);
|
if (bean != null) {
|
videoHanmiMapDao.delete(bean.getVideoId());
|
//删除资源
|
resourceVideoService.delete(bean.getVideoId() + "", HanmiUtil.RESOURCE_ID + "");
|
resourceVideoService.delete(bean.getVideoId() + "", HanmiUtil.RESOURCE_ID + "");
|
}
|
}
|
|
@Override
|
public List<HanmiShow> listByIds(List<String> idsList) {
|
return hanmiShowDao.listByIds(idsList);
|
}
|
|
@Override
|
public HanmiShow getShowDetail(String id) {
|
HanmiShow show = hanmiShowDao.get(id);
|
if (show != null) {
|
show.setEpisodeList(hanmiShowEpisodeDao.listByShowId(id, 0, 1000));
|
}
|
|
return show;
|
}
|
}
|