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); } }