xiangpei
7 天以前 cc1bab39263e90069ccef7139f71b2a4061780d1
framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java
@@ -3,8 +3,7 @@
import cn.lili.common.security.context.UserContext;
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.query.*;
import cn.lili.modules.lmk.domain.vo.*;
import cn.lili.modules.lmk.enums.general.*;
import cn.lili.modules.lmk.service.*;
@@ -17,10 +16,10 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import cn.lili.modules.lmk.mapper.VideoMapper;
import cn.lili.base.Result;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.lili.modules.lmk.domain.query.VideoQuery;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils;
@@ -55,6 +54,7 @@
    private final MySubscribeService mySubscribeService;
    private final MemberService memberService;
    private final VideoAccountService videoAccountService;
    private final KitchenVideoTypeRefService kitchenVideoTypeRefService;
    private final VideoGoodsService videoGoodsService;
@@ -216,7 +216,7 @@
        if (page.getTotal() > 0) {
            Map<String, List<SimpleVideoTagVO>> tagMap = videoTagRefService.getTagsByVideoIds(
                    page.getRecords().stream().map(VideoVO::getId).collect(Collectors.toList())
            ).stream().collect(Collectors.groupingBy(SimpleVideoTagVO::getVideoId));;
            ).stream().collect(Collectors.groupingBy(SimpleVideoTagVO::getVideoId));
            // 3. 获取视频临时访问地址、设置视频标签
            page.getRecords().forEach(v -> {
                v.setTagList(tagMap.get(v.getId()));
@@ -314,7 +314,6 @@
            List<String> subscribes = mySubscribeService.getSubscribesByUserId(UserContext.getCurrentUserId());
            // 3. 获取视频临时访问地址、设置视频标签、我是否收藏、作者是否关注
            page.getRecords().forEach(v -> {
                v.setGoods(new VideoGoodsVO());
                v.setTagList(tagMap.get(v.getId()));
                v.setCollected(CollectionUtils.isNotEmpty(collectMap.get(v.getId())));
                if (VideoContentTypeEnum.VIDEO.getValue().equals(v.getVideoContentType())) {
@@ -404,6 +403,12 @@
    }
    @Override
    public Result getGoodsDetail(String videoId) {
        List<VideoGoodsDetailVO> goodsList = baseMapper.getVideoGoods(videoId);
        return Result.ok().data(goodsList);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Result homePageInfoEdit(VideoHomePageInfoForm form) {
        new LambdaUpdateChainWrapper<>(memberService.getBaseMapper())
@@ -439,4 +444,148 @@
        vo.setTags(tags);
        return Result.ok().data(vo);
    }
    @Override
    public Result healthVideo(HealthVideoForm form) {
        Video video = new Video();
        BeanUtils.copyProperties(form, video);
        video.setAuthorId(UserContext.getCurrentUserId());
        video.setVideoType(VideoTypeEnum.HEALTH.getValue());
        //设置填充模式 保持比例,完整显示
        video.setVideoFit("contain");
        video.setVideoContentType(VideoContentTypeEnum.VIDEO.getValue());
        video.setStatus(VideoStatusEnum.PUBLISHED.getValue());
        baseMapper.insert(video);
        return Result.ok("添加成功");
    }
    @Override
    public Result healthPage(HealthVideoQuery query) {
        IPage<VideoVO> page = PageUtil.getPage(query, VideoVO.class);
        // 1. 先查出视频信息
        baseMapper.healthPage(page, query);
        // 2. 单独查出标签信息
        if (page.getTotal() > 0) {
            Map<String, List<SimpleVideoTagVO>> tagMap = videoTagRefService.getTagsByVideoIds(
                    page.getRecords().stream().map(VideoVO::getId).collect(Collectors.toList())
            ).stream().collect(Collectors.groupingBy(SimpleVideoTagVO::getVideoId));;
            // 3. 获取视频临时访问地址、设置视频标签
            page.getRecords().forEach(v -> {
                v.setTagList(tagMap.get(v.getId()));
                v.setVideoUrl(cosUtil.getPreviewUrl(v.getVideoFileKey()));
                v.setCoverShowUrl(cosUtil.getPreviewUrl(v.getCoverUrl()));
            });
        }
        return Result.ok().data(page.getRecords()).total(page.getTotal());
    }
    @Override
    public Result updateHealthVideo(HealthVideoForm form) {
        Video entity = baseMapper.selectById(form.getId());
        Assert.notNull(entity, "记录不存在");
        BeanUtils.copyProperties(form, entity);
        baseMapper.updateById(entity);
        return Result.ok("修改成功");
    }
    @Override
    public Result delHealth(String id) {
        Video entity = baseMapper.selectById(id);
        Assert.notNull(entity, "记录不存在");
        String videoType = entity.getVideoType();
        if (!VideoTypeEnum.HEALTH.getValue().equals(videoType)) {
            log.error("删除非大健康视频视频id为------->"+id);
            return Result.error("删除失败");
        }
        baseMapper.deleteById(id);
        return Result.ok("删除成功");
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Result addKitchenVideo(KitchenVideoForm form) {
        Video video = new Video();
        BeanUtils.copyProperties(form, video);
        video.setAuthorId(UserContext.getCurrentUserId());
        video.setVideoType(VideoTypeEnum.COOK.getValue());
        //设置填充模式 保持比例,完整显示
        video.setVideoFit("contain");
        video.setVideoContentType(VideoContentTypeEnum.VIDEO.getValue());
        video.setStatus(VideoStatusEnum.PUBLISHED.getValue());
        baseMapper.insert(video);
        String id = video.getId();
        List<KitchenVideoTypeRef> collect = form.getCheckKitchenType().stream().map(item -> {
                    KitchenVideoTypeRef kitchenVideoTypeRef = new KitchenVideoTypeRef();
                    //设置视频id
                    kitchenVideoTypeRef.setVideoId(id);
                    //设置标签id
                    kitchenVideoTypeRef.setKitchenTypeId(item);
                    return kitchenVideoTypeRef;
                }
        ).collect(Collectors.toList());
        kitchenVideoTypeRefService.saveBatch(collect);
        return Result.ok("添加成功");
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Result updateKitchenVideo(KitchenVideoForm form) {
        Video video = baseMapper.selectById(form.getId());
        Assert.notNull(video, "记录不存在");
        BeanUtils.copyProperties(form, video);
        baseMapper.updateById(video);
        //删除原来的类型关系
        kitchenVideoTypeRefService.remove(Wrappers.<KitchenVideoTypeRef>lambdaQuery()
                .eq(KitchenVideoTypeRef::getVideoId, form.getId()));
        String id = video.getId();
        List<KitchenVideoTypeRef> collect = form.getCheckKitchenType().stream().map(item -> {
                    KitchenVideoTypeRef kitchenVideoTypeRef = new KitchenVideoTypeRef();
                    //设置视频id
                    kitchenVideoTypeRef.setVideoId(id);
                    //设置标签id
                    kitchenVideoTypeRef.setKitchenTypeId(item);
                    return kitchenVideoTypeRef;
                }
        ).collect(Collectors.toList());
        kitchenVideoTypeRefService.saveBatch(collect);
        return Result.ok("修改成功");
    }
    @Override
    public Result KitchenVideoQuery(KitchenVideoQuery query) {
        IPage<KitchenVideoVO> page = PageUtil.getPage(query, KitchenVideoVO.class);
        // 1. 先查出视频信息
        baseMapper.kitchenPage(page, query);
        // 2. 单独查出标签信息
        if (page.getTotal() > 0) {
            Map<String, List<KitchenVideoTypeVO>> typeMap = kitchenVideoTypeRefService
                    .getTypeByVideoIds(
                            page.getRecords()
                                    .stream().map(KitchenVideoVO::getId).collect(Collectors.toList()))
                    .stream().collect(Collectors.groupingBy(KitchenVideoTypeVO::getVideoId));
            // 3. 获取视频临时访问地址、设置视频标签
            page.getRecords().forEach(v -> {
                v.setTypeList(typeMap.get(v.getId()));
                v.setVideoUrl(cosUtil.getPreviewUrl(v.getVideoFileKey()));
                v.setCoverShowUrl(cosUtil.getPreviewUrl(v.getCoverUrl()));
            });
        }
        return Result.ok().data(page.getRecords()).total(page.getTotal());
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Result delKitchen(String id) {
        Video entity = baseMapper.selectById(id);
        Assert.notNull(entity, "记录不存在");
        String videoType = entity.getVideoType();
        if (!VideoTypeEnum.COOK.getValue().equals(videoType)) {
            log.error("删除非大神厨视频视频id为------->"+id);
            return Result.error("删除失败");
        }
        baseMapper.deleteById(id);
        kitchenVideoTypeRefService.remove(Wrappers.<KitchenVideoTypeRef>lambdaQuery()
                .eq(KitchenVideoTypeRef::getVideoId, id));
        return Result.ok("删除成功");
    }
}