From af72e645f1cd2986bd5af64481de6a6f3ad0ab9e Mon Sep 17 00:00:00 2001 From: xiezhijun <15270898033@163.com> Date: Fri, 30 Apr 2021 17:21:12 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=86=E9=A2=91=E6=92=AD=E6=94=BE=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../custom/SysNutritionalVideoController.java | 26 ++------ .../custom/WechatAppletController.java | 24 +------ .../stdiet/common/utils/AliyunVideoUtils.java | 36 ++++++++++- .../custom/domain/SysNutritionalVideo.java | 2 + .../service/ISysNutritionalVideoService.java | 8 +++ .../impl/SysNutritionalVideoServiceImpl.java | 63 +++++++++++++++++++ 6 files changed, 115 insertions(+), 44 deletions(-) diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysNutritionalVideoController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysNutritionalVideoController.java index 2ca71bd12..f02cc235c 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysNutritionalVideoController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysNutritionalVideoController.java @@ -2,6 +2,7 @@ package com.stdiet.web.controller.custom; import java.util.ArrayList; import java.util.List; +import java.util.Map; import com.aliyun.vod20170321.models.CreateUploadVideoResponse; import com.aliyun.vod20170321.models.GetVideoListResponseBody; @@ -37,28 +38,11 @@ public class SysNutritionalVideoController extends BaseController public AjaxResult list(SysNutritionalVideo sysNutritionalVideo, @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "5")int pageSize) { AjaxResult result = AjaxResult.success(); - int total = 0; - List nutritionalVideoList = new ArrayList<>(); - try{ - GetVideoListResponseBody videoListResponseBody = AliyunVideoUtils.getVideoListByPage(null, "Normal,Blocked", pageNum, pageSize); - if(videoListResponseBody != null){ - total = videoListResponseBody.total; - for (GetVideoListResponseBody.GetVideoListResponseBodyVideoListVideo video : videoListResponseBody.videoList.video) { - SysNutritionalVideo nutritionalVideo = new SysNutritionalVideo(); - nutritionalVideo.setCoverUrl(video.getCoverURL()); - nutritionalVideo.setTitle(video.getTitle()); - nutritionalVideo.setVideoId(video.getVideoId()); - nutritionalVideo.setDescription(video.getDescription()); - nutritionalVideo.setTags(video.getTags()); - nutritionalVideoList.add(nutritionalVideo); - nutritionalVideo.setShowFlag("Normal".equals(video.getStatus()) ? 1 : 0); - } - } - }catch (Exception e){ - e.printStackTrace(); + Map map = sysNutritionalVideoService.searchVideo(sysNutritionalVideo.getKey(), sysNutritionalVideo.getShowFlag(), pageNum, pageSize, null); + if(map != null){ + result.put("total", map.get("total")); + result.put("rows", map.get("nutritionalVideoList")); } - result.put("total",total); - result.put("rows", nutritionalVideoList); return result; } diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/WechatAppletController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/WechatAppletController.java index 7bb759dbe..40d0464eb 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/WechatAppletController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/WechatAppletController.java @@ -368,27 +368,9 @@ public class WechatAppletController extends BaseController { @GetMapping(value = "/getVideoList") public AjaxResult getVideoList(SysNutritionalVideo sysNutritionalVideo, @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "5")int pageSize) { AjaxResult result = AjaxResult.success(); - int total = 0; - List nutritionalVideoList = new ArrayList<>(); - try{ - GetVideoListResponseBody videoListResponseBody = AliyunVideoUtils.getVideoListByPage(null, "Normal", pageNum, pageSize); - if(videoListResponseBody != null){ - total = videoListResponseBody.total; - for (GetVideoListResponseBody.GetVideoListResponseBodyVideoListVideo video : videoListResponseBody.videoList.video) { - NutritionalVideoResponse nutritionalVideoResponse = new NutritionalVideoResponse(); - nutritionalVideoResponse.setCoverUrl(video.getCoverURL()); - nutritionalVideoResponse.setTitle(video.getTitle()); - nutritionalVideoResponse.setVideoId(video.getVideoId()); - nutritionalVideoResponse.setDescription(video.getDescription()); - nutritionalVideoResponse.setTags(video.getTags()); - nutritionalVideoList.add(nutritionalVideoResponse); - } - } - }catch (Exception e){ - e.printStackTrace(); - } - result.put("total",total); - result.put("rows", nutritionalVideoList); + Map map = sysNutritionalVideoService.searchVideo(sysNutritionalVideo.getKey(), 1, pageNum, pageSize, null); + result.put("total", map.get("total")); + result.put("rows", map.get("nutritionalVideoList")); return result; } diff --git a/stdiet-common/src/main/java/com/stdiet/common/utils/AliyunVideoUtils.java b/stdiet-common/src/main/java/com/stdiet/common/utils/AliyunVideoUtils.java index b64af1bb5..5d92b2b15 100644 --- a/stdiet-common/src/main/java/com/stdiet/common/utils/AliyunVideoUtils.java +++ b/stdiet-common/src/main/java/com/stdiet/common/utils/AliyunVideoUtils.java @@ -14,11 +14,13 @@ public class AliyunVideoUtils { public static final String default_output_type = "oss"; - public static final String default_formats = "mp4"; + public static final String default_formats = "cdn"; //播放地址日期,30天 public static final Long default_authTimeout = 2592000L; + public static final String search_field = "VideoId,Title,CoverURL,CateName,Tags,Status,Description,CreationTime"; + /** * 初始化视频点播Client * @return @@ -43,7 +45,7 @@ public class AliyunVideoUtils { } /** - * 分页获取视频列表 + * 分页获取视频列表(限于5000条,不能关键词搜索) * @param pageNo 页码 * @param pageSize 每页数量 * @return @@ -120,6 +122,36 @@ public class AliyunVideoUtils { return client.createUploadVideo(createUploadVideoRequest); } + /** + * + * @param key + * @param status + * @param pageNo + * @param pageSize + * @throws Exception + */ + public static SearchMediaResponse searchVideo(String key, String status, Integer pageNo, Integer pageSize, String scrollToken) throws Exception{ + com.aliyun.vod20170321.Client client = AliyunVideoUtils.createClient(); + SearchMediaRequest searchMediaRequest = new SearchMediaRequest() + .setSearchType("video") + .setFields(search_field) + .setPageNo(pageNo == null ? 1 : pageNo) + .setPageSize(pageSize == null ? 10 : pageSize) + .setScrollToken(scrollToken); + if(StringUtils.isNotEmpty(key) || StringUtils.isNotEmpty(status)){ + String matchString = null; + if(StringUtils.isNotEmpty(key)){ + matchString += StringUtils.format("(Title = '%s' or Description = '%s')", key, key); + } + if(StringUtils.isNotEmpty(status)) { + matchString += matchString == null ? "" : " and "; + matchString += StringUtils.format("(Status = '%s')", status); + } + System.out.println(matchString); + searchMediaRequest.setMatch(matchString); + } + return client.searchMedia(searchMediaRequest); + } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysNutritionalVideo.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysNutritionalVideo.java index 0c0da2423..eb420b9fe 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysNutritionalVideo.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysNutritionalVideo.java @@ -55,4 +55,6 @@ public class SysNutritionalVideo extends BaseEntity //文件名称 private String fileName; + + private String key; } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysNutritionalVideoService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysNutritionalVideoService.java index 7a844ceae..dfd9d96ad 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysNutritionalVideoService.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysNutritionalVideoService.java @@ -1,6 +1,8 @@ package com.stdiet.custom.service; import java.util.List; +import java.util.Map; + import com.stdiet.custom.domain.SysNutritionalVideo; /** @@ -65,4 +67,10 @@ public interface ISysNutritionalVideoService * @return */ public SysNutritionalVideo selectSysNutritionalVideByVideoId(String videoId); + + /** + * 阿里云视频查询检索 + * @return + */ + public Map searchVideo(String key, Integer status, Integer pageNo, Integer pageSize, String scrollToken); } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysNutritionalVideoServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysNutritionalVideoServiceImpl.java index 47ed3f8a6..775ad77c8 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysNutritionalVideoServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysNutritionalVideoServiceImpl.java @@ -1,6 +1,13 @@ package com.stdiet.custom.service.impl; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; + +import com.aliyun.vod20170321.models.SearchMediaResponse; +import com.aliyun.vod20170321.models.SearchMediaResponseBody; +import com.stdiet.common.utils.AliyunVideoUtils; import com.stdiet.common.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -102,4 +109,60 @@ public class SysNutritionalVideoServiceImpl implements ISysNutritionalVideoServi public SysNutritionalVideo selectSysNutritionalVideByVideoId(String videoId){ return sysNutritionalVideoMapper.selectSysNutritionalVideByVideoId(videoId); } + + /** + * 阿里云视频查询检索 + * @return + */ + public Map searchVideo(String key, Integer showFlag, Integer pageNo, Integer pageSize, String scrollToken){ + pageSize = pageSize.intValue() > 100 ? 10 : pageSize; + long total = 0; + String newScrollToken = null; + List nutritionalVideoList = new ArrayList<>(); + try { + SearchMediaResponse response = AliyunVideoUtils.searchVideo(key, getStatusString(showFlag), pageNo, pageSize, scrollToken); + if(response != null){ + SearchMediaResponseBody body = response.body; + total = body.total; + newScrollToken = body.scrollToken; + List mediaList = body.mediaList; + if(mediaList != null && mediaList.size() > 0){ + for (SearchMediaResponseBody.SearchMediaResponseBodyMediaList media : mediaList) { + SysNutritionalVideo sysNutritionalVideo = new SysNutritionalVideo(); + sysNutritionalVideo.setTitle(media.video.title); + sysNutritionalVideo.setCoverUrl(media.video.coverURL); + sysNutritionalVideo.setShowFlag(getStatus(media.video.getStatus())); + sysNutritionalVideo.setTags(media.video.tags); + String createTime = media.video.creationTime; + System.out.println(createTime); + sysNutritionalVideo.setDescription(media.video.description); + sysNutritionalVideo.setVideoId(media.video.videoId); + nutritionalVideoList.add(sysNutritionalVideo); + } + } + } + }catch (Exception e){ + e.printStackTrace(); + } + Map result = new HashMap<>(); + result.put("total", total); + result.put("newScrollToken", newScrollToken); + result.put("nutritionalVideoList", nutritionalVideoList); + return result; + } + + private String getStatusString(Integer status){ + if(status == null){ + return "Normal,Blocked"; + } + return status.intValue() == 1 ? "Normal" : "Blocked"; + } + + private Integer getStatus(String status){ + if(status == null){ + return 1; + } + return "Normal".equals(status) ? 1 : 0; + } + } \ No newline at end of file