From 434ea8cef0d23ee20b6047631ef4afa371b43eb3 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期三, 04 六月 2025 16:34:59 +0800 Subject: [PATCH] 视频主页接口完善、视频地址暂时写死 --- framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoOption.java | 27 +++++ framework/src/main/java/cn/lili/modules/lmk/domain/vo/WxEditVideoVO.java | 62 ++++++++++++ framework/src/main/java/cn/lili/modules/lmk/domain/query/AuthorVideoQuery.java | 6 + framework/src/main/java/cn/lili/modules/lmk/domain/vo/WxVideoVO.java | 7 + framework/src/main/resources/mapper/lmk/VideoMapper.xml | 45 ++++++++ buyer-api/src/main/java/cn/lili/controller/lmk/VideoController.java | 6 + framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java | 8 + framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java | 39 ++++++- framework/src/main/java/cn/lili/modules/lmk/mapper/VideoMapper.java | 20 ++- framework/src/main/java/cn/lili/modules/lmk/enums/general/VideoSupportOpEnum.java | 72 ++++++++++++++ 10 files changed, 280 insertions(+), 12 deletions(-) diff --git a/buyer-api/src/main/java/cn/lili/controller/lmk/VideoController.java b/buyer-api/src/main/java/cn/lili/controller/lmk/VideoController.java index 659c7e7..1841afb 100644 --- a/buyer-api/src/main/java/cn/lili/controller/lmk/VideoController.java +++ b/buyer-api/src/main/java/cn/lili/controller/lmk/VideoController.java @@ -103,4 +103,10 @@ public Result homePageInfoEdit(@RequestBody @Validated VideoHomePageInfoForm form) { return videoService.homePageInfoEdit(form); } + + @GetMapping("/wx/detail/{id}") + @ApiOperation(value = "灏忕▼搴�-鑾峰彇瑙嗛璇︽儏", notes = "灏忕▼搴�-鑾峰彇瑙嗛璇︽儏") + public Result wxDetail(@PathVariable("id") String id) { + return videoService.wxDetail(id); + } } diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/AuthorVideoQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/AuthorVideoQuery.java index c0f168e..5b59eb5 100644 --- a/framework/src/main/java/cn/lili/modules/lmk/domain/query/AuthorVideoQuery.java +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/AuthorVideoQuery.java @@ -18,5 +18,11 @@ @ApiModelProperty("浣滆�卛d") private String authorId; + /** + * 鏄惁鏄湰浜烘煡璇� + */ + @ApiModelProperty(hidden = true) + private Boolean authorSelf; + } diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoOption.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoOption.java new file mode 100644 index 0000000..bbfc6aa --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/VideoOption.java @@ -0,0 +1,27 @@ +package cn.lili.modules.lmk.domain.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.RequiredArgsConstructor; + +/** + * @author锛歺p + * @date锛�2025/6/4 14:23 + */ +@Data +@AllArgsConstructor +public class VideoOption { + + /** + * 鍛戒护鏍囪瘑 + * + */ + private String command; + + /** + * 灞曠ず鍊� + * + */ + private String label; + +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/WxEditVideoVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/WxEditVideoVO.java new file mode 100644 index 0000000..1c74bc9 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/WxEditVideoVO.java @@ -0,0 +1,62 @@ +package cn.lili.modules.lmk.domain.vo; + +import cn.lili.base.AbsVo; +import cn.lili.modules.lmk.domain.entity.Video; +import cn.lili.modules.lmk.domain.form.WxVideoTagForm; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.beans.BeanUtils; +import org.springframework.lang.NonNull; + +import java.util.List; + +/** + * 瑙嗛鍐呭灞曠ず + * + * @author xp + * @since 2025-05-16 + */ +@Data +@ApiModel(value = "瑙嗛鍐呭鍝嶅簲鏁版嵁", description = "瑙嗛鍐呭鍝嶅簲鏁版嵁") +public class WxEditVideoVO extends AbsVo { + + + /** 鍥剧墖灏侀潰 */ + @ApiModelProperty("鍥剧墖灏侀潰") + private String coverUrl; + private String coverFileKey; + + /** 瑙嗛鍦板潃 */ + @ApiModelProperty("瑙嗛鍦板潃") + private String videoFileKey; + private String videoUrl; + + @ApiModelProperty("瑙嗛鏍囩") + private List<WxVideoTagForm> tags; + + /** 瑙嗛濉厖妯″紡 */ + @ApiModelProperty("瑙嗛濉厖妯″紡") + private String videoFit; + + /** 瑙嗛鏍囬 */ + @ApiModelProperty("瑙嗛鏍囬") + private String title; + + /** 鍟嗗搧淇℃伅 */ + @ApiModelProperty("鍟嗗搧淇℃伅") + private String goodsId; + + @ApiModelProperty("瑙嗛闀垮害锛氱") + private Long videoDuration; + + + public static WxEditVideoVO getVoByEntity(@NonNull Video entity, WxEditVideoVO vo) { + if(vo == null) { + vo = new WxEditVideoVO(); + } + BeanUtils.copyProperties(entity, vo); + return vo; + } + +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/WxVideoVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/WxVideoVO.java index 9a7a98e..4c98650 100644 --- a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/WxVideoVO.java +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/WxVideoVO.java @@ -68,6 +68,13 @@ @ApiModelProperty("璇勮鏁�") private Long commentNum; + /** 瑙嗛鎷ユ湁鐨勬搷浣� */ + @ApiModelProperty("瑙嗛鏀寔鐨勬搷浣�") + private List<VideoOption> options; + + @ApiModelProperty("瑙嗛鐘舵��") + private String status; + public static WxVideoVO getVoByEntity(@NonNull Video entity, WxVideoVO vo) { if(vo == null) { diff --git a/framework/src/main/java/cn/lili/modules/lmk/enums/general/VideoSupportOpEnum.java b/framework/src/main/java/cn/lili/modules/lmk/enums/general/VideoSupportOpEnum.java new file mode 100644 index 0000000..a339215 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/enums/general/VideoSupportOpEnum.java @@ -0,0 +1,72 @@ +package cn.lili.modules.lmk.enums.general; + +import cn.lili.modules.lmk.domain.vo.VideoOption; +import lombok.Getter; +import org.apache.commons.lang3.StringUtils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * 瑙嗛鏀寔鐨勬搷浣� + * + * @author锛歺p + * @date锛�2025/5/14 10:30 + */ +@Getter +public enum VideoSupportOpEnum { + + UP("UP", "鍙戝竷"), + DOWN("DOWN", "涓嬫灦"), + DELETE("DELETE", "鍒犻櫎"), + EDIT("EDIT", "缂栬緫"), + ; + + private final String value; + + + private final String desc; + + VideoSupportOpEnum(String value, String desc) { + this.value = value; + this.desc = desc; + } + + /** + * 鏍规嵁瑙嗛鐘舵�佽幏鍙栧埌瀵瑰簲鐨勬搷浣� + * + * @param status + * @return + */ + public static List<VideoOption> getVideoOpByStatus(String status) { + if (VideoStatusEnum.AUDITING.getValue().equals(status)) { + return Arrays.asList(new VideoOption(EDIT.value, EDIT.desc), new VideoOption(DELETE.value, DELETE.desc)); + } else if (VideoStatusEnum.DISABLE.getValue().equals(status)) { + return Arrays.asList(new VideoOption(EDIT.value, EDIT.desc), new VideoOption(UP.value, UP.desc), new VideoOption(DELETE.value, DELETE.desc)); + } else if (VideoStatusEnum.PUBLISHED.getValue().equals(status)) { + return Arrays.asList(new VideoOption(EDIT.value, EDIT.desc), new VideoOption(DOWN.value, DOWN.desc), new VideoOption(DELETE.value, DELETE.desc)); + } else if (VideoStatusEnum.REJECT.getValue().equals(status)) { + return Arrays.asList(new VideoOption(EDIT.value, EDIT.desc), new VideoOption(DELETE.value, DELETE.desc)); + } + return new ArrayList<>(); + } + + /** + * 鑾峰彇鍚箟 + * + * @param value + * @return + */ + public static String getDescByValue(String value) { + if (StringUtils.isBlank(value)) { + return null; + } + for (VideoSupportOpEnum e : VideoSupportOpEnum.values()){ + if (value.equals(e.getValue())) { + return e.getDesc(); + } + } + return null; + } +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/VideoMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/VideoMapper.java index cbb9fe8..2b91e57 100644 --- a/framework/src/main/java/cn/lili/modules/lmk/mapper/VideoMapper.java +++ b/framework/src/main/java/cn/lili/modules/lmk/mapper/VideoMapper.java @@ -3,17 +3,17 @@ import cn.lili.modules.lmk.domain.entity.Video; import cn.lili.modules.lmk.domain.query.AuthorVideoQuery; import cn.lili.modules.lmk.domain.query.ManagerVideoQuery; +import cn.lili.modules.lmk.domain.query.VideoQuery; import cn.lili.modules.lmk.domain.vo.CollectTypeNumVO; import cn.lili.modules.lmk.domain.vo.VideoAccountVO; -import cn.lili.modules.lmk.domain.vo.WxVideoVO; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; import cn.lili.modules.lmk.domain.vo.VideoVO; -import cn.lili.modules.lmk.domain.form.VideoForm; -import cn.lili.modules.lmk.domain.query.VideoQuery; -import java.util.List; +import cn.lili.modules.lmk.domain.vo.WxEditVideoVO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 瑙嗛鍐呭 Mapper 鎺ュ彛 @@ -104,4 +104,12 @@ * @param query */ IPage getAuthorCollectVideoPage(IPage page, @Param("query") AuthorVideoQuery query); + + /** + * 灏忕▼搴�-瑙嗛璇︽儏 + * + * @param id + * @return + */ + WxEditVideoVO wxDetail(@Param("id") String id); } diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java b/framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java index b13cb9b..01b4655 100644 --- a/framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java +++ b/framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java @@ -175,4 +175,12 @@ * @return */ Result homePageInfoEdit(VideoHomePageInfoForm form); + + /** + * 灏忕▼搴�-瑙嗛璇︽儏 + * + * @param id + * @return + */ + Result wxDetail(String id); } diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java index a15a912..30e5b32 100644 --- a/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java @@ -8,6 +8,7 @@ import cn.lili.modules.lmk.domain.vo.*; import cn.lili.modules.lmk.enums.general.TagCreateTypeEnum; import cn.lili.modules.lmk.enums.general.VideoStatusEnum; +import cn.lili.modules.lmk.enums.general.VideoSupportOpEnum; import cn.lili.modules.lmk.enums.general.ViewTypeEnum; import cn.lili.modules.lmk.service.*; import cn.lili.modules.member.entity.dos.FootPrint; @@ -56,6 +57,7 @@ private final MySubscribeService mySubscribeService; private final MemberService memberService; private final VideoAccountService videoAccountService; + /** * 娣诲姞 @@ -130,7 +132,7 @@ Assert.notNull(vo, "璁板綍涓嶅瓨鍦�"); List<SimpleVideoTagVO> tags = videoTagRefService.getTagsByVideoIds(Arrays.asList(id)); vo.setTagList(tags); - vo.setVideoUrl(cosUtil.getPreviewUrl(vo.getVideoFileKey())); +// vo.setVideoUrl(cosUtil.getPreviewUrl(vo.getVideoFileKey())); return Result.ok().data(vo); } @@ -276,7 +278,7 @@ case "collect": AuthorVideoQuery query2 = new AuthorVideoQuery(); query2.setAuthorId(query.getAuthorId()); - baseMapper.getAuthorVideoPage(page, query2); + baseMapper.getAuthorCollectVideoPage(page, query2); break; default: break; @@ -295,7 +297,8 @@ v.setGoods(new VideoGoodsVO()); v.setTagList(tagMap.get(v.getId())); v.setCollected(CollectionUtils.isNotEmpty(collectMap.get(v.getId()))); - v.setVideoUrl(cosUtil.getPreviewUrl(v.getVideoFileKey())); +// v.setVideoUrl(cosUtil.getPreviewUrl(v.getVideoFileKey())); + v.setVideoUrl("https://videos.pexels.com/video-files/13602965/13602965-hd_1920_1080_30fps.mp4"); v.setCoverUrl(cosUtil.getPreviewUrl(v.getCoverFileKey())); v.setSubscribeThisAuthor(subscribes.contains(v.getAuthorId())); }); @@ -352,10 +355,13 @@ @Override public Result getAuthorVideoPage(AuthorVideoQuery query) { IPage<WxVideoVO> page = PageUtil.getPage(query, WxVideoVO.class); + query.setAuthorSelf(UserContext.getCurrentUserId().equals(query.getAuthorId())); baseMapper.getAuthorVideoPage(page, query); for (WxVideoVO vo : page.getRecords()) { vo.setCoverUrl(cosUtil.getPreviewUrl(vo.getCoverFileKey())); - vo.setVideoUrl(cosUtil.getPreviewUrl(vo.getVideoUrl())); +// vo.setVideoUrl(cosUtil.getPreviewUrl(vo.getVideoFileKey())); + vo.setVideoUrl("https://videos.pexels.com/video-files/13602965/13602965-hd_1920_1080_30fps.mp4"); + vo.setOptions(VideoSupportOpEnum.getVideoOpByStatus(vo.getStatus())); } return Result.ok().data(page.getRecords()).total(page.getTotal()); } @@ -366,7 +372,8 @@ baseMapper.getAuthorCollectVideoPage(page, query); for (WxVideoVO vo : page.getRecords()) { vo.setCoverUrl(cosUtil.getPreviewUrl(vo.getCoverFileKey())); - vo.setVideoUrl(cosUtil.getPreviewUrl(vo.getVideoUrl())); +// vo.setVideoUrl(cosUtil.getPreviewUrl(vo.getVideoFileKey())); + vo.setVideoUrl("https://videos.pexels.com/video-files/13602965/13602965-hd_1920_1080_30fps.mp4"); vo.setCollected(Boolean.TRUE); } return Result.ok().data(page.getRecords()).total(page.getTotal()); @@ -386,4 +393,26 @@ .update(); return Result.ok("淇濆瓨鎴愬姛"); } + + @Override + public Result wxDetail(String id) { + WxEditVideoVO vo = baseMapper.wxDetail(id); + if (Objects.isNull(vo)) { + return Result.error("瑙嗛涓嶅瓨鍦�"); + } + vo.setCoverUrl(cosUtil.getPreviewUrl(vo.getCoverFileKey())); +// vo.setVideoUrl(cosUtil.getPreviewUrl(vo.getVideoFileKey())); + vo.setVideoUrl("https://videos.pexels.com/video-files/13602965/13602965-hd_1920_1080_30fps.mp4"); + List<WxVideoTagForm> tags = videoTagRefService.getTagsByVideoIds(Arrays.asList(vo.getId())) + .stream() + .map(i -> { + WxVideoTagForm tag = new WxVideoTagForm(); + tag.setTagName(i.getTagName()); + tag.setId(i.getId()); + return tag; + }) + .collect(Collectors.toList()); + vo.setTags(tags); + return Result.ok().data(vo); + } } diff --git a/framework/src/main/resources/mapper/lmk/VideoMapper.xml b/framework/src/main/resources/mapper/lmk/VideoMapper.xml index 066d815..304943f 100644 --- a/framework/src/main/resources/mapper/lmk/VideoMapper.xml +++ b/framework/src/main/resources/mapper/lmk/VideoMapper.xml @@ -37,6 +37,7 @@ <result column="title" property="title" /> <result column="collect_num" property="collectNum" /> <result column="comment_num" property="commentNum" /> + <result column="status" property="status" /> </resultMap> @@ -253,7 +254,11 @@ lmk_video LV LEFT JOIN li_member LM ON LV.author_id = LM.id WHERE - LV.delete_flag = 0 AND LV.status = '1' AND LV.author_id = #{query.authorId} + LV.delete_flag = 0 + <if test="!query.authorSelf"> + AND LV.status = '1' + </if> + AND LV.author_id = #{query.authorId} ORDER BY LV.collect_num DESC </select> @@ -290,4 +295,42 @@ LMC.create_time DESC </select> + + <!-- 寰俊瑙嗛缂栬緫璇︽儏 --> + <resultMap id="WxEditResultMap" type="cn.lili.modules.lmk.domain.vo.WxEditVideoVO"> + <id column="id" property="id"/> + <result column="cover_url" property="coverFileKey" /> + <result column="video_file_key" property="videoFileKey" /> + <result column="video_fit" property="videoFit" /> + <result column="title" property="title" /> + <result column="video_duration" property="videoDuration" /> + <result column="goods_id" property="goodsId" /> + </resultMap> + + <select id="wxDetail" resultMap="WxEditResultMap"> + SELECT + LV.author_id, + LV.cover_url, + LV.video_fit, + LV.video_duration, + LV.video_file_key, + LV.title, + LV.goods_id, + LV.goods_view_num, + LV.goods_order_num, + LV.recommend, + LV.status, + LV.play_num, + LV.comment_num, + LV.collect_num, + LV.weight, + LV.audit_pass_time, + LV.update_time, + LV.id + FROM + lmk_video LV + WHERE + LV.delete_flag = 0 AND LV.id = #{id} + </select> + </mapper> -- Gitblit v1.8.0