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