From 3cba7c6a9c1a9df84bf5289c5a5815fe5eab2261 Mon Sep 17 00:00:00 2001
From: peng <peng.com>
Date: 星期四, 24 七月 2025 17:46:30 +0800
Subject: [PATCH] 修改视频推荐和礼品图片显示

---
 framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java |   90 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 89 insertions(+), 1 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 6273085..04a8b16 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
@@ -4,6 +4,7 @@
 import cn.lili.cache.CachePrefix;
 import cn.lili.common.properties.RocketmqCustomProperties;
 import cn.lili.common.security.context.UserContext;
+import cn.lili.common.utils.CommonUtil;
 import cn.lili.elasticsearch.EsSuffix;
 import cn.lili.modules.lmk.constant.RedisKeyExpireConstant;
 import cn.lili.modules.lmk.domain.dto.VideoEsUpdateDTO;
@@ -46,6 +47,7 @@
 import org.springframework.data.elasticsearch.core.SearchHits;
 import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
 import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import lombok.RequiredArgsConstructor;
 import cn.lili.utils.PageUtil;
@@ -54,6 +56,8 @@
 import org.springframework.util.Assert;
 
 import java.util.*;
+import java.util.concurrent.TimeUnit;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -201,6 +205,81 @@
                     videoTag = new VideoTag();
                     videoTag.setTagName(tag.getTagName());
                     videoTag.setCreateType(TagCreateTypeEnum.USER.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
+    @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());
                 }
@@ -472,6 +551,9 @@
         switch (query.getVideoFrom()) {
             case "recommend":// 鍔犺浇鎺ㄨ崘瑙嗛
                 baseMapper.recommendVideo(page, query);
+                //鎺ㄨ崘瑙嗛閲嶆柊鎺掑簭
+                List<WxVideoVO> records = page.getRecords();
+                Collections.shuffle(records);
                 break;
             case "author":  // 鍔犺浇瑙嗛涓婚〉鎴戝彂甯冪殑瑙嗛
                 AuthorVideoQuery query1 = new AuthorVideoQuery();
@@ -497,11 +579,17 @@
                 videoEsQuery.setPageNumber((int) query.getPageNumber());
                 videoEsQuery.setPageSize((int) query.getPageSize());
                 return this.esSearch(videoEsQuery);
-            case "goodsSimilarly":
+            case "goodsSimilarly": // 鎮寕鐩稿悓鍟嗗搧鐨勬帹鑽愯棰�
                 GoodsSimilarlyQuery goodsSimilarlyQuery = new GoodsSimilarlyQuery();
                 BeanUtils.copyProperties(query, goodsSimilarlyQuery);
                 baseMapper.goodsSimilarlyPage(page, goodsSimilarlyQuery);
                 break;
+            case "history":
+                VideoHistoryQuery videoHistoryQuery = new VideoHistoryQuery();
+                BeanUtils.copyProperties(query, videoHistoryQuery);
+                videoHistoryQuery.setUserId(UserContext.getCurrentUserId());
+                baseMapper.getHistoryPage(page, videoHistoryQuery);
+                break;
             default:
                 break;
         }

--
Gitblit v1.8.0