All Articles

[API ]선분이력 기록하기

브랜디 관리자 계정 미로그인 3개월 초과 시 계정을 잠금처리하는 프로세스를 구현했습니다.

계정의 상태가 잠금으로 변경되거나 잠금 해제가 될 경우에 계정상태 변경이력을 선분으로 기록합니다.

선분이력은 간단하게

  1. 선분 이력 끊기
  2. 선분 이력 생성

두가지로 구현할 수 있습니다. 코드는 php로 작성되었습니다.

먼저 가장 최근의 선분 이력을 불러와서 선분이력 종료 시간을 현재 시간으로 변경합니다.

public function updatePrevLh($acntNo, $now) {
    $params = array();
    $sql =  '
        UPDATE 
            TB_C_ACCOUNT_LOGIN_STATUS
        SET
            LHFNS_DT = ?
        WHERE 
            C_ACNT_NO = ?
            AND LHFNS_DT = \'2037-12-31 23:59:59\'
    ';
    array_push($params, $now, $acntNo);

    return $this->commerce_db->query($sql, $params);
}

그다음 새로운 선분을 생성합니다.

public function insertLh($acntNo, $now, $regAcntNo) {
    $params = array();
    $sql = 'INSERT INTO TB_C_ACCOUNT_LOGIN_STATUS 
                (C_ACNT_NO, 
                C_ACNT_LOGIN_STTUS_CD, 
                C_ACNT_LOGIN_STTUS_AUTO_YN, 
                LHST_DT, 
                LHFNS_DT, 
                RECD_REG_DT, 
                REG_ACNT_NO)
            VALUES (?, \'01\', \'N\', ?, \'2037-12-31 23:59:59\', NOW(), ?)';
    array_push($params, $acntNo, $now, $regAcntNo);

    return $this->commerce_db->query($sql, $params);
}

기존 이력의 선분 종료시점과 새로 생성된 이력의 선분 시작시간이 현재 시간으로 생성됩니다.

현재 시간은 데이터베이스에서 받아온 후 동일한 값을 updatePrevLh와 insertLh함수에 각각 넘겨줘야 합니다.

public function getNowDate()
{
    $sql = ' SELECT NOW() AS NOW_DATE';
    return $this->commerce_db->query($sql)->row()->NOW_DATE;
}

다음과같이 쿼리를 작성해서 인자로 넘겨줍니다.