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