派生自 projectDept/qhighschool

EricsHu
2022-12-08 6ca7ca9feb1cc4a35cab3a3af8dddfae2580bddc
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
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;
    }
 
}