추천 비추천 여분필드에 있는 포인트 지급 차감 관련 문의
본문
$is_success = false;
$ss_times = (int)$boset['na_gtimes']; // 횟수
$ss_name = 'ss_good_'.$bo_table.'_'.$wr_id; // 세션
if ($good == 'good' || $good == 'nogood') {
if($write['mb_id'] == $member['mb_id']) {
$error = '자신의 글에는 추천 또는 비추천 하실 수 없습니다.';
print_result($error, $success, $count);
}
if (!$board['bo_use_good'] && $good == 'good') {
$error = '이 게시판은 추천 기능을 사용하지 않습니다.';
print_result($error, $success, $count);
}
if (!$board['bo_use_nogood'] && $good == 'nogood') {
$error = '이 게시판은 비추천 기능을 사용하지 않습니다.';
print_result($error, $success, $count);
}
$sql = " select bg_id, bg_flag, bg_datetime from {$g5['board_good_table']}
where bo_table = '{$bo_table}'
and wr_id = '{$wr_id}'
and mb_id = '{$member['mb_id']}'
and bg_flag in ('good', 'nogood') ";
$row = sql_fetch($sql);
if ($row['bg_flag']) {
$good = $row['bg_flag'];
if ($good == 'good')
$status = '추천';
else
$status = '비추천';
// 취소체크
$cancel_sec = (int)$boset['na_gcancel'];
if($cancel_sec > 0 && G5_SERVER_TIME < (strtotime($row['bg_datetime']) + $cancel_sec)) {
if($ss_times > 0) {
$times = get_session($ss_name);
if($times) {
if($ss_times > $times) {
set_session($ss_name, $times + 1);
} else {
$error = "더이상 취소할 수 없습니다.";
print_result($error, $success, $count);
}
} else {
set_session($ss_name, 1);
}
}
// 내역 삭제
sql_query(" delete from {$g5['board_good_table']} where bg_id = '{$row['bg_id']}' ");
// 추천(찬성), 비추천(반대) 카운트 감소
sql_query(" update {$g5['write_prefix']}{$bo_table} set wr_{$good} = wr_{$good} - 1 where wr_id = '{$wr_id}' ");
$count = $write['wr_'.$good] - 1;
$success = "$status 취소를 하셨습니다.";
// 추천(찬성), 비추천(반대) 취소에 따른 포인트 반환
if ($good == "nogood") {
insert_point($write['mb_id'], '2', "{$board['bo_subject']} {$wr_id} 글에 {$member['mb_nick']}님이 비추천을 취소했습니다.", $bo_table, $wr_id, $member['mb_id'].'비추천 취소');
}
if ($good == "good") {
insert_point($write['mb_id'], '-2', "{$board['bo_subject']} {$wr_id} 글에 {$member['mb_nick']}님이 추천을 취소했습니다.", $bo_table, $wr_id, $member['mb_id'].'추천 취소');
}
} else {
$error = "이미 $status 하셨습니다.";
}
print_result($error, $success, $count);
} else{
// 추천(찬성), 비추천(반대) 카운트 증가
sql_query(" update {$g5['write_prefix']}{$bo_table} set wr_{$good} = wr_{$good} + 1 where wr_id = '{$wr_id}' ");
// 추천(찬성), 비추천(반대) 취소에 따른 포인트 적립
if ($good == "nogood") {
insert_point($write['mb_id'], '-2', "{$board['bo_subject']} {$wr_id} 글에 {$member['mb_nick']}님이 비추천했습니다.", $bo_table, $wr_id, $member['mb_id'].'비추천');
}
if ($good == "good") {
insert_point($write['mb_id'], '2', "{$board['bo_subject']} {$wr_id} 글에 {$member['mb_nick']}님이 추천했습니다.", $bo_table, $wr_id, $member['mb_id'].'추천');
}
// 내역 생성
sql_query(" insert {$g5['board_good_table']} set bo_table = '{$bo_table}', wr_id = '{$wr_id}', mb_id = '{$member['mb_id']}', bg_flag = '{$good}', bg_datetime = '".G5_TIME_YMDHIS."' ");
$sql = " select wr_{$good} as count from {$g5['write_prefix']}{$bo_table} where wr_id = '$wr_id' ";
$row = sql_fetch($sql);
$count = $row['count'];
if ($good == 'good')
$status = '추천';
else
$status = '비추천';
if($opt) {
run_event('comment_increase_good_json', $bo_table, $wr_id, $good);
} else {
run_event('bbs_increase_good_json', $bo_table, $wr_id, $good);
}
$is_success = true;
}
}
위 추천 비추천 시 포인트 지급 및 차감이 되는데, 포인트 지급 차감을 게시판 wr_18 여분필드 값을 차감되게 하려고 하는데 포인트 부분에 어떻게 넣어야 할까요?
답변 2
예를 들어 다음과 같이 해볼 수 있을 것 같습니다.
포인트를 wr_18에 저장하는 부분을 추가
// 추천(찬성), 비추천(반대) 취소에 따른 포인트 반환
if ($good == "nogood") {
// 비추천을 취소할 경우 포인트를 반환합니다.
// 여기서 '-2'는 포인트를 차감하는 양입니다. 적절한 값을 사용해주세요.
sql_query(" update {$g5['write_prefix']}{$bo_table} set wr_18 = wr_18 - 2 where wr_id = '{$wr_id}' ");
// 이하 포인트 취소 로직
}
if ($good == "good") {
// 추천을 취소할 경우 포인트를 반환합니다.
// 여기서 '2'는 포인트를 지급하는 양입니다. 적절한 값을 사용해주세요.
sql_query(" update {$g5['write_prefix']}{$bo_table} set wr_18 = wr_18 + 2 where wr_id = '{$wr_id}' ");
// 이하 포인트 취소 로직
}
다시 수정해 봤습니다. 참고해 보세요
if ($good == "nogood") {
// 비추천을 취소할 경우 관리자가 지정한 포인트를 차감합니다.
// $write['wr_18']에는 관리자가 설정한 값을 가져옵니다.
$point_to_deduct = intval($write['wr_18']); // wr_18에 저장된 포인트 값을 가져옵니다.
sql_query(" update {$g5['write_prefix']}{$bo_table} set wr_18 = wr_18 where wr_id = '{$wr_id}' "); // wr_18 초기화
if ($point_to_deduct > 0) {
// 글 작성자의 현재 포인트를 가져옵니다.
$writer_points = get_point($write['mb_id']);
if ($writer_points >= $point_to_deduct) {
// 포인트 차감
insert_point($write['mb_id'], -$point_to_deduct, "{$board['bo_subject']} {$wr_id} 글에 {$member['mb_nick']}님이 비추천을 취소했습니다.", $bo_table, $wr_id, $member['mb_id'].'비추천 취소');
} else {
// 포인트가 부족한 경우 메시지를 표시합니다.
$error = "포인트가 부족합니다.";
print_result($error, $success, $count);
exit; // 포인트가 부족하면 더 이상의 처리를 하지 않고 종료합니다.
}
}
// 이하 포인트 취소 로직
}