package com.yeshi.buwan.controller.parser; import com.ks.lib.common.exception.ParamsException; import com.yeshi.buwan.domain.VideoInfo; import com.yeshi.buwan.domain.uservideo.CollectionVideoV2; import com.yeshi.buwan.domain.video.InternetSearchVideo; import com.yeshi.buwan.domain.video.VideoWatchHistory; import com.yeshi.buwan.service.imp.AttentionService; import com.yeshi.buwan.service.imp.CollectionService; import com.yeshi.buwan.service.imp.VideoService; import com.yeshi.buwan.service.inter.juhe.InternetSearchVideoService; import com.yeshi.buwan.service.inter.uservideo.CollectionVideoV2Service; import com.yeshi.buwan.service.inter.video.VideoWatchHistoryService; import com.yeshi.buwan.util.Constant; import com.yeshi.buwan.util.JsonUtil; import com.yeshi.buwan.util.NumberUtil; import com.yeshi.buwan.util.StringUtil; import com.yeshi.buwan.util.factory.VideoInfoFactory; import com.yeshi.buwan.vo.AcceptData; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.springframework.stereotype.Component; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.io.PrintWriter; import java.util.*; @Component public class UserVideoParser { @Resource private VideoWatchHistoryService videoWatchHistoryService; @Resource private VideoService videoService; @Resource private CollectionService collectionService; @Resource private AttentionService attentionService; @Resource private CollectionVideoV2Service collectionVideoV2Service; @Resource private InternetSearchVideoService internetSearchVideoService; public void getWatchHistory(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { int page = Integer.parseInt(request.getParameter("Page")); page = page == 0 ? 1 : page; List list = videoWatchHistoryService.listHistory(acceptData.getDevice(), page, Constant.pageCount); long count = videoWatchHistoryService.countHistory(acceptData.getDevice()); List videoIds = new ArrayList<>(); if (list != null) for (VideoWatchHistory wh : list) { videoIds.add(wh.getVideoId()); } List videoInfoList = videoService.getVideoInfoList(videoIds); Map videoInfoMap = new HashMap<>(); if (videoInfoList != null) for (VideoInfo vi : videoInfoList) { if (vi != null) videoInfoMap.put(vi.getId(), vi); } for (int i = 0; i < list.size(); i++) { VideoWatchHistory wh = list.get(i); if (videoInfoMap.get(list.get(i).getVideoId()) == null) { list.remove(i--); videoWatchHistoryService.delete(Arrays.asList(new String[]{wh.getId()})); } else { wh.setVideo(videoInfoMap.get(wh.getVideoId())); } } for (VideoWatchHistory wh : list) { wh.setVideo(videoInfoMap.get(wh.getVideoId())); } JSONObject root = new JSONObject(); root.put("count", count); root.put("list", StringUtil.outPutResultJson(list)); out.print(JsonUtil.loadTrueJson(root.toString())); } public void deleteWatchHistory(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { String ids = (request.getParameter("Ids")); List idList = new ArrayList<>(); JSONArray array = JSONArray.fromObject(ids); if (array != null) for (int i = 0; i < array.size(); i++) { idList.add(array.optString(i)); } videoWatchHistoryService.delete(idList); out.print(JsonUtil.loadTrueJson("")); } /** * 获取用户视频数据数量信息 * * @param acceptData * @param request * @param out */ public void getUserVideoDataCount(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { String loginUid = request.getParameter("LoginUid"); if (StringUtil.isNullOrEmpty(loginUid)) { out.print(JsonUtil.loadFalseJson("用户未登录")); return; } long collectionCount = collectionService.getCollectVideoCount(acceptData.getUid()); long collectionCountNew = collectionVideoV2Service.countByUid(loginUid); long attentionCount = attentionService.getAttentionCountByLoginUid(Long.parseLong(loginUid)); JSONObject data = new JSONObject(); data.put("collectionCount", collectionCount == 0 ? collectionCountNew : collectionCount); data.put("attentionCount", attentionCount); out.print(JsonUtil.loadTrueJson(data.toString())); } public void collectVideo(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { String loginUid = request.getParameter("LoginUid"); String videoId = request.getParameter("VideoId"); if (StringUtil.isNullOrEmpty(loginUid)) { out.print(JsonUtil.loadFalseJson("用户未登录")); return; } CollectionVideoV2 v2 = new CollectionVideoV2(); v2.setVideoId(videoId); v2.setLoginUid(loginUid); try { collectionVideoV2Service.add(v2); } catch (ParamsException e) { if (e.getCode() == ParamsException.CODE_EXIST) { out.print(JsonUtil.loadFalseJson("已收藏")); return; } out.print(JsonUtil.loadFalseJson("收藏出错")); return; } JSONObject data = new JSONObject(); out.print(JsonUtil.loadTrueJson(data.toString())); } public void cancelCollectVideo(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { String loginUid = request.getParameter("LoginUid"); String videoIds = request.getParameter("VideoId"); if (StringUtil.isNullOrEmpty(loginUid)) { out.print(JsonUtil.loadFalseJson("用户未登录")); return; } if (StringUtil.isNullOrEmpty(videoIds)) { out.print(JsonUtil.loadFalseJson("未上传视频ID")); return; } String[] videoIdArray = videoIds.split(","); List ids = new ArrayList<>(); for (String id : videoIdArray) { ids.add(CollectionVideoV2.createId(loginUid, id)); } collectionVideoV2Service.delete(ids); JSONObject data = new JSONObject(); out.print(JsonUtil.loadTrueJson(data.toString())); } public void getCollectVideoList(AcceptData acceptData, HttpServletRequest request, PrintWriter out) { String loginUid = request.getParameter("LoginUid"); String page = request.getParameter("Page"); if (StringUtil.isNullOrEmpty(loginUid)) { out.print(JsonUtil.loadFalseJson("用户未登录")); return; } long count = collectionVideoV2Service.countByUid(loginUid); List list = collectionVideoV2Service.listByUid(loginUid, Integer.parseInt(page), Constant.pageCount); //获取视频详情 List localIds = new ArrayList<>(); List internetIds = new ArrayList<>(); Map pmap = new HashMap<>(); for (int i = 0; i < list.size(); i++) { pmap.put(list.get(i).getVideoId(), i); if (NumberUtil.isNumeric(list.get(i).getVideoId())) { localIds.add(list.get(i).getVideoId()); } else { internetIds.add(list.get(i).getVideoId()); } } VideoInfo[] videoInfos = new VideoInfo[list.size()]; //填充本地视频 List localVideoInfoList = videoService.getVideoInfoList(localIds); if (localVideoInfoList != null) { for (VideoInfo video : localVideoInfoList) { videoInfos[pmap.get(video.getId())] = video; } } //填充全网搜视频 List internetSearchVideoList = internetSearchVideoService.listByIds(internetIds); for (InternetSearchVideo video : internetSearchVideoList) { videoInfos[pmap.get(video.getId())] = VideoInfoFactory.create(video); } JSONObject data = new JSONObject(); data.put("count", count + ""); JSONArray array = new JSONArray(); for (int i = 0; i < videoInfos.length; i++) { videoInfos[i].setIntroduction(""); array.add(StringUtil.outPutResultJson(videoInfos[i])); } data.put("data", array); out.print(JsonUtil.loadTrueJson(data.toString())); } }