From baa730b5518b5f73c14d0af5868641299b3fe2e4 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期四, 12 六月 2025 19:56:36 +0800
Subject: [PATCH] 视频图片处理

---
 framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java |  113 ++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 92 insertions(+), 21 deletions(-)

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 e712108..74b939e 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
@@ -1,23 +1,20 @@
 package cn.lili.modules.lmk.service.impl;
 
-import cn.lili.base.AbsQuery;
 import cn.lili.common.security.context.UserContext;
-import cn.lili.modules.lmk.domain.entity.VideoAuditRecord;
-import cn.lili.modules.lmk.domain.entity.VideoTag;
-import cn.lili.modules.lmk.domain.entity.VideoTagRef;
+import cn.lili.modules.lmk.domain.entity.*;
 import cn.lili.modules.lmk.domain.form.*;
 import cn.lili.modules.lmk.domain.query.AuthorVideoQuery;
 import cn.lili.modules.lmk.domain.query.ManagerVideoQuery;
 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.ViewTypeEnum;
+import cn.lili.modules.lmk.enums.general.*;
 import cn.lili.modules.lmk.service.*;
 import cn.lili.modules.member.entity.dos.FootPrint;
+import cn.lili.modules.member.entity.dos.Member;
 import cn.lili.modules.member.service.FootprintService;
+import cn.lili.modules.member.service.MemberService;
 import cn.lili.utils.COSUtil;
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import cn.lili.modules.lmk.domain.entity.Video;
 import cn.lili.modules.lmk.mapper.VideoMapper;
 import cn.lili.base.Result;
 import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
@@ -56,6 +53,9 @@
     private final COSUtil cosUtil;
     private final FootprintService footprintService;
     private final MySubscribeService mySubscribeService;
+    private final MemberService memberService;
+    private final VideoAccountService videoAccountService;
+
 
     /**
      * 娣诲姞
@@ -63,8 +63,8 @@
      * @return
      */
     @Override
-    public Result add(VideoForm form) {
-        Video entity = VideoForm.getEntityByForm(form, null);
+    public Result add(WxVideoForm form) {
+        Video entity = WxVideoForm.getEntityByForm(form, null);
         baseMapper.insert(entity);
         return Result.ok("娣诲姞鎴愬姛");
     }
@@ -75,7 +75,7 @@
      * @return
      */
     @Override
-    public Result update(VideoForm form) {
+    public Result update(WxVideoForm form) {
         Video entity = baseMapper.selectById(form.getId());
 
         // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊
@@ -130,7 +130,11 @@
         Assert.notNull(vo, "璁板綍涓嶅瓨鍦�");
         List<SimpleVideoTagVO> tags = videoTagRefService.getTagsByVideoIds(Arrays.asList(id));
         vo.setTagList(tags);
-        vo.setVideoUrl(cosUtil.getPreviewUrl(vo.getVideoFileKey()));
+        if (VideoContentTypeEnum.VIDEO.getValue().equals(vo.getVideoContentType())) {
+            vo.setVideoUrl(cosUtil.getPreviewUrl(vo.getVideoFileKey()));
+        } else if (VideoContentTypeEnum.IMG.getValue().equals(vo.getVideoContentType()) && StringUtils.isNotBlank(vo.getVideoImgs())) {
+            vo.setImgs(JSON.parseArray(vo.getVideoImgs(), String.class).stream().map(fileKey -> cosUtil.getPreviewUrl(fileKey)).collect(Collectors.toList()));
+        }
         return Result.ok().data(vo);
     }
 
@@ -149,12 +153,16 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Result publish(VideoForm form) {
+    public Result publish(WxVideoForm form) {
         // 1.淇濆瓨瑙嗛
-        Video video = VideoForm.getEntityByForm(form, null);
+        Video video = WxVideoForm.getEntityByForm(form, null);
         video.setAuthorId(UserContext.getCurrentUserId());
         video.setStatus(VideoStatusEnum.AUDITING.getValue());
         video.setCoverUrl(form.getCover());
+        video.setVideoType(VideoTypeEnum.VIDEO.getValue());
+        if (VideoContentTypeEnum.IMG.getValue().equals(form.getVideoContentType())) {
+            video.setVideoImgs(JSON.toJSONString(form.getVideoImgs()));
+        }
         baseMapper.insert(video);
         // 2.澶勭悊鏍囩
         List<VideoTagRef> videoTagRefs = form.getTags().stream().map(tag -> {
@@ -261,10 +269,26 @@
     }
 
     @Override
-    public Result recommendVideo(AbsQuery query) {
+    public Result recommendVideo(VideoQuery query) {
         // 鎺ㄨ崘绠楁硶锛� 1. 鏍规嵁鐢ㄦ埛鐨勬敹钘忚棰戠殑鏍囩  2. 鏍规嵁鐢ㄦ埛鍏虫敞鐨勪綔鑰呯殑鍏跺畠瑙嗛  3. 鏍规嵁鐢ㄦ埛鐨勮鐪嬭褰曪紙瑙傜湅鏃堕暱杈冮暱鐨勩�侀噸澶嶈鐪嬫鏁拌緝澶氱殑锛� 4. 鍩轰簬鐩镐技鐢ㄦ埛鐨勮鐪嬭涓烘潵缁欒鐢ㄦ埛鎺ㄨ崘
         IPage<WxVideoVO> page = PageUtil.getPage(query, WxVideoVO.class);
-        baseMapper.recommendVideo(page);
+        switch (query.getVideoFrom()) {
+            case "recommend":
+                baseMapper.recommendVideo(page, query);
+                break;
+            case "author":
+                AuthorVideoQuery query1 = new AuthorVideoQuery();
+                query1.setAuthorId(query.getAuthorId());
+                baseMapper.getAuthorVideoPage(page, query1);
+                break;
+            case "collect":
+                AuthorVideoQuery query2 = new AuthorVideoQuery();
+                query2.setAuthorId(query.getAuthorId());
+                baseMapper.getAuthorCollectVideoPage(page, query2);
+                break;
+            default:
+                break;
+        }
         if (page.getTotal() > 0) {
             List<String> videoIds = page.getRecords().stream().map(WxVideoVO::getId).collect(Collectors.toList());
             Map<String, List<SimpleVideoTagVO>> tagMap = videoTagRefService.getTagsByVideoIds(videoIds)
@@ -279,7 +303,13 @@
                 v.setGoods(new VideoGoodsVO());
                 v.setTagList(tagMap.get(v.getId()));
                 v.setCollected(CollectionUtils.isNotEmpty(collectMap.get(v.getId())));
-                v.setVideoUrl(cosUtil.getPreviewUrl(v.getVideoFileKey()));
+                if (VideoContentTypeEnum.VIDEO.getValue().equals(v.getVideoContentType())) {
+                    //                v.setVideoUrl(cosUtil.getPreviewUrl(v.getVideoFileKey()));
+                    v.setVideoUrl("https://videos.pexels.com/video-files/13602965/13602965-hd_1920_1080_30fps.mp4");
+                } else if (VideoContentTypeEnum.IMG.getValue().equals(v.getVideoContentType()) && StringUtils.isNotBlank(v.getVideoImgs())) {
+                    v.setImgs(JSON.parseArray(v.getVideoImgs(), String.class).stream().map(fileKey -> cosUtil.getPreviewUrl(fileKey)).collect(Collectors.toList()));
+                }
+                v.setCoverUrl(cosUtil.getPreviewUrl(v.getCoverFileKey()));
                 v.setSubscribeThisAuthor(subscribes.contains(v.getAuthorId()));
             });
         }
@@ -335,10 +365,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.getCoverUrl()));
-            vo.setVideoUrl(cosUtil.getPreviewUrl(vo.getVideoUrl()));
+            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");
+            vo.setOptions(VideoSupportOpEnum.getVideoOpByStatus(vo.getStatus()));
         }
         return Result.ok().data(page.getRecords()).total(page.getTotal());
     }
@@ -348,10 +381,48 @@
         IPage<WxVideoVO> page = PageUtil.getPage(query, WxVideoVO.class);
         baseMapper.getAuthorCollectVideoPage(page, query);
         for (WxVideoVO vo : page.getRecords()) {
-            vo.setCoverUrl(cosUtil.getPreviewUrl(vo.getCoverUrl()));
-            vo.setVideoUrl(cosUtil.getPreviewUrl(vo.getVideoUrl()));
+            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");
             vo.setCollected(Boolean.TRUE);
         }
         return Result.ok().data(page.getRecords()).total(page.getTotal());
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Result homePageInfoEdit(VideoHomePageInfoForm form) {
+        new LambdaUpdateChainWrapper<>(memberService.getBaseMapper())
+                .eq(Member::getId, UserContext.getCurrentUserId())
+                .set(Member::getNickName, form.getNickName())
+                .set(Member::getFace, form.getAvatar())
+                .update();
+        new LambdaUpdateChainWrapper<>(videoAccountService.getBaseMapper())
+                .eq(VideoAccount::getUserId, UserContext.getCurrentUserId())
+                .set(VideoAccount::getMotto, form.getMotto())
+                .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);
+    }
 }

--
Gitblit v1.8.0