포인트 1,2 단계 적용에서 -포인트적용안되게 > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

포인트 1,2 단계 적용에서 -포인트적용안되게 정보

포인트 1,2 단계 적용에서 -포인트적용안되게

본문

 

/lib/common.lib.php 내용중 포인트 부분입니다

분양홈피 운영중입니다.
회원이 포인트 적립하게되면 1단계20% 2단계 10% 상위 추천회원에게로 주어집니다.
근데 회원이 파일을 다운받을때 차감되는 포인트에서도 -포인트가 적용이 되어집니다.
회원이 적립을하거나 사용한포인트가 차감되는포인트 즉 음수 포인트가 발생할때는
상위회원에게 20% 10% 적용이 안되게 했으면 합니다.

 A회원    -    B회원    -    C회원        이 있을때  C회원이 물품구매를 20000 포인트했을때 현재는
상위회원   1단계회원     2단계회원      B회원이 -4000 포인트 A회원이 -2000 포인트 삭감이됩니다
                                                    이렇게  음수 - 포인트가 발생시엔 상위회원은 차감이 안되게
                                                    하고싶습니다

// 포인트 부여
function insert_point($mb_id, $point, $content='', $rel_table='', $rel_id='', $rel_action='')
{
    global $config;
    global $g4;
    global $is_admin;

    // 포인트 사용을 하지 않는다면 return
    if (!$config[cf_use_point]) { return 0; }

    // 포인트가 없다면 업데이트 할 필요 없음
    if ($point == 0) { return 0; }

    // 최고관리자는 포인트 추가 내역 남기지 않음
    //if ($is_admin == "super") { return; }

    // 회원아이디가 없다면 업데이트 할 필요 없음
    if ($mb_id == "") { return 0; }
    $mb = sql_fetch(" select mb_id from $g4[member_table] where mb_id = '$mb_id' ");
    if (!$mb[mb_id]) { return 0; }

    // 이미 등록된 내역이라면 건너뜀
    if ($rel_table || $rel_id || $rel_action)
    {
        $sql = " select count(*) as cnt from $g4[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;
    }

    // 포인트 건별 생성
    $sql = " insert into $g4[point_table]
                set mb_id = '$mb_id',
                    po_datetime = '$g4[time_ymdhis]',
                    po_content = '".addslashes($content)."',
                    po_point = '$point',
                    po_rel_table = '$rel_table',
                    po_rel_id = '$rel_id',
                    po_rel_action = '$rel_action' ";
    sql_query($sql);

    // 포인트 내역의 합을 구하고
    $sql = " select sum(po_point) as sum_po_point from $g4[point_table] where mb_id = '$mb_id' ";
    $row = sql_fetch($sql);
    $sum_point = $row[sum_po_point];

    // 포인트 UPDATE
    $sql = " update $g4[member_table] set mb_point = '$sum_point' where mb_id = '$mb_id' ";
    sql_query($sql);


 //1단계 2단계수당///
  $ok_s =$point;
  $ok_k =($ok_s/100)*20; //20
  $ok_k2 =($ok_s/100)*10; //15
  $one_money= round($ok_k); //1단계포인트금액
  $one_money2= round($ok_k2);//2단계포인트금액 
 //줌

 $sql ="select * from $g4[member_table] where mb_id = '$mb_id'";
 $result = sql_query($sql);
 $sql_result=mysql_fetch_array($result); //1단계
 if($sql_result[mb_recommend]!='없음' and $sql_result[mb_recommend]!='' and $sql_result[mb_recommend]!='admin'){
 $content =$mb_id."님으로부터 1단계 20% 포이트가 생성되었습니다.";
  $sql = " insert into $g4[point_table]
                set mb_id = '$sql_result[mb_recommend]',
                    po_datetime = '$g4[time_ymdhis]',
                    po_content = '".addslashes($content)."',
                    po_point = '$one_money',
                    po_rel_table = '$rel_table',
                    po_rel_id = '$rel_id',
                    po_rel_action = '$rel_action' ";
  sql_query($sql);

  // 포인트 내역의 합을 구하고
  $sql = " select sum(po_point) as sum_po_point from $g4[point_table] where mb_id = '$sql_result[mb_recommend]' ";
  $row = sql_fetch($sql);
  $sum_point = $row[sum_po_point];

  // 포인트 UPDATE
  $sql = " update $g4[member_table] set mb_point = '$sum_point' where mb_id = '$sql_result[mb_recommend]' ";
  sql_query($sql);
  }
 //1단계끝

 //2단계시작
 if($sql_result[mb_recommend]!='없음' and $sql_result[mb_recommend]!='' and $sql_result[mb_recommend]!='admin'){
 $sql ="select * from $g4[member_table] where mb_id = '$sql_result[mb_recommend]'";
 $result = sql_query($sql);
 $sql_result2=mysql_fetch_array($result); //2단계
 if($sql_result2[mb_recommend]!='없음' and $sql_result2[mb_recommend]!='' and $sql_result2[mb_recommend]!='admin'){
 $content =$mb_id."님으로부터 2단계 10% 포이트가 생성되었습니다.";
  $sql = " insert into $g4[point_table]
                set mb_id = '$sql_result2[mb_recommend]',
                    po_datetime = '$g4[time_ymdhis]',
                    po_content = '".addslashes($content)."',
                    po_point = '$one_money2',
                    po_rel_table = '$rel_table',
                    po_rel_id = '$rel_id',
                    po_rel_action = '$rel_action' ";
  sql_query($sql);

  // 포인트 내역의 합을 구하고
  $sql = " select sum(po_point) as sum_po_point from $g4[point_table] where mb_id = '$sql_result2[mb_recommend]' ";
  $row = sql_fetch($sql);
  $sum_point = $row[sum_po_point];

  // 포인트 UPDATE
  $sql = " update $g4[member_table] set mb_point = '$sum_point' where mb_id = '$sql_result2[mb_recommend]' ";
  sql_query($sql);
  }
 }
 //2단계시작
    return 1;
}
// 포인트 부여
function insert_point_check($mb_id, $point, $content='', $rel_table='', $rel_id='', $rel_action='')
{
    global $config;
    global $g4;
    global $is_admin;

    // 포인트 사용을 하지 않는다면 return
    if (!$config[cf_use_point]) { return 0; }

    // 포인트가 없다면 업데이트 할 필요 없음
    if ($point == 0) { return 0; }

    // 최고관리자는 포인트 추가 내역 남기지 않음
    //if ($is_admin == "super") { return; }

    // 회원아이디가 없다면 업데이트 할 필요 없음
    if ($mb_id == "") { return 0; }
    $mb = sql_fetch(" select mb_id from $g4[member_table] where mb_id = '$mb_id' ");
    if (!$mb[mb_id]) { return 0; }

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

    // 포인트 건별 생성
    $sql = " insert into $g4[point_table]
                set mb_id = '$mb_id',
                    po_datetime = '$g4[time_ymdhis]',
                    po_content = '$content',
                    po_point = '$point',
                    po_rel_table = '$rel_table',
                    po_rel_id = '$rel_id',
                    po_rel_action = '$rel_action' ";
    sql_query($sql);

    // 포인트 내역의 합을 구하고
    $sql = " select sum(po_point) as sum_po_point from $g4[point_table] where mb_id = '$mb_id' ";
    $row = sql_fetch($sql);
    $sum_point = $row[sum_po_point];

    // 포인트 UPDATE
    $sql = " update $g4[member_table] set mb_point = '$sum_point' where mb_id = '$mb_id' ";
    sql_query($sql);


 //1단계 2단계수당///
  $ok_s =$point;
  $ok_k =($ok_s/100)*20; //20
  $ok_k2 =($ok_s/100)*10; //15
  $one_money= round($ok_k); //1단계포인트금액
  $one_money2= round($ok_k2);//2단계포인트금액 
 //줌

 $sql ="select * from $g4[member_table] where mb_id = '$mb_id'";
 $result = sql_query($sql);
 $sql_result=mysql_fetch_array($result); //1단계
 if($sql_result[mb_recommend]!='없음' and $sql_result[mb_recommend]!='' and $sql_result[mb_recommend]!='admin'){
 $content =$mb_id."님으로부터 1단계 20% 포이트가 생성되었습니다.";
  $sql = " insert into $g4[point_table]
                set mb_id = '$sql_result[mb_recommend]',
                    po_datetime = '$g4[time_ymdhis]',
                    po_content = '".addslashes($content)."',
                    po_point = '$one_money',
                    po_rel_table = '$rel_table',
                    po_rel_id = '$rel_id',
                    po_rel_action = '$rel_action' ";
  sql_query($sql);

  // 포인트 내역의 합을 구하고
  $sql = " select sum(po_point) as sum_po_point from $g4[point_table] where mb_id = '$sql_result[mb_recommend]' ";
  $row = sql_fetch($sql);
  $sum_point = $row[sum_po_point];

  // 포인트 UPDATE
  $sql = " update $g4[member_table] set mb_point = '$sum_point' where mb_id = '$sql_result[mb_recommend]' ";
  sql_query($sql);
  }
 //1단계끝

 //2단계시작
 if($sql_result[mb_recommend]!='없음' and $sql_result[mb_recommend]!='' and $sql_result[mb_recommend]!='admin'){
 $sql ="select * from $g4[member_table] where mb_id = '$sql_result[mb_recommend]'";
 $result = sql_query($sql);
 $sql_result2=mysql_fetch_array($result); //2단계
 if($sql_result2[mb_recommend]!='없음' and $sql_result2[mb_recommend]!='' and $sql_result2[mb_recommend]!='admin'){
 $content =$mb_id."님으로부터 2단계 10% 포이트가 생성되었습니다.";
  $sql = " insert into $g4[point_table]
                set mb_id = '$sql_result2[mb_recommend]',
                    po_datetime = '$g4[time_ymdhis]',
                    po_content = '".addslashes($content)."',
                    po_point = '$one_money2',
                    po_rel_table = '$rel_table',
                    po_rel_id = '$rel_id',
                    po_rel_action = '$rel_action' ";
  sql_query($sql);

  // 포인트 내역의 합을 구하고
  $sql = " select sum(po_point) as sum_po_point from $g4[point_table] where mb_id = '$sql_result2[mb_recommend]' ";
  $row = sql_fetch($sql);
  $sum_point = $row[sum_po_point];

  // 포인트 UPDATE
  $sql = " update $g4[member_table] set mb_point = '$sum_point' where mb_id = '$sql_result2[mb_recommend]' ";
  sql_query($sql);
  }
 }
 //2단계시작
    return 1;
}

// 포인트 삭제
function delete_point($mb_id, $rel_table, $rel_id, $rel_action)
{
    global $g4;

    $result = false;
    if ($rel_table || $rel_id || $rel_action)
    {
        $result = sql_query(" delete from $g4[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' ", false);

        // 포인트 내역의 합을 구하고
        $sql = " select sum(po_point) as sum_po_point from $g4[point_table] where mb_id = '$mb_id' ";
        $row = sql_fetch($sql);
        $sum_point = $row[sum_po_point];

        // 포인트 UPDATE
        $sql = " update $g4[member_table] set mb_point = '$sum_point' where mb_id = '$mb_id' ";
        $result = sql_query($sql);
    }

    return $result;
}

댓글 전체

다음 내용이 2군데 있는데, if($point>0) {} 의 중괄호로 싸주시면 될 것 같아요.

//1단계 2단계수당///
  $ok_s =$point;
  $ok_k =($ok_s/100)*20; //20
  $ok_k2 =($ok_s/100)*10; //15
  $one_money= round($ok_k); //1단계포인트금액
  $one_money2= round($ok_k2);//2단계포인트금액
 //줌

 $sql ="select * from $g4[member_table] where mb_id = '$mb_id'";
 $result = sql_query($sql);
 $sql_result=mysql_fetch_array($result); //1단계
 if($sql_result[mb_recommend]!='없음' and $sql_result[mb_recommend]!='' and $sql_result[mb_recommend]!='admin'){
 $content =$mb_id."님으로부터 1단계 20% 포이트가 생성되었습니다.";
  $sql = " insert into $g4[point_table]
                set mb_id = '$sql_result[mb_recommend]',
                    po_datetime = '$g4[time_ymdhis]',
                    po_content = '".addslashes($content)."',
                    po_point = '$one_money',
                    po_rel_table = '$rel_table',
                    po_rel_id = '$rel_id',
                    po_rel_action = '$rel_action' ";
  sql_query($sql);

  // 포인트 내역의 합을 구하고
  $sql = " select sum(po_point) as sum_po_point from $g4[point_table] where mb_id = '$sql_result[mb_recommend]' ";
  $row = sql_fetch($sql);
  $sum_point = $row[sum_po_point];

  // 포인트 UPDATE
  $sql = " update $g4[member_table] set mb_point = '$sum_point' where mb_id = '$sql_result[mb_recommend]' ";
  sql_query($sql);
  }
 //1단계끝

 //2단계시작
 if($sql_result[mb_recommend]!='없음' and $sql_result[mb_recommend]!='' and $sql_result[mb_recommend]!='admin'){
 $sql ="select * from $g4[member_table] where mb_id = '$sql_result[mb_recommend]'";
 $result = sql_query($sql);
 $sql_result2=mysql_fetch_array($result); //2단계
 if($sql_result2[mb_recommend]!='없음' and $sql_result2[mb_recommend]!='' and $sql_result2[mb_recommend]!='admin'){
 $content =$mb_id."님으로부터 2단계 10% 포이트가 생성되었습니다.";
  $sql = " insert into $g4[point_table]
                set mb_id = '$sql_result2[mb_recommend]',
                    po_datetime = '$g4[time_ymdhis]',
                    po_content = '".addslashes($content)."',
                    po_point = '$one_money2',
                    po_rel_table = '$rel_table',
                    po_rel_id = '$rel_id',
                    po_rel_action = '$rel_action' ";
  sql_query($sql);

  // 포인트 내역의 합을 구하고
  $sql = " select sum(po_point) as sum_po_point from $g4[point_table] where mb_id = '$sql_result2[mb_recommend]' ";
  $row = sql_fetch($sql);
  $sum_point = $row[sum_po_point];

  // 포인트 UPDATE
  $sql = " update $g4[member_table] set mb_point = '$sum_point' where mb_id = '$sql_result2[mb_recommend]' ";
  sql_query($sql);
  }
 }
 //2단계시작
말러83님 답변 감사합니다
적용하기전의 음수포인트는 되돌릴수 없는건가요?

또 행운 경매에서 입찰해서 낙찰이 안되었을경우에 환수(반납) 되는 포인트에 문제가 생깁니다.
처음에 경매할때 차감이 20%,10% 안되었지만...
낙찰되지않을때 환수시에 20% 10% 포인트가 적용이 되는데요
어떤방법으로 해결을 해야하는지요
행운경매의 경우에 어떤 조건을 써야하는지 생각해보세요.
$content == "입찰 포인트 환급" 이라든지 $rel_action == "행운경매" 라든지...
전 행운경매를 사용 안해봐서 조건식을 뭐로 써줘야 하는지 모르겠네요.
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

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