브랜디 관리자 계정 미로그인 3개월 초과 시 계정을 잠금처리하는 프로세스를 구현했습니다.
계정의 상태가 잠금으로 변경되거나 잠금 해제가 될 경우에 계정상태 변경이력을 선분으로 기록합니다.
선분이력은 간단하게
- 선분 이력 끊기
- 선분 이력 생성
두가지로 구현할 수 있습니다. 코드는 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;
}
다음과같이 쿼리를 작성해서 인자로 넘겨줍니다.