package com.qxueyou.scc.admin.progress.service.impl.lecture;
|
|
import java.math.BigDecimal;
|
import java.util.Date;
|
|
import com.qxueyou.scc.admin.classes.model.ClsSubjectLecture;
|
import com.qxueyou.scc.admin.classes.service.impl.ClassLectureService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import com.qxueyou.scc.admin.progress.dao.ProgressDAO;
|
import com.qxueyou.scc.admin.progress.model.Progress;
|
import com.qxueyou.scc.admin.progress.model.SubjectLectureProgressDetail;
|
import com.qxueyou.scc.admin.progress.model.view.SubjectProgressTreeV;
|
import com.qxueyou.scc.admin.progress.service.IDetailProgressService;
|
import com.qxueyou.scc.admin.progress.service.impl.ProgressService;
|
import com.qxueyou.scc.admin.progress.service.impl.StudyProgressUtils;
|
import com.qxueyou.scc.base.model.Result;
|
import com.qxueyou.scc.base.service.ICacheService;
|
import com.qxueyou.scc.base.service.impl.CommonAppService;
|
import com.qxueyou.scc.base.util.ClientUtils;
|
import com.qxueyou.scc.base.util.CollectionUtils;
|
import com.qxueyou.scc.base.util.TraceUtils;
|
|
@Service
|
public class LectureCommonProgressService extends CommonAppService implements IDetailProgressService {
|
|
@Autowired
|
ICacheService cacheService;
|
|
@Autowired
|
ProgressDAO dao;
|
|
@Autowired
|
ClassLectureService classLectureService;
|
|
@Override
|
public Result addProgress(String targetId, String learnerId, int start, int end) {
|
|
if (start > end || start < 0 || end < 0) {
|
return new Result(false, "invalid arguments");
|
}
|
|
int[][] progress = dao.mergeProgress(targetId, learnerId, start, end , dao.getProgress(targetId, learnerId));
|
|
if (!checkLecture(targetId).isSuccess()) {
|
return checkLecture(targetId);
|
}
|
|
int sum = StudyProgressUtils.sum(progress);
|
|
Progress p = dao.getProgress(Progress.PROGRESS_TYPE_LECTURE, targetId, learnerId);
|
|
if (p == null) {
|
p = newProgress(targetId, learnerId, sum);
|
} else {
|
updateProgress(targetId, p, sum);
|
}
|
|
//±£´æÑ§Ï°¼Ç¼Ã÷ϸ
|
this.saveProgressDetail(start, end, targetId, p.getProgressId(), learnerId);
|
|
classLectureService.updateLecturetime(targetId);
|
|
SubjectProgressTreeV subjectProgressTreeV = dao.getSubjectProgressTreeV(targetId, learnerId);
|
|
if(subjectProgressTreeV != null) {
|
cacheService.lstRightPush(ProgressService.SUBJECT_PROGRESS_STATISTIC,
|
subjectProgressTreeV.getParentId() + "," + learnerId);
|
}
|
|
return new Result(true, "success", CollectionUtils.newObjectMap("percent", getProgressPercent(targetId, sum)));
|
}
|
|
protected Result checkLecture(String targetId) {
|
return new Result(true);
|
}
|
|
/**
|
* ±£´æÑ§Ï°¼Ç¼Ã÷ϸ
|
*
|
* @param start
|
* @param end
|
* @param targetId
|
* @param progressId
|
* @param learnerId
|
*/
|
private void saveProgressDetail(int start, int end, String targetId, String progressId, String learnerId) {
|
SubjectLectureProgressDetail detail = new SubjectLectureProgressDetail();
|
detail.setDeleteFlag(false);
|
detail.setEnd(end);
|
detail.setStart(start);
|
detail.setTargetId(targetId);
|
detail.setProgressId(progressId);
|
detail.setLearnerId(learnerId);
|
detail.setCreator(ClientUtils.getUserName());
|
detail.setCreateId(ClientUtils.getUserId());
|
detail.setCreateTime(new Date());
|
detail.setUpdateTime(new Date());
|
|
TraceUtils.setCreateTrace(detail);
|
|
save(detail);
|
}
|
|
/**
|
* »ñÈ¡½ø¶È°Ù·Ö±È
|
*
|
* @param targetId
|
* @param sum
|
* @return
|
*/
|
protected double getProgressPercent(String targetId, int sum) {
|
|
return 1.00d;
|
}
|
|
@Override
|
public String getType() {
|
return Progress.PROGRESS_TYPE_LECTURE;
|
}
|
|
protected void updateProgress(String targetId, Progress p, int sum) {
|
|
TraceUtils.setUpdateTrace(p);
|
p.setProgressValue(BigDecimal.valueOf(Long.valueOf(sum)));
|
p.setProgressPercent(1d);
|
|
save(p);
|
|
}
|
|
protected 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(1d);
|
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;
|
}
|
|
}
|