From 873dddae4f6118bc5df8d80bf941e05d8c97a096 Mon Sep 17 00:00:00 2001 From: xiezhijun <15270898033@163.com> Date: Tue, 15 Jun 2021 13:39:32 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=86=E9=A2=91=E6=92=AD=E6=94=BE=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../custom/VideoWebInterfaceController.java | 87 +++++++++++++++++-- .../custom/domain/SysVideoClassify.java | 7 +- .../dto/response/VideoClassifyResponse.java | 38 ++------ .../custom/dto/response/VideoResponse.java | 17 ++++ .../custom/mapper/SysVideoClassifyMapper.java | 2 +- .../service/ISysVideoClassifyService.java | 2 +- .../impl/SysVideoClassifyServiceImpl.java | 4 +- .../mapper/custom/SysVideoClassifyMapper.xml | 49 +++++++---- 8 files changed, 138 insertions(+), 68 deletions(-) create mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/dto/response/VideoResponse.java diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/VideoWebInterfaceController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/VideoWebInterfaceController.java index cca7e91ad..9a79b8e0e 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/VideoWebInterfaceController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/VideoWebInterfaceController.java @@ -1,31 +1,104 @@ package com.stdiet.web.controller.custom; +import com.aliyun.vod20170321.models.GetPlayInfoResponseBody; +import com.stdiet.common.core.controller.BaseController; import com.stdiet.common.core.domain.AjaxResult; +import com.stdiet.common.core.page.TableDataInfo; +import com.stdiet.common.utils.AliyunVideoUtils; +import com.stdiet.common.utils.StringUtils; +import com.stdiet.common.utils.oss.AliyunOSSUtils; +import com.stdiet.custom.domain.SysNutritionalVideo; import com.stdiet.custom.domain.SysVideoClassify; +import com.stdiet.custom.dto.response.NutritionalVideoResponse; import com.stdiet.custom.dto.response.VideoClassifyResponse; +import com.stdiet.custom.service.ISysNutritionalVideoService; import com.stdiet.custom.service.ISysVideoClassifyService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/web/video") -public class VideoWebInterfaceController { +public class VideoWebInterfaceController extends BaseController { @Autowired private ISysVideoClassifyService sysVideoClassifyService; + @Autowired + private ISysNutritionalVideoService sysNutritionalVideoService; + /** * 查询视频分类目录列表 */ @GetMapping("/getAllClassify") - public AjaxResult getClassifyAndVideo(SysVideoClassify sysVideoClassify) + public TableDataInfo getClassifyAndVideo(SysVideoClassify sysVideoClassify) { - List<SysVideoClassify> list = sysVideoClassifyService.getAllClassifyAndVideo(0L); - return AjaxResult.success(list); + //不分页则不需要传pageNum、pageSize参数 + startPage(); + //父级分类ID 0表示主分类 + sysVideoClassify.setParentId(0L); + //客户类型 0 未付费客户 1已付费客户 + sysVideoClassify.setUserType(1); + List<VideoClassifyResponse> list = sysVideoClassifyService.getAllClassifyAndVideo(sysVideoClassify); + return getDataTable(list); + } + + + /** + * 根据视频videoId获取视频详情以及播放地址 + * @param videoId 阿里云中对应videoId + * @return + */ + @GetMapping("/getVideoDetail/{videoId}") + public AjaxResult getVideoDetail(@PathVariable("videoId") String videoId) + { + if(StringUtils.isEmpty(videoId)){ + return AjaxResult.error("视频加载失败"); + } + SysNutritionalVideo sysNutritionalVideo = sysNutritionalVideoService.selectSysNutritionalVideByVideoId(videoId); + if(sysNutritionalVideo == null){ + return AjaxResult.error("视频加载失败"); + } + NutritionalVideoResponse nutritionalVideoResponse = new NutritionalVideoResponse(); + try { + GetPlayInfoResponseBody playInfoResponseBody = AliyunVideoUtils.getVideoVisitDetail(videoId); + List<GetPlayInfoResponseBody.GetPlayInfoResponseBodyPlayInfoListPlayInfo> playList = playInfoResponseBody.playInfoList.playInfo; + if (playList != null && playList.size() > 0) { + //播放地址 + nutritionalVideoResponse.setPlayUrl(playList.get(0).getPlayURL()); + } + }catch (Exception e){ + e.printStackTrace(); + return AjaxResult.error("视频加载失败"); + } + //视频封面URL + if (StringUtils.isNotEmpty(sysNutritionalVideo.getCoverUrl())) { + nutritionalVideoResponse.setCoverUrl(AliyunOSSUtils.generatePresignedUrl(sysNutritionalVideo.getCoverUrl())); + } else { + nutritionalVideoResponse.setCoverUrl(AliyunVideoUtils.getVideoCoverUrl(videoId)); + } + //视频描述 + nutritionalVideoResponse.setDescription(sysNutritionalVideo.getDescription()); + //视频标题 + nutritionalVideoResponse.setTitle(sysNutritionalVideo.getTitle()); + //视频播放量 + nutritionalVideoResponse.setPlayNum(sysNutritionalVideo.getPlayNum()); + + return AjaxResult.success(nutritionalVideoResponse); + } + + /** + * 更新视频播放次数 + * @param videoId 阿里云中对应videoId + * @return + */ + @GetMapping(value = "/updateVideoPlayNum") + public AjaxResult updateVideoPlayNum(@RequestParam(value = "videoId") String videoId) { + if(StringUtils.isEmpty(videoId)){ + return AjaxResult.error("更新失败"); + } + return toAjax(sysNutritionalVideoService.updateVideoPlayNum(videoId)); } } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysVideoClassify.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysVideoClassify.java index 915f71ea5..8fd99336e 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysVideoClassify.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysVideoClassify.java @@ -37,9 +37,6 @@ public class SysVideoClassify extends BaseEntity /** 删除标识 0未删除 1已删除 */ private Integer delFlag; - //子分类 - private List<SysVideoClassify> childrenClassify; - - //子视频 - private List<Map<String, Object>> childrenVideo; + //用户类型 0 普通用户 1付费客户 + private Integer userType; } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/dto/response/VideoClassifyResponse.java b/stdiet-custom/src/main/java/com/stdiet/custom/dto/response/VideoClassifyResponse.java index 515bf208a..8ed1199ad 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/dto/response/VideoClassifyResponse.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/dto/response/VideoClassifyResponse.java @@ -5,6 +5,7 @@ import java.io.Serializable; import java.util.List; import java.util.Map; +@Data public class VideoClassifyResponse implements Serializable { private static final long serialVersionUID = 1L; @@ -15,41 +16,12 @@ public class VideoClassifyResponse implements Serializable { //目录分类名称 private String cateName; + //用户类型 0 普通用户 1付费客户 + private Integer userType; + //子分类 private List<VideoClassifyTwoResponse> childrenClassify; //子视频 - private List<Map<String, Object>> childrenVideo; - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getCateName() { - return cateName; - } - - public void setCateName(String cateName) { - this.cateName = cateName; - } - - public List<VideoClassifyTwoResponse> getChildrenClassify() { - return childrenClassify; - } - - public void setChildrenClassify(List<VideoClassifyTwoResponse> childrenClassify) { - this.childrenClassify = childrenClassify; - } - - public List<Map<String, Object>> getChildrenVideo() { - return childrenVideo; - } - - public void setChildrenVideo(List<Map<String, Object>> childrenVideo) { - this.childrenVideo = childrenVideo; - } + private List<VideoResponse> childrenVideo; } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/dto/response/VideoResponse.java b/stdiet-custom/src/main/java/com/stdiet/custom/dto/response/VideoResponse.java new file mode 100644 index 000000000..b0a33c0c9 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/dto/response/VideoResponse.java @@ -0,0 +1,17 @@ +package com.stdiet.custom.dto.response; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class VideoResponse implements Serializable { + + private static final long serialVersionUID = 1L; + + //阿里云中对应视频ID + private String videoId; + + //视频标题 + private String title; +} diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysVideoClassifyMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysVideoClassifyMapper.java index c173cbc72..0e00d8a56 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysVideoClassifyMapper.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysVideoClassifyMapper.java @@ -71,5 +71,5 @@ public interface SysVideoClassifyMapper * @param parentId * @return */ - public List<SysVideoClassify> getOneAllClassifyAndVideo(Long parentId); + public List<VideoClassifyResponse> getOneAllClassifyAndVideo(SysVideoClassify sysVideoClassify); } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysVideoClassifyService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysVideoClassifyService.java index 0cdf33740..8290de7fe 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysVideoClassifyService.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysVideoClassifyService.java @@ -71,5 +71,5 @@ public interface ISysVideoClassifyService * * @return 视频分类集合 */ - public List<SysVideoClassify> getAllClassifyAndVideo(Long parentId); + public List<VideoClassifyResponse> getAllClassifyAndVideo(SysVideoClassify sysVideoClassify); } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysVideoClassifyServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysVideoClassifyServiceImpl.java index 827091fca..14f791aa3 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysVideoClassifyServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysVideoClassifyServiceImpl.java @@ -120,7 +120,7 @@ public class SysVideoClassifyServiceImpl implements ISysVideoClassifyService * @param sysVideoClassify 视频分类 * @return 视频分类集合 */ - public List<SysVideoClassify> getAllClassifyAndVideo(Long parentId){ - return sysVideoClassifyMapper.getOneAllClassifyAndVideo(parentId); + public List<VideoClassifyResponse> getAllClassifyAndVideo(SysVideoClassify sysVideoClassify){ + return sysVideoClassifyMapper.getOneAllClassifyAndVideo(sysVideoClassify); } } \ No newline at end of file diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysVideoClassifyMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysVideoClassifyMapper.xml index d25fc7347..ee975bd5a 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysVideoClassifyMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysVideoClassifyMapper.xml @@ -99,53 +99,64 @@ order by order_num asc,id asc </select> - <resultMap type="SysVideoClassify" id="VideoClassifyOneResult"> + <resultMap type="com.stdiet.custom.dto.response.VideoClassifyResponse" id="VideoClassifyOneResult"> <result property="id" column="id" /> <result property="cateName" column="cate_name" /> + <result property="userType" column="userType"></result> <!-- 查询子分类 --> - <!--<association property="childrenClassify" column="id" select="getTwoAllClassifyAndVideo"/>--> + <association property="childrenClassify" column="{userType=userType,id=id}" select="getTwoAllClassifyAndVideo"/> <!-- 查询子视频 --> - <!--<association property="childrenVideo" column="id" select="getAllVideoByClassify"/>--> + <association property="childrenVideo" column="{userType=userType,id=id}" select="getAllVideoByClassify"/> </resultMap> - <resultMap type="SysVideoClassify" id="VideoClassifyTwoResult"> + <resultMap type="com.stdiet.custom.dto.response.VideoClassifyResponse" id="VideoClassifyTwoResult"> <result property="id" column="id" /> <result property="cateName" column="cate_name" /> + <result property="userType" column="userType"></result> <!-- 查询子分类 --> - <!--<association property="childrenClassify" column="id" select="getThreeAllClassifyAndVideo"/>--> + <association property="childrenClassify" column="{userType=userType,id=id}" select="getThreeAllClassifyAndVideo"/> <!-- 查询子视频 --> - <!--<association property="childrenVideo" column="id" select="getAllVideoByClassify"/>--> + <association property="childrenVideo" column="{userType=userType,id=id}" select="getAllVideoByClassify"/> </resultMap> - <resultMap type="com.stdiet.custom.dto.response.VideoClassifyThreeResponse" id="VideoClassifyThreeResult"> + <resultMap type="com.stdiet.custom.dto.response.VideoClassifyResponse" id="VideoClassifyThreeResult"> <result property="id" column="id" /> <result property="cateName" column="cate_name" /> + <result property="userType" column="userType" ></result> <!-- 查询子视频 --> - <association property="childrenVideo" column="id" select="getAllVideoByClassify"/> + <association property="childrenVideo" column="{userType=userType,id=id}" select="getAllVideoByClassify"/> </resultMap> <select id="getOneAllClassifyAndVideo" resultMap="VideoClassifyOneResult" parameterType="SysVideoClassify"> - select id, cate_name from sys_video_classify - left join sys_video_classify - where del_flag = 0 and parent_id = #{parentId} + select id, cate_name, #{userType} as userType from sys_video_classify + where del_flag = 0 and parent_id = #{parentId} and 1 = 1 order by order_num asc,id asc </select> - <select id="getTwoAllClassifyAndVideo" resultMap="VideoClassifyTwoResult" parameterType="Long"> - select id, cate_name from sys_video_classify - where del_flag = 0 and parent_id = #{id} + <select id="getTwoAllClassifyAndVideo" resultMap="VideoClassifyTwoResult"> + select id, cate_name,#{userType} as userType from sys_video_classify + where del_flag = 0 and parent_id = #{id} and 2 = 2 order by order_num asc,id asc </select> - <select id="getThreeAllClassifyAndVideo" resultMap="VideoClassifyThreeResult" parameterType="Long"> - select id, cate_name from sys_video_classify - where del_flag = 0 and parent_id = #{id} + <select id="getThreeAllClassifyAndVideo" resultMap="VideoClassifyThreeResult"> + select id, cate_name,#{userType} as userType from sys_video_classify + where del_flag = 0 and parent_id = #{id} and 3 = 3 order by order_num asc,id asc </select> - <select id="getAllVideoByClassify" resultType="Map" parameterType="Long"> - select snv.video_id as videoId, snv.cover_url as coverUrl, snv.title, snv.description + <select id="getAllVideoByClassify" resultType="com.stdiet.custom.dto.response.VideoResponse"> + select snv.video_id as videoId, snv.title from sys_nutritional_video snv where cate_id = #{id} and del_flag = 0 and show_flag = 1 + <if test="userType != null"> + <if test="userType == 0"> + and pay_level = 0 + </if> + <if test="userType == 1"> + and (pay_level = 0 or pay_level = 1) + </if> + </if> + order by priority_level desc,id asc </select> </mapper> \ No newline at end of file