Compare commits

..

3 Commits

Author SHA1 Message Date
zhaolongfei
05dc7b984f 注释代码 2024-11-11 10:49:04 +08:00
zhaolongfei
d0e5f8c329 编辑视频时长的时候直接修改文件时长 2024-11-10 20:31:47 +08:00
zhaolongfei
2c94b09199 在线课上传视频失败修改 2024-11-10 19:25:08 +08:00
13 changed files with 57 additions and 99 deletions

View File

@@ -232,13 +232,6 @@
<artifactId>spring-retry</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.3.0</version>
</dependency>
</dependencies>
<build>
<resources>

View File

@@ -1,40 +0,0 @@
package com.xboe;
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class XxlJobConfig {
@Value("${xxl.job.admin.addresses}")
private String adminAddresses;
@Value("${xxl.job.executor.appname}")
private String appName;
@Value("${xxl.job.executor.ip}")
private String ip;
@Value("${xxl.job.executor.port}")
private int port;
@Value("${xxl.job.accessToken}")
private String accessToken;
@Value("${xxl.job.executor.logpath}")
private String logPath;
@Value("${xxl.job.executor.logretentiondays}")
private int logRetentionDays;
@Bean
public XxlJobSpringExecutor xxlJobExecutor() {
// 创建 XxlJobSpringExecutor 执行器
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
xxlJobSpringExecutor.setAppname(appName);
xxlJobSpringExecutor.setIp(ip);
xxlJobSpringExecutor.setPort(port);
xxlJobSpringExecutor.setAccessToken(accessToken);
xxlJobSpringExecutor.setLogPath(logPath);
xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
// 返回
return xxlJobSpringExecutor;
}
}

View File

@@ -1,7 +1,6 @@
package com.xboe.module.boecase.api;
import com.xboe.module.boecase.service.ICasesService;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@@ -17,7 +16,6 @@ public class CaseScheduledTasks {
* 每月的第一天的1:00执行
*/
// @Scheduled(cron = "0 0 1 1 * ?")
@XxlJob("refreshViewsRankOfMajor")
public void refreshViewsRankOfMajor() {
casesService.refreshViewsRankOfMajor();
}
@@ -25,8 +23,7 @@ public class CaseScheduledTasks {
/**
* 季初第一天两点执行cron表达式设置为每个季度的第一个月的第一天的特定时间。每个季度的第一个月是1月、4月、7月和10月
*/
// @Scheduled(cron = "0 0 2 1 1,4,7,10 ?")
@XxlJob("refreshLastQuarterStatistics")
@Scheduled(cron = "0 0 2 1 1,4,7,10 ?")
public void refreshLastQuarterStatistics() {
casesService.refreshLastQuarterStatistics();
}

View File

@@ -10,6 +10,8 @@ import com.xboe.core.orm.BaseDao;
import com.xboe.core.orm.IFieldFilter;
import com.xboe.module.course.entity.CourseFile;
import javax.transaction.Transactional;
@Repository
public class CourseFileDao extends BaseDao<CourseFile> {
@@ -21,4 +23,5 @@ public class CourseFileDao extends BaseDao<CourseFile> {
PageList<CourseFile> page = this.getGenericDao().findPage(pageIndex, pageSize, getEntityClass(), filters,order);
return page;
}
}

View File

@@ -54,4 +54,6 @@ public interface ICourseFileService {
* @param deleted
*/
void delete(String id,boolean deleted);
// void updateDuration(String contentRefId, Integer duration);
}

View File

@@ -7,6 +7,7 @@ import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.xboe.common.OrderCondition;
import com.xboe.common.PageList;
import com.xboe.core.cache.IXaskCache;
import com.xboe.core.cache.XaskCacheProvider;
import com.xboe.core.orm.FieldFilters;
@@ -14,11 +15,9 @@ import com.xboe.core.orm.UpdateBuilder;
import com.xboe.module.course.dao.*;
import com.xboe.module.course.dto.CourseContentDto;
import com.xboe.module.course.dto.SortItem;
import com.xboe.module.course.entity.CourseAssess;
import com.xboe.module.course.entity.CourseContent;
import com.xboe.module.course.entity.CourseExam;
import com.xboe.module.course.entity.CourseHomeWork;
import com.xboe.module.course.entity.*;
import com.xboe.module.course.service.ICourseContentService;
import com.xboe.module.course.service.ICourseFileService;
import com.xboe.module.exam.dao.ExamPaperDao;
import com.xboe.module.exam.vo.TestQuestionVo;
import com.xboe.standard.enums.BoedxContentType;
@@ -57,7 +56,8 @@ public class CourseContentServiceImpl implements ICourseContentService {
@Resource
private ExamPaperDao examPaperDao;
@Resource
private ICourseFileService courseFileService;
@Override
@Transactional
@@ -83,6 +83,7 @@ public class CourseContentServiceImpl implements ICourseContentService {
ccDao.save(cc);
}else {
ccDao.update(cc);
// courseFileService.updateDuration(cc.getContentRefId(),cc.getDuration());
cc.setSysVersion(ccDao.getVersion(cc.getId()));
}
//添加或保存其它信息

View File

@@ -98,4 +98,14 @@ public class CourseFileServiceImpl implements ICourseFileService {
public CourseFile get(String id) {
return courseFileDao.get(id);
}
// @Override
// public void updateDuration(String contentRefId,Integer duration) {
// if (duration == null) {
// duration = 0;
// }
// String sql = "UPDATE boe_course_file SET duration = "+ duration+" WHERE id = "+ contentRefId+" ";
// courseFileDao.sqlUpdate(sql);
// }
}

View File

@@ -177,7 +177,7 @@ public class StudyCourseApi extends ApiBaseController{
if (!Objects.isNull(studyCourse)){
pass = true;
}
if (Objects.isNull(studyCourse) && !courseCrowdList.isEmpty() && !StringUtils.isEmpty(audiences)) {
if (Objects.isNull(studyCourse) && !courseCrowdList.isEmpty()) {
List<String> audienceList = Arrays.asList(audiences.split(",")); // 此用户所在受众组
log.error("---------------参数------------ audienceList = " + audienceList);
for (CourseCrowd c : courseCrowdList) {

View File

@@ -2,14 +2,10 @@ package com.xboe.school.study.dao;
import java.time.LocalDateTime;
import java.util.List;
import java.util.concurrent.TimeUnit;
import com.xboe.api.ThirdApi;
import com.xboe.constants.CacheName;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Repository;
import com.xboe.core.orm.BaseDao;
@@ -30,9 +26,6 @@ public class StudyCourseDao extends BaseDao<StudyCourse> {
@Autowired
StudyCourseItemDao scItemDao;
@Autowired
StringRedisTemplate redisTemplate;
@Resource
private ThirdApi thirdApi;
@@ -43,11 +36,6 @@ public class StudyCourseDao extends BaseDao<StudyCourse> {
* @param total
*/
public void finishCheck(String studyId,String courseId,Integer total,String token){
if(StringUtils.isNotEmpty(redisTemplate.opsForValue().get(studyId + "_" + courseId + "_" + total))){
return ;
}
log.info("------1.完成情况检查---------------studyId = " + studyId + " , courseId = " + courseId + " , total = " + total );
LocalDateTime now=LocalDateTime.now();
//已完成的内容
@@ -62,9 +50,7 @@ public class StudyCourseDao extends BaseDao<StudyCourse> {
}
log.info("------3.完成情况检查---------------studyId = " + studyId + " , courseId = " + courseId + " , total = " + total );
//以下注意float类型是否等于100对应
float percent=n*100/total;
float percent=n*100/total;
if(n>=total) {
//自主报名的课程,代表学习完成
super.updateMultiFieldById(studyId,
@@ -72,13 +58,11 @@ public class StudyCourseDao extends BaseDao<StudyCourse> {
UpdateBuilder.create("lastTime",now),
UpdateBuilder.create("finishTime",now),
UpdateBuilder.create("status",StudyCourse.STATUS_FINISH));
redisTemplate.opsForValue().set(studyId + "_" + courseId + "_" + total, "100", 24, TimeUnit.HOURS);
}else {
super.updateMultiFieldById(studyId,
UpdateBuilder.create("progress",percent),
UpdateBuilder.create("lastTime",LocalDateTime.now()),
UpdateBuilder.create("status",StudyCourse.STATUS_STUDYING));
// redisTemplate.opsForValue().set(studyId, String.valueOf(percent), 10, TimeUnit.SECONDS);
}
List<StudyCourse> allUserList = thirdApi.getStudyCourseList(studyId ,courseId, token);

View File

@@ -1,9 +1,6 @@
package com.xboe.system.api;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
@@ -14,6 +11,11 @@ import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.xboe.core.SysConstant;
import com.xboe.standard.BaseConstant;
import com.xboe.system.assist.entity.XUploadResultDto;
import it.sauronsoftware.jave.Encoder;
import it.sauronsoftware.jave.MultimediaInfo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -115,8 +117,23 @@ public class SysUploaderApi extends ApiBaseController{
// ex.printStackTrace();
log.error("处理失败",ex);
}
return wrap(xur);
Long ls = 0L;
XUploadResultDto dto=new XUploadResultDto();
String fileFullPath = SysConstant.getConfigValue(BaseConstant.CONFIG_UPLOAD_FILES_SAVEPATH) + xur.getFilePath();
try {
Encoder encoder = new Encoder();
MultimediaInfo m = encoder.getInfo(new File(fileFullPath));
ls = m.getDuration() / 1000;//秒
}catch (Exception e){
e.printStackTrace();
log.error("读取视频时长错误");
}
dto.setDuration(ls);
dto.setDisplayName(xur.getDisplayName());
dto.setFilePath(xur.getFilePath());
dto.setFileType(xur.getFileType());
dto.setHttpPath(xur.getHttpPath());
return wrap(dto);
} catch (Exception e) {
log.error("upload file error ",e);

View File

@@ -0,0 +1,9 @@
package com.xboe.system.assist.entity;
import com.xboe.core.upload.XUploadResult;
import lombok.Data;
@Data
public class XUploadResultDto extends XUploadResult {
private Long duration;
}

View File

@@ -74,12 +74,3 @@ xboe.email.url=https://u.boe.com/api/b1/email/send
xboe.email.from=boeu_learning@boe.com.cn
xboe.email.user=
xboe.email.security=
xxl.job.admin.addresses=http://u.boe.com/jobAdmin
xxl.job.accessToken=65ddc683-22f5-83b4-de3a-3c97a0a29af0
xxl.job.executor.appname=java-servers-job-api
xxl.job.executor.port=9995
xxl.job.executor.address=
xxl.job.executor.ip=
xxl.job.executor.logpath=/var/log/xxl-job/dw/
xxl.job.executor.logretentiondays=30

View File

@@ -80,13 +80,4 @@ xboe.email.from=boeu_learning@boe.com.cn
xboe.email.user=
xboe.email.security=
boe.domain=https://u-pre.boe.com
xxl.job.admin.addresses=http://u-pre.boe.com/jobAdmin
xxl.job.accessToken=65ddc683-22f5-83b4-de3a-3c97a0a29af0
xxl.job.executor.appname=java-servers-job-api
xxl.job.executor.port=9995
xxl.job.executor.address=
xxl.job.executor.ip=
xxl.job.executor.logpath=/var/log/xxl-job/dw/
xxl.job.executor.logretentiondays=30
boe.domain=https://u-pre.boe.com