派生自 projectDept/qhighschool

Administrator
2022-11-21 8d0e57a64fe6c31559ffcf38859fb1f5084e1e23
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
package com.qxueyou.scc.admin.progress.service.impl.lecture;
 
import java.math.BigDecimal;
 
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;
 
    @Override
    public Result addProgress(String targetId, String learnerId, Double start, Double end) {
 
        if (start > end || start < 0 || end < 0) {
            return new Result(false, "invalid arguments");
        }
 
        Double[][] progress = dao.mergeProgress(targetId, learnerId, start, end , dao.getProgress(targetId, learnerId));
 
        if (!checkLecture(targetId).isSuccess()) {
            return checkLecture(targetId);
        }
 
        Double 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);
 
        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(Double start, Double 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);
 
        TraceUtils.setCreateTrace(detail);
 
        this.save(detail);
    }
 
    /**
     * »ñÈ¡½ø¶È°Ù·Ö±È
     *
     * @param targetId
     * @param sum
     * @return
     */
    protected double getProgressPercent(String targetId, Double sum) {
        return 1.00d;
    }
 
    @Override
    public String getType() {
        return Progress.PROGRESS_TYPE_LECTURE;
    }
 
    protected void updateProgress(String targetId, Progress p, Double sum) {
 
        TraceUtils.setUpdateTrace(p);
        p.setProgressValue(BigDecimal.valueOf(Double.valueOf(sum)));
        p.setProgressPercent(1d);
 
        save(p);
 
    }
 
    protected Progress newProgress(String targetId, String learnerId, Double sum) {
 
        Progress p = new Progress();
        TraceUtils.setCreateTrace(p);
 
        p.setLearnerId(learnerId);
        p.setLearnerName(ClientUtils.getUserName());
        p.setProgressUnit("s");
        p.setProgressValue(BigDecimal.valueOf(Double.valueOf(sum)));
        p.setTargetId(targetId);
        p.setType(Progress.PROGRESS_TYPE_LECTURE);
        p.setProgressPercent(1d);
        save(p);
 
        return p;
    }
 
}