package com.qxueyou.scc.admin.progress.service.impl.lecture;
|
|
import java.math.BigDecimal;
|
import java.util.Date;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import com.qxueyou.scc.admin.progress.model.Progress;
|
import com.qxueyou.scc.base.util.ClientUtils;
|
import com.qxueyou.scc.base.util.TraceUtils;
|
import com.qxueyou.scc.teach.subject.model.SubjectLecture;
|
import com.qxueyou.scc.teach.subject.model.view.LectureVideoV;
|
import com.qxueyou.scc.teach.subject.service.ILectureService;
|
|
@Service("LectureVideoProgressService")
|
public class LectureVideoProgressService extends LectureCommonProgressService {
|
|
@Autowired
|
ILectureService lectureService;
|
|
@Override
|
public String getType() {
|
return SubjectLecture.TYPE_VIDEO;
|
}
|
|
/**
|
* 获取进度百分比
|
*
|
* @param targetId
|
* @param sum
|
* @return
|
*/
|
protected double getProgressPercent(String targetId, int sum) {
|
|
LectureVideoV lectureVideo = lectureService.readVideoLecture(targetId);
|
|
return Math.min((double) sum / (double) lectureVideo.getSeconds(), 1.0d);
|
}
|
|
@Override
|
public Progress newProgress(String targetId, String learnerId, int sum) {
|
|
Progress p = new Progress();
|
TraceUtils.setCreateTrace(p);
|
|
p.setLearnerId(learnerId);
|
p.setLearnerName(ClientUtils.getUserName());
|
p.setProgressUnit("s");
|
p.setProgressValue(BigDecimal.valueOf(Long.valueOf(sum)));
|
p.setTargetId(targetId);
|
p.setType(Progress.PROGRESS_TYPE_LECTURE);
|
p.setProgressPercent(getProgressPercent(targetId, sum));
|
p.setDeleteFlag(false);
|
p.setCreator(ClientUtils.getUserName());
|
p.setCreateId(ClientUtils.getUserId());
|
p.setCreateTime(new Date());
|
p.setUpdator(ClientUtils.getUserName());
|
p.setUpdateId(ClientUtils.getUserId());
|
p.setUpdateTime(new Date());
|
|
save(p);
|
|
return p;
|
}
|
|
@Override
|
public void updateProgress(String targetId, Progress p, int sum) {
|
|
TraceUtils.setUpdateTrace(p);
|
p.setProgressValue(BigDecimal.valueOf(Double.valueOf(sum)));
|
if(p.getProgressPercent() == null || getProgressPercent(targetId, sum)>p.getProgressPercent()) {
|
p.setProgressPercent(getProgressPercent(targetId, sum));
|
}
|
|
save(p);
|
|
}
|
|
}
|