From 8065107726ad1fc13591c9bc47819207948bc45c Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期日, 15 六月 2025 19:28:55 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java | 150 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 147 insertions(+), 3 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 4a4448c..4b5cbe6 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 @@ -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; @@ -439,4 +439,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("鍒犻櫎鎴愬姛"); + } } -- Gitblit v1.8.0