修改scorm学习完成的记录情况

This commit is contained in:
daihh
2023-02-27 18:28:52 +08:00
parent ce8874252c
commit 7d79888e43
4 changed files with 50 additions and 32 deletions

View File

@@ -306,19 +306,19 @@ public class StudyCourseApi extends ApiBaseController{
if(StringUtils.isBlank(sci.getContentId())){ if(StringUtils.isBlank(sci.getContentId())){
return error("参数错误:内容"); return error("参数错误:内容");
} }
LocalDateTime now=LocalDateTime.now(); // LocalDateTime now=LocalDateTime.now();
CurrentUser cuser=getCurrent(); CurrentUser cuser=getCurrent();
//下面的学习时长应该去掉了,不需要 //下面的学习时长应该去掉了,不需要
StudyTime st=new StudyTime(); // StudyTime st=new StudyTime();
st.setContentId(sci.getContentId()); // st.setContentId(sci.getContentId());
st.setCourseId(sci.getCourseId()); // st.setCourseId(sci.getCourseId());
st.setDuration(5);//增加5秒的学习时长 // st.setDuration(5);//增加5秒的学习时长
st.setEndTime(now); // st.setEndTime(now);
st.setStartTime(now); // st.setStartTime(now);
st.setStudentId(cuser.getAccountId()); // st.setStudentId(cuser.getAccountId());
st.setStudentName(cuser.getName()); // st.setStudentName(cuser.getName());
st.setStudyId(sci.getStudyId()); // st.setStudyId(sci.getStudyId());
//检查是否已存在 //检查是否已存在
StudyCourseItem item = studyService.checkHas(sci.getStudyId(),sci.getContentId()); StudyCourseItem item = studyService.checkHas(sci.getStudyId(),sci.getContentId());
@@ -328,7 +328,7 @@ public class StudyCourseApi extends ApiBaseController{
studyService.updateProcess(item.getId(),sci.getStudyId(),sci.getCourseId(), sci.getContentTotal(),sci.getProgress()); studyService.updateProcess(item.getId(),sci.getStudyId(),sci.getCourseId(), sci.getContentTotal(),sci.getProgress());
} }
//追加学习时长 //追加学习时长
studyService.appendStudyDuration(st); //studyService.appendStudyDuration(st);
return success(item.getId()); return success(item.getId());
} }
@@ -337,7 +337,7 @@ public class StudyCourseApi extends ApiBaseController{
sci.setAname(cuser.getName()); sci.setAname(cuser.getName());
studyService.saveStudyInfo(sci); studyService.saveStudyInfo(sci);
//学习记录成功后处理 //学习记录成功后处理
studyService.appendStudyDuration(st); //studyService.appendStudyDuration(st);
return success(sci.getStudyItemId()); return success(sci.getStudyItemId());
}catch(Exception e) { }catch(Exception e) {
log.error("记录学习课程内容完成错误",e); log.error("记录学习课程内容完成错误",e);

View File

@@ -10,6 +10,7 @@ import com.xboe.core.orm.FieldFilters;
import com.xboe.core.orm.UpdateBuilder; import com.xboe.core.orm.UpdateBuilder;
import com.xboe.module.course.dao.CourseContentDao; import com.xboe.module.course.dao.CourseContentDao;
import com.xboe.school.study.entity.StudyCourse; import com.xboe.school.study.entity.StudyCourse;
import com.xboe.school.study.entity.StudyCourseItem;
@Repository @Repository
public class StudyCourseDao extends BaseDao<StudyCourse> { public class StudyCourseDao extends BaseDao<StudyCourse> {
@@ -27,7 +28,8 @@ public class StudyCourseDao extends BaseDao<StudyCourse> {
* @param total * @param total
*/ */
public void finishCheck(String studyId,String courseId,Integer total){ public void finishCheck(String studyId,String courseId,Integer total){
int n=scItemDao.count(FieldFilters.eq("studyId",studyId)); //已完成的内容
int n=scItemDao.count(FieldFilters.eq("studyId",studyId),FieldFilters.eq("status",StudyCourseItem.STATUS_FINISH));
if(total==null) { if(total==null) {
total=courseContentDao.count(FieldFilters.eq("courseId", courseId),FieldFilters.eq("deleted",false)); total=courseContentDao.count(FieldFilters.eq("courseId", courseId),FieldFilters.eq("deleted",false));
} }

View File

@@ -30,7 +30,7 @@ public interface IStudyService {
* @param studyContentId * @param studyContentId
* @param progress * @param progress
*/ */
void updateProcess(String studyContentId,String studyId, String courseId,int total,Integer progress); void updateProcess(String studyContentId,String studyId, String courseId,Integer total,Integer progress);
/** /**
* 更新最后的学习时间,及学习时间点 * 更新最后的学习时间,及学习时间点

View File

@@ -61,24 +61,36 @@ public class StudyServiceImpl implements IStudyService{
@Override @Override
@Transactional @Transactional
public void saveStudyInfo(StudyContentDto dto) { public void saveStudyInfo(StudyContentDto dto) {
//记录课程学习信息 StudyCourseItem sci = scItemDao.findOne(FieldFilters.eq("studyId", dto.getStudyId()),FieldFilters.eq("contentId", dto.getContentId()),FieldFilters.eq("aid", dto.getAid()));
StudyCourseItem sci=new StudyCourseItem();
LocalDateTime ldt=LocalDateTime.now(); LocalDateTime ldt=LocalDateTime.now();
sci.setStudyId(dto.getStudyId()); if(sci==null) {
sci.setContentId(dto.getContentId()); sci=new StudyCourseItem();
sci.setContentName(dto.getContentName()); sci.setStartTime(ldt);
sci.setCourseId(dto.getCourseId()); sci.setAid(dto.getAid());
sci.setAname(dto.getAname());
sci.setCsectionId(dto.getCsectionId()); sci.setLastStudyTime(0);//此项用户记录视频内容当前学习的时间点
sci.setProgress(100);//直接设置为学习完成 sci.setStudyId(dto.getStudyId());
sci.setStartTime(ldt); sci.setContentId(dto.getContentId());
sci.setAid(dto.getAid()); sci.setContentName(dto.getContentName());
sci.setAname(dto.getAname()); sci.setCourseId(dto.getCourseId());
sci.setFinishTime(LocalDateTime.now()); sci.setCsectionId(dto.getCsectionId());
sci.setLastStudyTime(0);//此项用户记录视频内容当前学习的时间点 }
//进度状态
if(dto.getProgress()==null) {
sci.setProgress(1);
sci.setStatus(StudyCourseItem.STATUS_STUDYING);
}else if(dto.getProgress().intValue()==100) {
sci.setStatus(StudyCourseItem.STATUS_FINISH);
sci.setProgress(100);
}else {
sci.setStatus(StudyCourseItem.STATUS_STUDYING);
sci.setProgress(dto.getProgress());
}
//sci.setProgress(100);//直接设置为学习完成
sci.setFinishTime(ldt);
sci.setLastTime(ldt); sci.setLastTime(ldt);
sci.setStatus(StudyCourseItem.STATUS_FINISH); scItemDao.saveOrUpdate(sci);
scItemDao.save(sci);
dto.setStudyItemId(sci.getId()); dto.setStudyItemId(sci.getId());
//检查是否全部学习完成 //检查是否全部学习完成
scDao.finishCheck(dto.getStudyId(),dto.getCourseId(),dto.getContentTotal()); scDao.finishCheck(dto.getStudyId(),dto.getCourseId(),dto.getContentTotal());
@@ -144,8 +156,12 @@ public class StudyServiceImpl implements IStudyService{
@Override @Override
@Transactional @Transactional
public void updateProcess(String studyContentId,String studyId, String courseId,int total, Integer progress) { public void updateProcess(String studyContentId,String studyId, String courseId,Integer total, Integer progress) {
scItemDao.updateMultiFieldById(studyContentId, UpdateBuilder.create("progress",progress)); int status=StudyCourseItem.STATUS_STUDYING;
if(progress.intValue()==100) {
status=StudyCourseItem.STATUS_FINISH;
}
scItemDao.updateMultiFieldById(studyContentId,UpdateBuilder.create("progress",progress),UpdateBuilder.create("status",status));
//检查是否全部学习完成 //检查是否全部学习完成
scDao.finishCheck(studyId,courseId,total); scDao.finishCheck(studyId,courseId,total);