From cf25acecf27ab3f7bd1511e11cdeecccbad8f196 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期四, 22 五月 2025 11:28:54 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev
---
framework/src/main/java/cn/lili/modules/lmk/service/impl/VideoServiceImpl.java | 100 ++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 92 insertions(+), 8 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 f2f75a8..b6a53a8 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
@@ -1,20 +1,24 @@
package cn.lili.modules.lmk.service.impl;
import cn.lili.common.security.context.UserContext;
-import cn.lili.modules.lmk.domain.entity.LmkFile;
+import cn.lili.modules.lmk.domain.entity.VideoAuditRecord;
import cn.lili.modules.lmk.domain.entity.VideoTag;
import cn.lili.modules.lmk.domain.entity.VideoTagRef;
+import cn.lili.modules.lmk.domain.form.VideoAuditingForm;
+import cn.lili.modules.lmk.domain.form.VideoDownForm;
+import cn.lili.modules.lmk.domain.form.VideoRecommendForm;
+import cn.lili.modules.lmk.domain.query.ManagerVideoQuery;
+import cn.lili.modules.lmk.domain.vo.SimpleVideoTagVO;
import cn.lili.modules.lmk.enums.general.TagCreateTypeEnum;
import cn.lili.modules.lmk.enums.general.VideoStatusEnum;
-import cn.lili.modules.lmk.service.LmkFileService;
-import cn.lili.modules.lmk.service.VideoTagRefService;
-import cn.lili.modules.lmk.service.VideoTagService;
+import cn.lili.modules.lmk.service.*;
+import cn.lili.utils.COSUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import cn.lili.modules.lmk.domain.entity.Video;
import cn.lili.modules.lmk.mapper.VideoMapper;
-import cn.lili.modules.lmk.service.VideoService;
import cn.lili.base.Result;
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.form.VideoForm;
import cn.lili.modules.lmk.domain.vo.VideoVO;
@@ -27,8 +31,7 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -45,6 +48,8 @@
private final VideoTagService videoTagService;
private final VideoTagRefService videoTagRefService;
private final LmkFileService lmkFileService;
+ private final VideoAuditRecordService videoAuditRecordService;
+ private final COSUtil cosUtil;
/**
* 娣诲姞
@@ -114,9 +119,12 @@
* @return
*/
@Override
- public Result detail(Integer id) {
+ public Result detail(String id) {
VideoVO vo = baseMapper.getById(id);
Assert.notNull(vo, "璁板綍涓嶅瓨鍦�");
+ List<SimpleVideoTagVO> tags = videoTagRefService.getTagsByVideoIds(Arrays.asList(id));
+ vo.setTagList(tags);
+ vo.setVideoUrl(cosUtil.getPreviewUrl(vo.getVideoFileKey()));
return Result.ok().data(vo);
}
@@ -168,4 +176,80 @@
lmkFileService.addByForm(form.getFileInfo());
return Result.ok("鍙戝竷鎴愬姛锛岃棰戝鏍镐腑~");
}
+
+
+ @Override
+ public Result managerPage(ManagerVideoQuery query) {
+ IPage<VideoVO> page = PageUtil.getPage(query, VideoVO.class);
+ // 1. 鍏堟煡鍑鸿棰戜俊鎭�
+ baseMapper.managerPage(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()));
+ });
+ }
+ return Result.ok().data(page.getRecords()).total(page.getTotal());
+ }
+
+ @Override
+ public Result recommendSet(VideoRecommendForm form) {
+ new LambdaUpdateChainWrapper<>(baseMapper)
+ .eq(Video::getId, form.getId())
+ .set(Video::getRecommend, form.getRecommend())
+ .update();
+ return Result.ok("璁剧疆鎴愬姛");
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Result auditing(VideoAuditingForm form) {
+ Video video = baseMapper.selectById(form.getId());
+ if (Objects.isNull(video)) {
+ throw new RuntimeException("瑙嗛涓嶅瓨鍦�");
+ }
+ // 1. 娣诲姞瀹℃牳璁板綍
+ VideoAuditRecord auditRecord = new VideoAuditRecord();
+ auditRecord.setVideoId(form.getId());
+ auditRecord.setAuditSuccess(form.getResult());
+ if (!form.getResult()) {
+ auditRecord.setEditSuggestion(form.getReason());
+ }
+ videoAuditRecordService.save(auditRecord);
+ // 2. 淇敼瑙嗛鐘舵��
+ if (form.getResult()) {
+ video.setStatus(VideoStatusEnum.PUBLISHED.getValue());
+ video.setAuditPassTime(new Date());
+ } else {
+ video.setStatus(VideoStatusEnum.REJECT.getValue());
+ }
+ baseMapper.updateById(video);
+ return Result.ok();
+ }
+
+
+ @Override
+ public Result up(String id) {
+ new LambdaUpdateChainWrapper<>(baseMapper)
+ .eq(Video::getId, id)
+ .set(Video::getStatus, VideoStatusEnum.PUBLISHED.getValue())
+ .update();
+ return Result.ok("涓婃灦鎴愬姛");
+ }
+
+
+ @Override
+ public Result down(VideoDownForm form) {
+ new LambdaUpdateChainWrapper<>(baseMapper)
+ .eq(Video::getId, form.getId())
+ .set(Video::getStatus, VideoStatusEnum.DISABLE.getValue())
+ .update();
+ // TODO 灏嗕笅鏋跺師鍥犱互閫氱煡鐨勬柟寮忓憡鐭ョ敤鎴�
+ return Result.ok("涓嬫灦鎴愬姛");
+ }
}
--
Gitblit v1.8.0