<component
:is"`component-${activeTab}`"
class="pane"
:lecture="lecture"
:subject="subject"
>
<router-link
v-for="({key, title}, index) in tabs"
:key="index"
:to="{
query: {tab: key !== 'info' ? key : undefined}
}"
class="item"
>
받아야 하는 데이터
1. everytime_timetable의 lecture_point_history
데이터베이스 조회 위해 필요한 데이터
server
1. user_secret hash
2. user_school_email hash
3. query를 이용해서 결과를 받아온다 userIdSecret2
4. 경우에 따라 query에 더한다 school_id
5. database에 쿼리를 날린다(query, values, func)
6. getLecturePoint
7. 처음 가입했을 때 '기본 포인트 지급'
: lecturePoints의 길이가 1이상일 때
학교 인증 등의 이유로 user 정보 변경 시 lecture_point에도 반영
setLecturePoint(requestUser, defaultPoint, "기본 포인트 지급", 0, function(){}){
}
var getLecturePoint = function (requestUser, callback) {
1. var userIdSecret2 = userModule.hashUserIdSecret2(requestUser);
2. var userSchoolEmailSecret2 = userModule.hashUserSchoolEmailSecret2(requestUser);
async.waterfall([
function (next) {
1. var query = "SELECT * FROM lecture_point WHERE user_id_secret2 = ?";
var queryValues = [userIdSecret2];
if (userSchoolEmailSecret2) {
query += " OR (school_id = ? AND school_email_secret2 = ?)";
queryValues.push(requestUser.school_id);
queryValues.push(userSchoolEmailSecret2);
}
database.queryTimetableDatabase(query, queryValues, function (err, rows) {
if (err) {
next(err);
return;
}
next(null, rows);
});
},
function (lecturePoints, next) {
if (lecturePoints.length === 0) {
// 최초 접근 시 기본 포인트 20 지급
var defaultPoint = 20;
setLecturePoint(requestUser, defaultPoint, "기본 포인트 지급", 0, function (err) {
if (err) {
next(err);
} else {
next(null, defaultPoint);
}
});
} else if (lecturePoints.length === 1) {
var lecturePoint = lecturePoints[0];
if (lecturePoint.user_id_secret2 !== userIdSecret2 || lecturePoint.school_email_secret2 !== userSchoolEmailSecret2) {
// 학교 인증 등의 이유로 user 정보 변경 시 lecture_point에도 반영
setLecturePoint(requestUser, 0, "", 0, function (err) {
if (err) {
next(err);
return;
}
next(null, lecturePoint.point);
});
} else {
// 예외 처리 없이 바로 출력
next(null, lecturePoint.point);
}
} else {
// 다른 아이디에서 학교 인증 등의 이유로 중복된 lecture_point 발생 시 합산 처리
setLecturePoint(requestUser, -20, "기본 포인트 중복 지급 차감", 0, function (err) {
if (err) {
next(err);
return;
}
getLecturePoint(requestUser, next);
});
}
}
], callback);
};