peng
3 天以前 13faa6b31d14566d7505b4feb8b5742cc681fcf6
后台发布视频
6个文件已修改
109 ■■■■■ 已修改文件
framework/src/main/java/cn/lili/modules/lmk/service/VideoService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoTagServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/store/serviceimpl/FreightTemplateServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manager-api/src/main/java/cn/lili/controller/lmk/VideoController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manager-api/src/main/java/cn/lili/controller/lmk/VideoTagController.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
    /**
     * 平台端视频分页
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
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);
    }
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);
        }
        //添加模板子内容
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) {
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) {