package com.newvideo.util.video; import java.util.List; import javax.annotation.Resource; import com.newvideo.funtv.FunTVUtil2; import com.newvideo.service.inter.FunTV2Service; import com.newvideo.vo.AcceptData; import org.hibernate.HibernateException; import org.hibernate.Session; import org.springframework.cache.annotation.Cacheable; import org.springframework.orm.hibernate4.HibernateCallback; import org.springframework.stereotype.Component; import com.newvideo.dao.VideoInfoDao; import com.newvideo.domain.ResourceVideo; import com.newvideo.domain.VideoDetailInfo; import com.newvideo.domain.VideoInfo; import com.newvideo.domain.VideoResource; import com.newvideo.domain.entity.PlayUrl; import com.newvideo.iqiyi.util.IqiyiUtil; import com.newvideo.service.imp.juhe.FunTVService; import com.newvideo.service.imp.juhe.IqiyiService; import com.newvideo.service.imp.juhe.LeService; import com.newvideo.service.imp.juhe.PPTVService; import com.newvideo.service.imp.juhe.SoHuService; import com.newvideo.service.imp.juhe.YouKuService; import com.newvideo.sohu.SoHuUtil; import com.newvideo.util.StringUtil; import com.newvideo.youku.YouKuUtil; @Component public class VideoDetailUtil { @Resource private IqiyiUtil iqiyiUtil; @Resource private SoHuUtil soHuUtil; @Resource private YouKuUtil youKuUtil; @Resource private IqiyiService iqiyiService; @Resource private SoHuService soHuService; @Resource private YouKuService youKuService; @Resource private VideoInfoDao videoInfoDao; @Resource private LeService leService; @Resource private FunTV2Service funTV2Service; @Resource private FunTVService funTVService; @Resource private PPTVService pptvService; public VideoInfoDao getVideoInfoDao() { return videoInfoDao; } public void setVideoInfoDao(VideoInfoDao videoInfoDao) { this.videoInfoDao = videoInfoDao; } public IqiyiUtil getIqiyiUtil() { return iqiyiUtil; } public void setIqiyiUtil(IqiyiUtil iqiyiUtil) { this.iqiyiUtil = iqiyiUtil; } public SoHuUtil getSoHuUtil() { return soHuUtil; } public void setSoHuUtil(SoHuUtil soHuUtil) { this.soHuUtil = soHuUtil; } public YouKuUtil getYouKuUtil() { return youKuUtil; } public void setYouKuUtil(YouKuUtil youKuUtil) { this.youKuUtil = youKuUtil; } public IqiyiService getIqiyiService() { return iqiyiService; } public void setIqiyiService(IqiyiService iqiyiService) { this.iqiyiService = iqiyiService; } public SoHuService getSoHuService() { return soHuService; } public void setSoHuService(SoHuService soHuService) { this.soHuService = soHuService; } public YouKuService getYouKuService() { return youKuService; } public void setYouKuService(YouKuService youKuService) { this.youKuService = youKuService; } @SuppressWarnings("unchecked") @Cacheable(value = "homeCache", key = "'getVideoInfo'+'-'+#videoid+'-'+#resourceId+'-'+#cacheMD5") public VideoInfo getVideoInfo(final String videoid, final String resourceId, final List reList, String cacheMD5) { return (VideoInfo) videoInfoDao.excute(new HibernateCallback() { @Override public VideoInfo doInHibernate(Session session) throws HibernateException { VideoInfo video = null; VideoResource resource = null; try { if (!StringUtil.isNullOrEmpty(resourceId)) { // 来源限制判断 boolean isCan = false; for (long re : reList) { if (resourceId.equalsIgnoreCase(re + "")) { isCan = true; } } if (!isCan) { return null; } List list = session .createQuery("FROM ResourceVideo rv where rv.video.id=? and rv.resource.id=?") .setParameter(0, videoid).setParameter(1, resourceId).list(); if (list != null && list.size() > 0) { ResourceVideo rv = list.get(0); List resourceList = session .createQuery("select rv.resource from ResourceVideo rv where rv.video.id=?") .setParameter(0, videoid).list(); rv.getVideo().setVideoDetailList(getVideoDetailList(videoid, rv.getResource())); for (VideoResource r : resourceList) { if (r.getId().equalsIgnoreCase(rv.getResource().getId())) { r.setChecked(true); } } rv.getVideo().setResourceList(resourceList); video = rv.getVideo(); resource = rv.getResource(); } } else { List list = session .createQuery( "FROM ResourceVideo rv where rv.video.id=? order by rv.resource.orderby desc") .setParameter(0, videoid).list(); // 来源筛查 if (list != null) { for (int i = 0; i < list.size(); i++) { boolean isC = false; for (Long id : reList) { if ((id + "").equalsIgnoreCase(list.get(i).getResource().getId())) { isC = true; break; } } if (!isC) { list.remove(i); i--; } } } if (list != null && list.size() > 0) { ResourceVideo rv = list.get(0); List resourceList = session .createQuery( "select rv.resource from ResourceVideo rv where rv.video.id=? order by rv.resource.id desc") .setParameter(0, videoid).list(); rv.getVideo().setVideoDetailList(getVideoDetailList(videoid, rv.getResource())); for (int i = 0; i < resourceList.size(); i++) { VideoResource r = resourceList.get(i); if (r.getId().equalsIgnoreCase(rv.getResource().getId())) { r.setChecked(true); } boolean isS = false; for (Long id : reList) { if ((id + "").equalsIgnoreCase(r.getId())) { isS = true; break; } } // 不在允许的resource里面 if (!isS) { resourceList.remove(i); i--; } } rv.getVideo().setResourceList(resourceList); video = rv.getVideo(); resource = rv.getResource(); } } } catch (Exception e) { e.printStackTrace(); } try { if (video.getVideoDetailList() != null && video.getVideoDetailList().size() == 1) { video.getVideoDetailList().get(0).setName(video.getName()); } if (video != null && resource != null) { video.setShowType(getShowType(video.getId(), resource)); } } catch (Exception e) { } return video; } }); } private List getVideoDetailList(String videoid, VideoResource vr) { int resourceId = Integer.parseInt(vr.getId()); switch (resourceId) { case 13: return iqiyiService.getVideoDetailList(videoid);//爱奇艺 case 14: return soHuService.getVideoDetailList(videoid);//搜狐 case 15: return youKuService.getVideoDetailList(videoid);//优酷 case 16: return pptvService.getVideoDetailList(videoid);//PPTV case 18: return leService.getVideoDetailList(videoid);//乐视 case 19: return funTVService.getVideoDetailList(videoid);//风行 case 24: return funTV2Service.getVideoDetailList(videoid, 1, 100);//风行2 } return null; } public VideoDetailInfo getLatestVideoDetail(String videoid, VideoResource vr) { int resourceId = Integer.parseInt(vr.getId()); switch (resourceId) { case 13: return iqiyiService.getLatestVideoDetail(videoid); //爱奇艺 case 14: return soHuService.getLatestVideoDetail(videoid); //搜狐 case 15: return youKuService.getLatestVideoDetail(videoid); //优酷 case 16: return pptvService.getLatestVideoDetail(videoid); //PPTV case 18: return leService.getLatestVideoDetail(videoid); //乐视 case 19: return funTVService.getLatestVideoDetail(videoid); //风行 case 24: return funTV2Service.getLatestVideoDetail(videoid); //风行2 } return null; } public int getShowType(String videoid, VideoResource vr) { int resourceId = Integer.parseInt(vr.getId()); switch (resourceId) { case 13: return iqiyiUtil.getShowType(videoid); //爱奇艺 case 14: return soHuUtil.getShowType(videoid); //搜狐 case 15: return youKuService.getShowType(videoid); //优酷 case 16: return pptvService.getShowType(videoid); //PPTV case 18: return leService.getShowType(videoid); //乐视 case 19: return funTVService.getShowType(videoid); //风行 case 24: return funTV2Service.getShowType(videoid); //风行2 } return 1; } @Cacheable(value = "homeCache", key = "'getPlayUrl'+'-'+#detailSystemId+'-'+#id+'-'+#type+'-'+#resourceid") public PlayUrl getPlayUrl(AcceptData acceptData, String detailSystemId, String id, String type, int resourceid, String videoid) { if (resourceid == 13) {// 爱奇艺 return iqiyiUtil.getPlayUrl(detailSystemId, resourceid + "", type, id); } else if (resourceid == 14) {// 搜狐 return soHuUtil.getPlayUrl(detailSystemId, resourceid + "", type, id); } else if (resourceid == 15) return youKuService.getPlayUrl(detailSystemId, id, type, resourceid, videoid); else if (resourceid == 16)// PPTV return pptvService.getPlayUrl(detailSystemId, id, type, resourceid, videoid); else if (resourceid == 18)// 乐视 return leService.getPlayUrl(detailSystemId, id, type, resourceid, videoid); else if (resourceid == 19)// 乐视 return funTVService.getPlayUrl(detailSystemId, id, type, resourceid, videoid); else if (resourceid == FunTVUtil2.RESOURCE_ID)// 风行 return funTV2Service.getPlayUrl(acceptData, detailSystemId, resourceid, id, videoid); return null; } }