From 3d7bdb31c73b4f88bfa989eefe5301b344f88b07 Mon Sep 17 00:00:00 2001 From: 康鲁杰 <60095866+KangLujie@users.noreply.github.com> Date: 星期一, 14 四月 2025 09:52:11 +0800 Subject: [PATCH] 排队和进度 --- yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/coursemedia/vo/CourseMediaRespVO.java | 3 + yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/coursemedia/CourseMediaServiceImpl.java | 54 ++++++++++++++++++++++++++- yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/dal/dataobject/coursemedia/CourseMediaDO.java | 9 ++-- yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/manager/MediaTaskManager.java | 3 + 4 files changed, 63 insertions(+), 6 deletions(-) diff --git a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/coursemedia/vo/CourseMediaRespVO.java b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/coursemedia/vo/CourseMediaRespVO.java index bb7091f..caa2e83 100644 --- a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/coursemedia/vo/CourseMediaRespVO.java +++ b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/coursemedia/vo/CourseMediaRespVO.java @@ -2,6 +2,7 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -83,4 +84,6 @@ private String videoUrl; @Schema(description = "瀛楀箷璇█") private String lang; + private Integer pos; + private String progressVideo; } diff --git a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/dal/dataobject/coursemedia/CourseMediaDO.java b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/dal/dataobject/coursemedia/CourseMediaDO.java index af57fc8..761563d 100644 --- a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/dal/dataobject/coursemedia/CourseMediaDO.java +++ b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/dal/dataobject/coursemedia/CourseMediaDO.java @@ -2,10 +2,7 @@ import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import cn.iocoder.yudao.module.digitalcourse.dal.dataobject.voices.AuditionVO; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import lombok.*; /** @@ -98,4 +95,8 @@ private Integer subtitlesAddStatus; private String videoUrl; private String lang; + @TableField(exist = false) + private Integer pos; + @TableField(exist = false) + private String progressVideo; } diff --git a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/manager/MediaTaskManager.java b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/manager/MediaTaskManager.java index 5cfd878..6ec2774 100644 --- a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/manager/MediaTaskManager.java +++ b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/manager/MediaTaskManager.java @@ -72,6 +72,9 @@ return -1; } + public int getQueueSize() { + return queue.size(); + } private void startWorker() { executor.submit(() -> { while (true) { diff --git a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/coursemedia/CourseMediaServiceImpl.java b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/coursemedia/CourseMediaServiceImpl.java index f69a99f..f460724 100644 --- a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/coursemedia/CourseMediaServiceImpl.java +++ b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/coursemedia/CourseMediaServiceImpl.java @@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.digitalcourse.dal.mysql.coursemedia.CourseMediaMapper; import cn.iocoder.yudao.module.digitalcourse.manager.MediaTaskManager; import cn.iocoder.yudao.module.digitalcourse.model.MediaTask; +import cn.iocoder.yudao.module.infra.api.config.ConfigApi; import com.alibaba.fastjson.JSON; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; @@ -19,6 +20,7 @@ import static cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants.BAD_REQUEST; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import java.io.File; import java.io.IOException; import java.time.LocalDateTime; @@ -80,9 +82,57 @@ @Override public PageResult<CourseMediaDO> getCourseMediaPage(CourseMediaPageReqVO pageReqVO) { - return courseMediaMapper.selectPage(pageReqVO); - } + PageResult<CourseMediaDO> courseMediaDOPageResult = courseMediaMapper.selectPage(pageReqVO); + for (CourseMediaDO courseMediaDO : courseMediaDOPageResult.getList()) { + if (courseMediaDO.getStatus() == 1) { + //瑙嗛鍚堟垚涓� 鏌ヨ鎺掗槦鍜屽悎鎴愯繘搴� + Long id = courseMediaDO.getCourseId(); + int pos = mediaTaskManager.getQueuePosition(id); + if (pos == -1) { + //涓嶅湪闃熷垪涓紝璇存槑宸茬粡鍚堟垚瀹屾垚 + courseMediaDO.setStatus(3); + courseMediaMapper.updateById(courseMediaDO); + } + if (pos == 0) { + //姝e湪鍚堟垚涓� + String reqJson = courseMediaDO.getReqJson(); + CourseMediaMegerVO courseMediaMegerVO = JSON.parseObject(reqJson, CourseMediaMegerVO.class); + int size = courseMediaMegerVO.getScenes().size(); + String s = configApi.getConfigValueByKey(HEYGEM_FACE2FACE) + "/temp/"; + //鏌ヨs涓嬮潰鐨勬枃浠� + File folder = new File(s); + int count = 0; + if (folder.exists() && folder.isDirectory()) { + File[] files = folder.listFiles(); + if (files != null) { + for (File file : files) { + if (file.isFile() && file.getName().endsWith("-r.mp4")) { + count++; + System.out.println("鍖归厤鏂囦欢: " + file.getName()); + } + } + } + System.out.println("鎬昏鍖归厤 -r.mp4 鏂囦欢鏁伴噺: " + count); + } else { + System.out.println("璺緞涓嶅瓨鍦ㄦ垨涓嶆槸鐩綍"); + } + if (count+1>size){ + courseMediaDO.setProgressVideo((count) + "/" + size); + }else{ + courseMediaDO.setProgressVideo((count+1)+"/"+size); + + } + } + courseMediaDO.setPos(pos); + } + + } + return courseMediaDOPageResult; + } + private static final String HEYGEM_FACE2FACE = "heygem.face2face"; + @Resource + private ConfigApi configApi; @Override public CommonResult megerMedia(CourseMediaMegerVO updateReqVO) { Long id = updateReqVO.getId(); -- Gitblit v1.9.3