Browse Source

课程插件

dev
lihuangbin666 7 days ago
parent
commit
da999ba64b
  1. 24
      common/common-association/pom.xml
  2. 19
      common/common-association/src/main/java/apelet/association/plugin/course/courseFormPlugin.java
  3. 15
      common/common-association/src/main/java/apelet/association/plugin/courseCourseware/CourseCoursewareFromPlugin.java
  4. 64
      common/common-association/src/main/java/apelet/association/plugin/courseVideo/CourseVideoFormPlugin.java

24
common/common-association/pom.xml

@ -19,6 +19,16 @@
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv-platform</artifactId>
<version>1.5.13</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>apelet</groupId>-->
<!-- <artifactId>common-msg-notice</artifactId>-->
<!-- <version>1.0.0</version>-->
<!-- </dependency>-->
<dependency>
<groupId>apelet</groupId> <groupId>apelet</groupId>
<artifactId>common-core</artifactId> <artifactId>common-core</artifactId>
<version>1.0.0</version> <version>1.0.0</version>
@ -39,7 +49,19 @@
<groupId>apelet</groupId> <groupId>apelet</groupId>
<version>1.0.0</version> <version>1.0.0</version>
</dependency> </dependency>
<dependency>
<groupId>apelet</groupId>
<artifactId>common-core</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>apelet</groupId>
<artifactId>common-core</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies> </dependencies>
</project> </project>

19
common/common-association/src/main/java/apelet/association/plugin/course/courseFormPlugin.java

@ -0,0 +1,19 @@
package apelet.association.plugin.course;
import apelet.common.core.object.ObjectValue;
import apelet.common.online.abstractplugin.ExecutePluginParent;
import apelet.common.online.model.constant.AttributeEnum;
public class courseFormPlugin extends ExecutePluginParent
{
@Override
public void formCreated(String widgetVariableName, ObjectValue objectValue) {
super.formCreated(widgetVariableName, objectValue);
if(objectValue.get("isEnabled") == null){
this.setWidgetAttribute("isEnabled", AttributeEnum.VALUE_CHANGE,0);
}
if(objectValue.get("faceCapture") == null){
this.setWidgetAttribute("faceCapture", AttributeEnum.VALUE_CHANGE,0);
}
}
}

15
common/common-association/src/main/java/apelet/association/plugin/courseCourseware/CourseCoursewareFromPlugin.java

@ -0,0 +1,15 @@
package apelet.association.plugin.courseCourseware;
import apelet.common.core.object.ObjectValue;
import apelet.common.online.abstractplugin.ExecutePluginParent;
import apelet.common.online.model.constant.AttributeEnum;
public class CourseCoursewareFromPlugin extends ExecutePluginParent{
@Override
public void formCreated(String widgetVariableName, ObjectValue objectValue) {
super.formCreated(widgetVariableName, objectValue);
if(objectValue.get("isSeqLock") == null){
this.setWidgetAttribute("isSeqLock", AttributeEnum.VALUE_CHANGE,0);
}
}
}

64
common/common-association/src/main/java/apelet/association/plugin/courseVideo/CourseVideoFormPlugin.java

@ -0,0 +1,64 @@
package apelet.association.plugin.courseVideo;
import apelet.common.core.object.ObjectValue;
import apelet.common.online.abstractplugin.ExecutePluginParent;
import apelet.common.online.model.constant.AttributeEnum;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.bytedeco.javacv.FFmpegFrameGrabber;
import java.io.File;
import java.net.URL;
public class CourseVideoFormPlugin extends ExecutePluginParent {
@Override
public void formCreated(String widgetVariableName, ObjectValue objectValue) {
super.formCreated(widgetVariableName, objectValue);
}
@Override
public void uploadSuccess(String widgetVariableName, ObjectValue objectValue) {
super.uploadSuccess(widgetVariableName, objectValue);
Object fileName = objectValue.get("file_name");
if (fileName != null) {
JSONArray fileJson = JSON.parseArray(fileName.toString());
if (!fileJson.isEmpty()) {
this.setWidgetAttribute("fileName", AttributeEnum.DISABLED, true);
}
JSONObject item = fileJson.getJSONObject(0);
String realName = item.getString("fileRealName");
String fullFilePath = item.getString("uploadPath") + "/" + item.getString("filename");
File file = new File(fullFilePath);
long durationSec = 0;
FFmpegFrameGrabber grabber = null;
try {
// 核心:直接传入字符串,自动识别本地文件 / 网络URL
grabber = new FFmpegFrameGrabber(fullFilePath);
grabber.start();
// 微秒 → 毫秒 → 秒
long totalMicroSeconds = grabber.getLengthInTime();
long totalMs = totalMicroSeconds / 1000;
durationSec = totalMs / 1000;
} catch (Exception e) {
throw new RuntimeException("解析音视频时长失败,资源地址:" + fullFilePath, e);
} finally {
// 强制释放资源,避免句柄、网络连接泄漏
if (grabber != null) {
try {
grabber.stop();
grabber.close();
} catch (Exception ignore) {
}
}
}
}
}
}
Loading…
Cancel
Save