From 13faa6b31d14566d7505b4feb8b5742cc681fcf6 Mon Sep 17 00:00:00 2001
From: peng <peng.com>
Date: 星期三, 23 七月 2025 17:55:13 +0800
Subject: [PATCH] 后台发布视频

---
 framework/src/main/java/cn/lili/modules/store/serviceimpl/FreightTemplateServiceImpl.java |    1 
 manager-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            |   75 +++++++++++++++++++++++++++++++++++++
 framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoTagServiceImpl.java         |    2 +
 manager-api/src/main/java/cn/lili/controller/lmk/VideoTagController.java                  |   17 ++++++++
 6 files changed, 106 insertions(+), 3 deletions(-)

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 95b6784..71b4f53 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
@@ -62,7 +62,13 @@
      * @param form
      * @return
      */
-    Result publish(WxVideoForm form);
+    Result publish(WxVideoForm form);    /**
+     * 鍙戝竷瑙嗛
+     *
+     * @param form
+     * @return
+     */
+    Result systemPublish(WxVideoForm form);
 
     /**
      * 骞冲彴绔棰戝垎椤�
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 204b995..da35abc 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
@@ -247,6 +247,81 @@
         String destination = rocketmqCustomProperties.getVideoTopic() + ":" + VideoTagsEnum.ES_DOC_ADD_OR_UPDATE.name();
         rocketMQTemplate.asyncSend(destination, JSON.toJSONString(videoIndex), RocketmqSendCallbackBuilder.commonCallback());
         return Result.ok("鍙戝竷鎴愬姛锛岃棰戝鏍镐腑~");
+    }    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Result systemPublish(WxVideoForm form) {
+        // 1.淇濆瓨瑙嗛
+        Video video = WxVideoForm.getEntityByForm(form, null);
+        video.setAuthorId(UserContext.getCurrentUserId());
+        video.setStatus(VideoStatusEnum.PUBLISHED.getValue());
+        video.setCoverUrl(form.getCover());
+        video.setVideoType(VideoTypeEnum.VIDEO.getValue());
+        video.setRecommend(Boolean.FALSE);
+        if (VideoContentTypeEnum.IMG.getValue().equals(form.getVideoContentType())) {
+            video.setVideoImgs(JSON.toJSONString(form.getVideoImgs()));
+        }
+        baseMapper.insert(video);
+        // 2.澶勭悊鏍囩
+        List<SimpleVideoTagVO> esTagList = new ArrayList<>(2);
+        List<VideoTagRef> videoTagRefs = form.getTags().stream().map(tag -> {
+            VideoTagRef videoTagRef = new VideoTagRef();
+            videoTagRef.setVideoId(video.getId());
+            if (StringUtils.isBlank(tag.getId())) {
+                VideoTag videoTag = new LambdaQueryChainWrapper<>(videoTagService.getBaseMapper())
+                        .eq(VideoTag::getTagName, tag.getTagName())
+                        .one();
+                if (Objects.nonNull(videoTag)) {
+                    videoTagRef.setVideoTagId(videoTag.getId());
+                } else {
+                    videoTag = new VideoTag();
+                    videoTag.setTagName(tag.getTagName());
+                    videoTag.setCreateType(TagCreateTypeEnum.SYSTEM.getValue());
+                    videoTagService.save(videoTag);
+                    videoTagRef.setVideoTagId(videoTag.getId());
+                }
+            } else {
+                videoTagRef.setVideoTagId(tag.getId());
+            }
+            SimpleVideoTagVO esTag = new SimpleVideoTagVO();
+            esTag.setVideoId(video.getId());
+            esTag.setTagName(tag.getTagName());
+            esTag.setId(tag.getId());
+            esTagList.add(esTag);
+            return videoTagRef;
+        }).collect(Collectors.toList());
+        videoTagRefService.saveBatch(videoTagRefs);
+        // 3. 淇濆瓨瑙嗛鏂囦欢淇℃伅
+        lmkFileService.addByForm(form.getFileInfo());
+        // 4. 澶勭悊閫夋嫨鐨勫晢鍝�
+        List<VideoGoods> videoGoods = new ArrayList<>(2);
+        if (CollectionUtils.isNotEmpty(form.getGoodsList())) {
+            for (int i = 0; i < form.getGoodsList().size(); i++) {
+                VideoGoods e = new VideoGoods();
+                e.setVideoId(video.getId());
+                e.setGoodsId(form.getGoodsList().get(i).getGoodsId());
+                e.setGoodsSkuId(form.getGoodsList().get(i).getGoodsSkuId());
+                e.setGoodsNum(form.getGoodsList().get(i).getGoodsNum());
+                e.setOrderNum(i);
+                videoGoodsService.save(e);
+            }
+            videoGoodsService.saveBatch(videoGoods);
+        }
+        // 5. 鏋勫缓es涓暟鎹紝mq寮傛澶勭悊
+        VideoIndex videoIndex = new VideoIndex();
+        BeanUtils.copyProperties(video, videoIndex);
+        videoIndex.setAuthorName(UserContext.getCurrentUser().getNickName());
+        videoIndex.setAuthorAvatar(UserContext.getCurrentUser().getFace());
+        videoIndex.setCoverFileKey(video.getCoverUrl());
+        List<VideoGoodsDetailVO> esGoodsList = videoGoods.stream().map(goods -> {
+            VideoGoodsDetailVO vo = new VideoGoodsDetailVO();
+            BeanUtils.copyProperties(goods, vo);
+            return vo;
+        }).collect(Collectors.toList());
+        videoIndex.setGoodsList(esGoodsList);
+        videoIndex.setTagList(esTagList);
+        String destination = rocketmqCustomProperties.getVideoTopic() + ":" + VideoTagsEnum.ES_DOC_ADD_OR_UPDATE.name();
+        rocketMQTemplate.asyncSend(destination, JSON.toJSONString(videoIndex), RocketmqSendCallbackBuilder.commonCallback());
+        return Result.ok("鍙戝竷鎴愬姛锛岃棰戝鏍镐腑~");
     }
 
     @Override
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoTagServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoTagServiceImpl.java
index 75a473a..480dce4 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoTagServiceImpl.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoTagServiceImpl.java
@@ -150,6 +150,7 @@
                         .list().stream().map(entity -> {
                             return WxVideoTagVO.getVoByEntity(entity, null);
                         }).collect(Collectors.toList());
+                break;
             case "SEARCH":
                 tags = new LambdaQueryChainWrapper<>(baseMapper)
                         .orderByDesc(VideoTag::getUseNum)
@@ -158,6 +159,7 @@
                         .list().stream().map(entity -> {
                             return WxVideoTagVO.getVoByEntity(entity, null);
                         }).collect(Collectors.toList());
+                break;
         }
         return Result.ok().data(tags);
     }
diff --git a/framework/src/main/java/cn/lili/modules/store/serviceimpl/FreightTemplateServiceImpl.java b/framework/src/main/java/cn/lili/modules/store/serviceimpl/FreightTemplateServiceImpl.java
index 7b4943b..42f560f 100644
--- a/framework/src/main/java/cn/lili/modules/store/serviceimpl/FreightTemplateServiceImpl.java
+++ b/framework/src/main/java/cn/lili/modules/store/serviceimpl/FreightTemplateServiceImpl.java
@@ -145,6 +145,7 @@
         List<FreightTemplateChild> list = new ArrayList<>();
         for (FreightTemplateChild freightTemplateChild : freightTemplateVO.getFreightTemplateChildList()) {
             freightTemplateChild.setFreightTemplateId(freightTemplate.getId());
+            freightTemplateChild.setId(null);
             list.add(freightTemplateChild);
         }
         //娣诲姞妯℃澘瀛愬唴瀹�
diff --git a/manager-api/src/main/java/cn/lili/controller/lmk/VideoController.java b/manager-api/src/main/java/cn/lili/controller/lmk/VideoController.java
index 364f2cd..44f6447 100644
--- a/manager-api/src/main/java/cn/lili/controller/lmk/VideoController.java
+++ b/manager-api/src/main/java/cn/lili/controller/lmk/VideoController.java
@@ -37,7 +37,11 @@
 
     @Qualifier("videoEsServiceImpl")
     private final EsService esService;
-
+    @PostMapping("/publish")
+    @ApiOperation(value = "鍙戝竷瑙嗛", notes = "鍙戝竷瑙嗛")
+    public Result publish(@RequestBody @Validated({Add.class}) WxVideoForm form) {
+        return videoService.systemPublish(form);
+    }
     @DeleteMapping("/{id}")
     @ApiOperation(value = "ID鍒犻櫎", notes = "ID鍒犻櫎")
     public Result removeById(@PathVariable("id") String id) {
diff --git a/manager-api/src/main/java/cn/lili/controller/lmk/VideoTagController.java b/manager-api/src/main/java/cn/lili/controller/lmk/VideoTagController.java
index 3c4c400..da5b57d 100644
--- a/manager-api/src/main/java/cn/lili/controller/lmk/VideoTagController.java
+++ b/manager-api/src/main/java/cn/lili/controller/lmk/VideoTagController.java
@@ -2,6 +2,11 @@
 
 import cn.lili.group.Update;
 import cn.lili.group.Add;
+import cn.lili.modules.lmk.domain.form.WxVideoForm;
+import cn.lili.modules.lmk.domain.query.VideoGoodsEsQuery;
+import cn.lili.modules.lmk.domain.query.WxVideoTagQuery;
+import cn.lili.modules.lmk.service.VideoService;
+import cn.lili.modules.search.service.EsGoodsSearchService;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.security.access.prepost.PreAuthorize;
 import lombok.RequiredArgsConstructor;
@@ -31,7 +36,17 @@
 public class VideoTagController {
 
     private final VideoTagService videoTagService;
-
+    private final EsGoodsSearchService goodsSearchService;
+    @GetMapping("/recommend")
+    @ApiOperation(value = "鎺ㄨ崘鏍囩", notes = "鎺ㄨ崘鏍囩")
+    public Result recommend(WxVideoTagQuery query) {
+        return videoTagService.recommend(query);
+    }
+    @ApiOperation(value = "鍟嗗搧鍒嗛〉-鍙戝竷瑙嗛鏃跺叧鑱斿晢鍝�")
+    @GetMapping("/video/es")
+    public Result videoGoodsEsPage(VideoGoodsEsQuery query) {
+        return goodsSearchService.videoGoodsEsPage(query);
+    }
     @PostMapping
     @ApiOperation(value = "娣诲姞", notes = "娣诲姞")
     public Result add(@RequestBody @Validated(Add.class) VideoTagForm form) {

--
Gitblit v1.8.0