| | |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.ArrayList; |
| | | import java.util.Calendar; |
| | | import java.util.List; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | import com.yeshi.buwan.util.TimeUtil; |
| | | import com.yeshi.buwan.util.video.VideoConstant; |
| | | import org.hibernate.HibernateException; |
| | | import org.hibernate.SQLQuery; |
| | | import org.hibernate.Session; |
| | |
| | | @Service |
| | | public class VideoInfoService { |
| | | |
| | | @Autowired |
| | | private VideoInfoDao dao; |
| | | @Autowired |
| | | private VideoInfoDao videoInfoDao; |
| | | |
| | | @Autowired |
| | | private CategoryVideoDao cdao; |
| | | @Autowired |
| | | private CategoryVideoDao categoryVideoDao; |
| | | |
| | | @Autowired |
| | | private ResourceVideoService resourceVideoService; |
| | | @Autowired |
| | | private ResourceVideoService resourceVideoService; |
| | | |
| | | @Resource |
| | | private VideoResourceService videoResourceService; |
| | | @Resource |
| | | private VideoResourceService videoResourceService; |
| | | |
| | | public VideoInfo getVideoInfo(String vid) { |
| | | return dao.find(VideoInfo.class, vid); |
| | | } |
| | | public VideoInfo getVideoInfo(String vid) { |
| | | return videoInfoDao.find(VideoInfo.class, vid); |
| | | } |
| | | |
| | | @SuppressWarnings("unchecked") |
| | | public List<VideoInfo> simpleRandomVideoList(final int i) { |
| | | return (List<VideoInfo>) dao.excute(new HibernateCallback<List<VideoInfo>>() { |
| | | @SuppressWarnings("unchecked") |
| | | public List<VideoInfo> simpleRandomVideoList(final int i) { |
| | | return (List<VideoInfo>) videoInfoDao.excute(new HibernateCallback<List<VideoInfo>>() { |
| | | |
| | | @Override |
| | | public List<VideoInfo> doInHibernate(Session session) throws HibernateException { |
| | | SQLQuery query = session.createSQLQuery( |
| | | "SELECT v.* FROM wk_video_video v RIGHT JOIN (SELECT * FROM wk_recommend_category_cache WHERE videotypeid = 152 ORDER BY RAND() LIMIT 0," |
| | | + i + ") c ON c.videoid=v.id"); |
| | | query.addEntity(VideoInfo.class); |
| | | return query.list(); |
| | | } |
| | | }); |
| | | } |
| | | @Override |
| | | public List<VideoInfo> doInHibernate(Session session) throws HibernateException { |
| | | SQLQuery query = session.createSQLQuery( |
| | | "SELECT v.* FROM wk_video_video v RIGHT JOIN (SELECT * FROM wk_recommend_category_cache WHERE videotypeid = 152 ORDER BY RAND() LIMIT 0," |
| | | + i + ") c ON c.videoid=v.id"); |
| | | query.addEntity(VideoInfo.class); |
| | | return query.list(); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | public VideoInfo getVideoInfo(String name, VideoType videoType) { |
| | | List<VideoInfo> list = dao.list( |
| | | "select c.video from CategoryVideo c where c.video.name = ? and c.videoType.id = ?", |
| | | new Serializable[] { name, videoType.getId() }); |
| | | if (list.size() > 0) { |
| | | return list.get(0); |
| | | } |
| | | return null; |
| | | } |
| | | public VideoInfo getVideoInfo(String name, VideoType videoType) { |
| | | List<VideoInfo> list = videoInfoDao.list( |
| | | "select c.video from CategoryVideo c where c.video.name = ? and c.videoType.id = ?", |
| | | new Serializable[]{name, videoType.getId()}); |
| | | if (list.size() > 0) { |
| | | return list.get(0); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | @Transactional |
| | | public void save(VideoInfo videoInfo) { |
| | | dao.save(videoInfo); |
| | | CategoryVideo ca = new CategoryVideo(); |
| | | ca.setVideo(videoInfo); |
| | | ca.setVideoType(videoInfo.getVideoType()); |
| | | cdao.create(ca); |
| | | List<VideoResource> resourceList = videoInfo.getResourceList(); |
| | | ResourceVideo rs = null; |
| | | for (VideoResource videoResource : resourceList) { |
| | | rs = new ResourceVideo(); |
| | | rs.setResource(videoResource); |
| | | rs.setVideo(videoInfo); |
| | | resourceVideoService.save(rs); |
| | | } |
| | | } |
| | | @Transactional |
| | | public void save(VideoInfo videoInfo) { |
| | | videoInfoDao.save(videoInfo); |
| | | CategoryVideo ca = new CategoryVideo(); |
| | | ca.setVideo(videoInfo); |
| | | ca.setVideoType(videoInfo.getVideoType()); |
| | | categoryVideoDao.create(ca); |
| | | List<VideoResource> resourceList = videoInfo.getResourceList(); |
| | | ResourceVideo rs = null; |
| | | for (VideoResource videoResource : resourceList) { |
| | | rs = new ResourceVideo(); |
| | | rs.setResource(videoResource); |
| | | rs.setVideo(videoInfo); |
| | | resourceVideoService.save(rs); |
| | | } |
| | | } |
| | | |
| | | public List<VideoDetailInfo> getVideoDetailList(String videoid, VideoResource vr) { |
| | | VideoInfo find = dao.find(VideoInfo.class, videoid); |
| | | if (find != null) { |
| | | if (vr.getName().equals("AcFun")) { |
| | | List<VideoDetailInfo> detailInfos = new ArrayList<VideoDetailInfo>(); |
| | | VideoDetailInfo vd = new VideoDetailInfo(); |
| | | vd.setVideo(find); |
| | | vd.setIntroduction(find.getIntroduction()); |
| | | vd.setName(find.getName()); |
| | | vd.setTag(""); |
| | | vd.setType("acFunVideo"); |
| | | vd.setId(Long.parseLong(find.getId())); |
| | | vd.setWatchCount(Long.parseLong(find.getWatchCount())); |
| | | VideoUrl vurl = new VideoUrl(); |
| | | vurl.setResource(vr); |
| | | vurl.setUrl(find.getBaseurl()); |
| | | vurl.setInvalid(0 + ""); |
| | | vurl.setBaseUrl(find.getBaseurl()); |
| | | List<VideoUrl> urls = new ArrayList<VideoUrl>(); |
| | | urls.add(vurl); |
| | | vd.setUrls(urls); |
| | | detailInfos.add(vd); |
| | | return detailInfos; |
| | | } |
| | | } |
| | | public List<VideoDetailInfo> getVideoDetailList(String videoid, VideoResource vr, int page, int pageSize) { |
| | | VideoInfo find = videoInfoDao.find(VideoInfo.class, videoid); |
| | | if (find != null) { |
| | | if (vr.getName().equals("AcFun")) { |
| | | List<VideoDetailInfo> detailInfos = new ArrayList<VideoDetailInfo>(); |
| | | VideoDetailInfo vd = new VideoDetailInfo(); |
| | | vd.setVideo(find); |
| | | vd.setIntroduction(find.getIntroduction()); |
| | | vd.setName(find.getName()); |
| | | vd.setTag(""); |
| | | vd.setType("acFunVideo"); |
| | | vd.setId(Long.parseLong(find.getId())); |
| | | vd.setWatchCount(Long.parseLong(find.getWatchCount())); |
| | | VideoUrl vurl = new VideoUrl(); |
| | | vurl.setResource(vr); |
| | | vurl.setUrl(find.getBaseurl()); |
| | | vurl.setInvalid(0 + ""); |
| | | vurl.setBaseUrl(find.getBaseurl()); |
| | | List<VideoUrl> urls = new ArrayList<VideoUrl>(); |
| | | urls.add(vurl); |
| | | vd.setUrls(urls); |
| | | detailInfos.add(vd); |
| | | return detailInfos; |
| | | } |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public PlayUrl getPlayUrl(String detailSystemId, String id, String type, int resourceid, String videoid) { |
| | | if (type.equals("acFunVideo")) { |
| | | PlayUrl playUrl = new PlayUrl(); |
| | | VideoResource videoResource = videoResourceService.getResource(resourceid + ""); |
| | | playUrl.setResource(videoResource); |
| | | VideoInfo find = dao.find(VideoInfo.class, videoid); |
| | | playUrl.setUrl(find.getBaseurl()); |
| | | playUrl.setPlayType(1); |
| | | playUrl.setParams(""); |
| | | // 添加播放次数 |
| | | find.setWatchCount("" + (Integer.parseInt(find.getWatchCount()) + 1)); |
| | | dao.update(find); |
| | | return playUrl; |
| | | } |
| | | return null; |
| | | } |
| | | public PlayUrl getPlayUrl(String detailSystemId, String id, String type, int resourceid, String videoid) { |
| | | if (type.equals("acFunVideo")) { |
| | | PlayUrl playUrl = new PlayUrl(); |
| | | VideoResource videoResource = videoResourceService.getResource(resourceid + ""); |
| | | playUrl.setResource(videoResource); |
| | | VideoInfo find = videoInfoDao.find(VideoInfo.class, videoid); |
| | | playUrl.setUrl(find.getBaseurl()); |
| | | playUrl.setPlayType(1); |
| | | playUrl.setParams(""); |
| | | // 添加播放次数 |
| | | find.setWatchCount("" + (Integer.parseInt(find.getWatchCount()) + 1)); |
| | | videoInfoDao.update(find); |
| | | return playUrl; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 是否存在相同的视频 |
| | | * |
| | | * @param newVideoInfo |
| | | * @return |
| | | */ |
| | | public VideoInfo getExistSameVideo(VideoInfo newVideoInfo) { |
| | | int year = Integer.parseInt(newVideoInfo.getYear()); |
| | | List<VideoInfo> list = videoInfoDao.listByName(newVideoInfo.getName(), 0, 5); |
| | | if (list != null && list.size() > 0) |
| | | for (int i = 0; i < list.size(); i++) { |
| | | if (Math.abs(Integer.parseInt(list.get(i).getYear()) - year) < 2) {// 年份相差1年以下且属于同一个分类才归为一起 |
| | | // 判断分类 |
| | | if (VideoConstant.isMainCategory(newVideoInfo.getVideoType().getId())) {// 正片分类 |
| | | List<CategoryVideo> cvList = categoryVideoDao.listByVideoId(list.get(i).getId()); |
| | | boolean isS = false; |
| | | for (CategoryVideo cv : cvList) { |
| | | if (newVideoInfo.getVideoType().getId() == cv.getVideoType().getId() |
| | | || (cv.getVideoType().getParent() != null && newVideoInfo.getVideoType().getId() == |
| | | cv.getVideoType().getParent().getId())) {// 类型相同 |
| | | return list.get(i); |
| | | } |
| | | } |
| | | } else // 不必比较分类--只要名称相同则判断为相同 |
| | | { // 判断上个是否为正片分类 |
| | | List<CategoryVideo> typeList = categoryVideoDao.listByVideoId(list.get(i).getId()); |
| | | boolean isZhengpian = false; |
| | | if (typeList != null) |
| | | for (CategoryVideo categoryVideo : typeList) { |
| | | VideoType ltype = categoryVideo.getVideoType(); |
| | | if (VideoConstant.isMainCategory(ltype.getId()) |
| | | || (ltype.getParent() != null && VideoConstant.isMainCategory(ltype.getParent().getId()))) { |
| | | isZhengpian = true; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | if (!isZhengpian) |
| | | return list.get(i); |
| | | else |
| | | return null; |
| | | } |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | public List<VideoInfo> listByVideoIds(List<String> videoIds) { |
| | | return videoInfoDao.listByVideoIds(videoIds); |
| | | } |
| | | |
| | | public void hiddenVideo(String id) { |
| | | VideoInfo videoInfo = videoInfoDao.find(VideoInfo.class, id); |
| | | if (videoInfo != null && "1".equalsIgnoreCase(videoInfo.getShow())) { |
| | | videoInfo.setShow("0"); |
| | | videoInfoDao.update(videoInfo); |
| | | } |
| | | } |
| | | |
| | | |
| | | //从新统计 |
| | | public void statisticVideoExtraInfo(String videoId) { |
| | | videoInfoDao.statisticVideoExtraInfo(videoId); |
| | | } |
| | | |
| | | } |