회원 최대 포인트 획득 제한

회원 최대 포인트 획득 제한

QA

회원 최대 포인트 획득 제한

본문

 

하루 획득 가능 포인트는 다른 분께서 도움을 주셨는데요.

 

이것에 더해서 총 보유 할 수 있는 최대 포인트를 지정해서 제한하려고 하는데

어떻게 수정하면 될까요 ?

 

가령, 회원당 하루에 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

하루 최대치 제한 위에 해당 소스를 붙이시면 될거 같네요. 

일일 최고 포인트를 100으로 정했을 때,
A 회원이 90포인트 상태에서 40포인트를 추가로 받을 수 있는 경우는 40을 모두 받은 130 상태에서
제한이 안되네요. 100에서 잘리는 것이 아니고. 이것은 앞선 소스로 인한 것 같고,

알려주신 전체 최고치 제한 방법은 덧붙여 보니 제대로 구현이 되는 것 같네요.
고맙습니다.

/ ★ 여기부터

    // 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일 지정 포인트 이상 보유시 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; }

    // 여기까지 ★

 

전체포인트 + 현재적립포인트가 제한포인트보다 클경우

제한포인트 - 현재적립포인트를 계산하여 전체 포인트를 제한포인트까지는
적립하게 하는 소스입니다.


실제 실행은 안해봤는데 참고하셔서 고쳐쓰시면 될거 같습니다.


답변을 작성하시기 전에 로그인 해주세요.
전체 62
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT