5일차

해피데빙·2022년 9월 7일
0

vue

목록 보기
6/9
<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"
          >

  • data(){}를 통해 리턴하는 값 : lecture, subject
  • 하나라도 있어야 태그를 돌려준다

/lecture/point

받아야 하는 데이터
1. everytime_timetable의 lecture_point_history

  • point (각각)
  • text
  • created_at
  1. everytime_timetable의 lecture_point
  • id(point-id)
  • point_id

데이터베이스 조회 위해 필요한 데이터

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);
};
profile
노션 : https://garrulous-gander-3f2.notion.site/c488d337791c4c4cb6d93cb9fcc26f17

0개의 댓글