회원 최대 포인트 획득 제한 채택완료
하루 획득 가능 포인트는 다른 분께서 도움을 주셨는데요.
이것에 더해서 총 보유 할 수 있는 최대 포인트를 지정해서 제한하려고 하는데
어떻게 수정하면 될까요 ?
가령, 회원당 하루에 30포인트 까지만 최대로 포인트를 받는데,
다음 날 다시 30, 다음 날 다시 30 이렇게 누적되다가
누적 최대치가 300에 닿으면 날이 바뀌어도 소모 전 까지는 추가 누적이 되지 않도록 할 수 있으면 합니다.
/lib/common.lib.php
// 포인트 부여
function insert_point($mb_id, $point, $content='', $rel_table='', $rel_id='', $rel_action='', $expire=0, $repeat=0) { global $config; global $g5; global $is_admin; // ★ 여기부터 // 1일 지정 포인트 이상 보유시 return $limit_point = '30'; // 제한점수 수정 $sql = "select SUM(po_point) as point FROM `{$g5['point_table']}` WHERE mb_id ='{$mb_id}' and TO_DAYS(po_datetime) = TO_DAYS('" . G5_TIME_YMDHIS . "')"; $today_point = sql_fetch($sql); if($point > 0 && $today_point['point'] >= $limit_point) { return 0; } // 여기까지 ★ // 포인트 사용을 하지 않는다면 return
답변 3개
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
// ★ 여기부터
// 1일 지정 포인트 이상 보유시 return $limit_point = '300'; // 제한점수 수정 $sql
= "select SUM(po_point) as point FROM `{$g5['point_table']}` WHERE
mb_id ='{$mb_id}' ";$total_point = sql_fetch($sql);$total_point['point'] = $total_point['point'] + $point; // 합산포인트 + 현재포인트 if($point > 0 && $total_point['point'] >= $limit_point) { return 0; } // 여기까지 ★
해당 부분을 추가하면 전체포인트 + 현재추가포인트를 합산한 포인트가 제한보다
클경우 적립되지 않도록 처리할수 있습니다. 그대신 제한포인트까지 적립이 되지 않음
// ★ 여기부터
// 1일 지정 포인트 이상 보유시 return $limit_point = '300'; // 제한점수 수정 $sql
= "select SUM(po_point) as point FROM `{$g5['point_table']}` WHERE
mb_id ='{$mb_id}' ";$total_point = sql_fetch($sql);$total_point_sum = $total_point['point'] + $point; // 합산포인트 + 현재포인트
if ( $total_point_sum >= $limit_point ) {
$point = $limit_point - $total_point['point'];
} if($point > 0 && $total_point['point'] >= $limit_point) { return 0; } // 여기까지 ★
전체포인트 + 현재적립포인트가 제한포인트보다 클경우
제한포인트 - 현재적립포인트를 계산하여 전체 포인트를 제한포인트까지는
적립하게 하는 소스입니다.
실제 실행은 안해봤는데 참고하셔서 고쳐쓰시면 될거 같습니다.
댓글을 작성하려면 로그인이 필요합니다.
/ ★ 여기부터
// 1일 지정 포인트 이상 보유시 return $limit_point = '300'; // 제한점수 수정 $sql
= "select SUM(po_point) as point FROM `{$g5['point_table']}` WHERE
mb_id ='{$mb_id}' "; $total_point = sql_fetch($sql); if($point > 0 && $total_point['point'] >= $limit_point) { return 0; } // 여기까지 ★
이렇게 하시면 될거 같네요.
날짜 비교를 제거하시면 총포인트가 되실거 같습니다.
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
A 회원이 90포인트 상태에서 40포인트를 추가로 받을 수 있는 경우는 40을 모두 받은 130 상태에서
제한이 안되네요. 100에서 잘리는 것이 아니고. 이것은 앞선 소스로 인한 것 같고,
알려주신 전체 최고치 제한 방법은 덧붙여 보니 제대로 구현이 되는 것 같네요.
고맙습니다.