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