get_point_sum 함수 질문 채택완료

5년 전 조회 6,589

Copy
if($expire_point > 0) {

            $mb = get_member($mb_id, 'mb_point');

            $content = '포인트 소멸';

            $rel_table = '@expire';

            $rel_id = $mb_id;

            $rel_action = 'expire'.'-'.uniqid('');

            $point = $expire_point * (-1);

            $po_mb_point = $mb['mb_point'] + $point;

            $po_expire_date = G5_TIME_YMD;

            $po_expired = 1;

get_point_sum 함수 일부 코드 입니다.

여기서 expire 가 의미하는 내용은 무엇인가요?

답변 4개

채택된 답변
+20 포인트

po_rel_table 은 정해진 값이 아니라 정의해서 쓰는 값이므로 해당 값에 대한 정의를 별도로

기록한곳은 존재하지 않는거 같습니다.

그누보드에서는 기본적으로 이렇게 쓰는거 같고

 

만료 : @expire
회원가입 : @member
로그인 : @login

예를 들면

관리자 : @admin 
만료예정 : @expire_prepare

이런식으로 개발자가 정의해서 기록하고 나중에 구분용도로 쓰고 있습니다.

관리자 포인트 리스트나 회원포인트 조회에서 해당 값으로 한글로 변환해서 보여주는 용도로

사용됩니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

드디어 이해했습니다 ㅋㅋ
감사합니다~~
근데 $rel_action = 'expire'.'-'.uniqid(''); 여기서
uniqid 를 써주는 이유가 뭔가요?

댓글을 작성하려면 로그인이 필요합니다.

// 이미 등록된 내역이라면 건너뜀
    if ($rel_table || $rel_id || $rel_action)
    {
        $sql = " select count(*) as cnt from {$g5['point_table']}
                  where mb_id = '$mb_id'
                    and po_rel_table = '$rel_table'
                    and po_rel_id = '$rel_id'
                    and po_rel_action = '$rel_action' ";
        $row = sql_fetch($sql);
        if ($row['cnt'])
            return -1;
    }

=> 이미 등록된 내역인경우 건너뛰는 곳들이 있는데 그걸 방지하기 위해서 사용하는거 같음

$rel_action = 'expire'.'-'.uniqid('');

=> https://zetawiki.com/wiki/PHP_uniqid()

=> 이렇게 생성할경우 값이 겹치지 않게 되므로 고유값 용도로 사용할려고 하는 용도인거 같음

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

답변해주셔서 감사합니다~~

댓글을 작성하려면 로그인이 필요합니다.

expire 는 단순 텍스트이고

 

// 소멸 포인트
function get_expire_point($mb_id)
{
    global $g5, $config;

    if($config['cf_point_term'] == 0)
        return 0;

    $sql = " select sum(po_point - po_use_point) as sum_point
                from {$g5['point_table']}
                where mb_id = '$mb_id'
                  and po_expired = '0'
                  and po_expire_date <> '9999-12-31'
                  and po_expire_date < '".G5_TIME_YMD."' ";
    $row = sql_fetch($sql);

    return $row['sum_point'];
}

 

해당 함수로 소멸된 포인트 합산을 구한후에

 

rel_table 필드에 @expire 문자를 기록하여 소멸포인트 합을 마이너스로 포인트 테이블에 기록함

 

rel_table 필드는 구분자 필드로 해당 포인트의 종류를 문자로 정의해서 입력하고 있음

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

무슨 말인지 잘 모르겠어요..

db를 보면 po_re_table 칼럼에 $login, $member 이런식으로 적혀 있는데
이런 값의 내용을 어디서 정해주나요?

댓글을 작성하려면 로그인이 필요합니다.

포인트 테이블에 만료날짜를 기록하고 해당 포인트가 만료날짜가 되면 

 

포인트합산시 해당 포인트를 만료처리하여 마이너스(-) 처리한다는 의미입니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

expire 가 정의된 부분이 어딘지 알 수 있을까요?

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고