From 087c61075198303fa2f48c7154f7ca6c377130ac Mon Sep 17 00:00:00 2001 From: chicpro Date: Fri, 31 May 2013 16:15:28 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A7=88=EC=9D=BC=EB=A6=AC=EC=A7=80=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20=EC=83=81?= =?UTF-8?q?=ED=92=88=20=ED=8F=AC=EC=9D=B8=ED=8A=B8=20=EC=9C=A0=ED=98=95=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- adm/admin.menu400.shop_1of2.php | 1 + adm/shop_admin/itemform.php | 59 ++++---- adm/shop_admin/itemformupdate.php | 5 + adm/shop_admin/mileagelist.php | 206 ++++++++++++++++++++++++++ adm/shop_admin/mileagelist_delete.php | 32 ++++ adm/shop_admin/mileageupdate.php | 24 +++ adm/shop_admin/orderform.php | 7 + extend/shop.extend2.php | 21 +++ install/install_db.php | 1 + install/shop.sql | 18 +++ lib/shop.lib.php | 46 ++++++ shop/cartupdate.php | 6 +- shop/item.php | 14 +- 13 files changed, 410 insertions(+), 30 deletions(-) create mode 100644 adm/shop_admin/mileagelist.php create mode 100644 adm/shop_admin/mileagelist_delete.php create mode 100644 adm/shop_admin/mileageupdate.php diff --git a/adm/admin.menu400.shop_1of2.php b/adm/admin.menu400.shop_1of2.php index 620df3357..418cd4ec2 100644 --- a/adm/admin.menu400.shop_1of2.php +++ b/adm/admin.menu400.shop_1of2.php @@ -14,6 +14,7 @@ $menu['menu400'] = array ( array('400620', '상품재고관리', G4_ADMIN_URL.'/shop_admin/itemstocklist.php', 'scf_item_stock'), array('400610', '상품유형관리', G4_ADMIN_URL.'/shop_admin/itemtypelist.php', 'scf_item_type'), array('400500', '상품옵션재고관리', G4_ADMIN_URL.'/shop_admin/optionstocklist.php', 'scf_item_option'), + array('400490', '마일리지관리', G4_ADMIN_URL.'/shop_admin/mileagelist.php', 'scf_mileage'), array('400500', '배송일괄처리', G4_ADMIN_URL.'/shop_admin/deliverylist.php', 'scf_deli', 1), array('400740', '배송업체관리', G4_ADMIN_URL.'/shop_admin/deliverycodelist.php', 'scf_deli_co', 1), array('400630', '이벤트관리', G4_ADMIN_URL.'/shop_admin/itemevent.php', 'scf_event'), diff --git a/adm/shop_admin/itemform.php b/adm/shop_admin/itemform.php index 159189b45..3de5bccae 100644 --- a/adm/shop_admin/itemform.php +++ b/adm/shop_admin/itemform.php @@ -775,11 +775,37 @@ $(function(){ + + + + + + + + + + + + + + - - 점 + + @@ -1314,30 +1340,11 @@ function fitemformcheck(f) } } - // 옵션값 검사 - for (var i=1; i<=6; i++) { - var opt = document.getElementsByName("it_opt"+i)[0]; - var arr = opt.value.split("\n"); - for (var k=0; k 99) { + alert("포인트 비율을 0과 99 사이의 값으로 입력해 주십시오."); + return false; } } diff --git a/adm/shop_admin/itemformupdate.php b/adm/shop_admin/itemformupdate.php index dc70af301..b65d34cea 100644 --- a/adm/shop_admin/itemformupdate.php +++ b/adm/shop_admin/itemformupdate.php @@ -351,6 +351,10 @@ for($i=0; $i 99) + alert("포인트 비율을 0과 99 사이의 값으로 입력해 주십시오."); + $sql_common = " ca_id = '$ca_id', ca_id2 = '$ca_id2', ca_id3 = '$ca_id3', @@ -374,6 +378,7 @@ $sql_common = " ca_id = '$ca_id', it_cust_price = '$it_cust_price', it_price = '$it_price', it_point = '$it_point', + it_point_type = '$it_point_type', it_sell_email = '$it_sell_email', it_use = '$it_use', it_stock_qty = '$it_stock_qty', diff --git a/adm/shop_admin/mileagelist.php b/adm/shop_admin/mileagelist.php new file mode 100644 index 000000000..a01d91204 --- /dev/null +++ b/adm/shop_admin/mileagelist.php @@ -0,0 +1,206 @@ +전체목록'; + +$mb = array(); +if ($sfl == 'mb_id' && $stx) + $mb = get_member(isset($stx)); + +$g4['title'] = '마일리지관리'; +include_once (G4_ADMIN_PATH.'/admin.head.php'); + +$colspan = 8; +?> + + + +
+
+ 마일리지 내역 검색 + + + 전체 건 + + + + + +
+
+ +
+

마일리지 내역

+ +
+ + + + + + + + + + + + + + + + + + + + + + '; + $link2 = ''; + ?> + + + + + + + + + + + + + '; + ?> + +
회원아이디이름별명일시마일리지 내용마일리지마일리지합
+ + + +
자료가 없습니다.
+ +
+ +
+ +
+
+ + + +
+

개별회원 마일리지 증감 설정

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+ +
+ + diff --git a/adm/shop_admin/mileagelist_delete.php b/adm/shop_admin/mileagelist_delete.php new file mode 100644 index 000000000..2e24b5df2 --- /dev/null +++ b/adm/shop_admin/mileagelist_delete.php @@ -0,0 +1,32 @@ + diff --git a/adm/shop_admin/mileageupdate.php b/adm/shop_admin/mileageupdate.php new file mode 100644 index 000000000..f7808576b --- /dev/null +++ b/adm/shop_admin/mileageupdate.php @@ -0,0 +1,24 @@ + $mb['mb_mileage'])) + alert('포인트를 깎는 경우 현재 마일리지보다 작으면 안됩니다.', './mileagelist.php?'.$qstr); + +insert_mileage($mb_id, $ml_point, $ml_content, '', ''); + +goto_url('./mileagelist.php?'.$qstr); +?> diff --git a/adm/shop_admin/orderform.php b/adm/shop_admin/orderform.php index f816c85b2..cecacbd33 100644 --- a/adm/shop_admin/orderform.php +++ b/adm/shop_admin/orderform.php @@ -48,9 +48,16 @@ if (!isset($order_not_point)) { // 회원이면서 포인트가 0보다 크다면 if ($tmp_row['mb_id'] && $row['ct_point'] > 0) { + /** 주문완료 포인트를 게시판 포인트와 연동하려면 주석제거 $po_point = $row['ct_point'] * $row['ct_qty']; $po_content = "$cart_title3 {$tmp_row['od_id']} ({$row['ct_id']}) $cart_title4"; insert_point($tmp_row['mb_id'], $po_point, $po_content, "@delivery", $tmp_row['mb_id'], "{$tmp_row['od_id']},{$row['uq_id']},{$row['ct_id']}"); + */ + + // 주문완료 쇼핑몰 포인트로 적립 + $ml_point = $row['ct_point'] * $row['ct_qty']; + $ml_content = "$cart_title3 {$tmp_row['od_id']} ({$row['ct_id']}) $cart_title4"; + insert_mileage($tmp_row['mb_id'], $ml_point, $ml_content, $tmp_row['od_id'], $row['ct_id']); } sql_query("update {$g4['shop_cart_table']} set ct_point_use = '1' where ct_id = '{$row['ct_id']}' "); diff --git a/extend/shop.extend2.php b/extend/shop.extend2.php index 71f3edacd..42b40de3a 100644 --- a/extend/shop.extend2.php +++ b/extend/shop.extend2.php @@ -199,4 +199,25 @@ if(!$result) { ADD `de_cart_keep_term` INT(11) NOT NULL DEFAULT '0' AFTER `de_code_dup_use`, ADD `de_guest_cart_use` TINYINT(4) NOT NULL DEFAULT '0' AFTER `de_cart_keep_term` ", false); } + +// 마일리지관련 필드 추가 +$sql = " select it_point_type from {$g4['shop_item_table']} limit 1 "; +$result = sql_query($sql, false); +if(!$result) { + sql_query(" CREATE TABLE IF NOT EXISTS `{$g4['shop_mileage_table']}` ( + `ml_id` INT(11) NOT NULL AUTO_INCREMENT, + `mb_id` VARCHAR(255) NOT NULL DEFAULT '', + `od_id` BIGINT(20) unsigned NOT NULL, + `ct_id` INT(11) NOT NULL DEFAULT '0', + `ml_content` VARCHAR(255) NOT NULL DEFAULT '', + `ml_point` INT(11) NOT NULL DEFAULT '0', + `ml_datetime` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', + PRIMARY KEY (`ml_id`), + KEY `mb_id` (`mb_id`) + ) ", false); + sql_query(" ALTER TABLE `{$g4['member_table']}` + ADD `mb_mileage` INT(11) NOT NULL DEFAULT '0' AFTER `mb_point` ", false); + sql_query(" ALTER TABLE `{$g4['shop_item_table']}` + ADD `it_point_type` TINYINT(4) NOT NULL DEFAULT '0' AFTER `it_point` ", false); +} ?> \ No newline at end of file diff --git a/install/install_db.php b/install/install_db.php index 16dbaac96..11d323eb4 100644 --- a/install/install_db.php +++ b/install/install_db.php @@ -487,6 +487,7 @@ if($shop_install) { fwrite($f, "\$g4['shop_onlinecalc_table'] = SHOP_TABLE_PREFIX.'onlinecalc'; // 온라인견적 테이블\n"); fwrite($f, "\$g4['shop_order_table'] = SHOP_TABLE_PREFIX.'order'; // 주문서 테이블\n"); fwrite($f, "\$g4['shop_wish_table'] = SHOP_TABLE_PREFIX.'wish'; // 보관함(위시리스트) 테이블\n"); + fwrite($f, "\$g4['shop_mileage_table'] = SHOP_TABLE_PREFIX.'mileage'; // 마일리지 테이블\n"); fwrite($f, "?>"); } diff --git a/install/shop.sql b/install/shop.sql index 0f7a2b021..30d2c873d 100644 --- a/install/shop.sql +++ b/install/shop.sql @@ -384,6 +384,7 @@ CREATE TABLE IF NOT EXISTS `shop_item` ( `it_cust_price` int(11) NOT NULL DEFAULT '0', `it_price` int(11) NOT NULL DEFAULT '0', `it_point` int(11) NOT NULL DEFAULT '0', + `it_point_type` tinyint(4) NOT NULL DEFAULT '0', `it_sell_email` varchar(255) NOT NULL DEFAULT '', `it_use` tinyint(4) NOT NULL DEFAULT '0', `it_stock_qty` int(11) NOT NULL DEFAULT '0', @@ -600,6 +601,23 @@ CREATE TABLE IF NOT EXISTS `shop_order` ( -- -------------------------------------------------------- +-- +-- Table structure for table `shop_mileage` +-- + +DROP TABLE IF EXISTS `shop_mileage`; +CREATE TABLE IF NOT EXISTS `shop_mileage` ( + `ml_id` INT(11) NOT NULL AUTO_INCREMENT, + `mb_id` VARCHAR(255) NOT NULL DEFAULT '', + `od_id` BIGINT(20) unsigned NOT NULL, + `ct_id` INT(11) NOT NULL DEFAULT '0', + `ml_content` VARCHAR(255) NOT NULL DEFAULT '', + `ml_point` INT(11) NOT NULL DEFAULT '0', + `ml_datetime` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', + PRIMARY KEY (`ml_id`), + KEY `mb_id` (`mb_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + -- -- Table structure for table `shop_wish` -- diff --git a/lib/shop.lib.php b/lib/shop.lib.php index 9f5c1ddf0..6c5f58779 100644 --- a/lib/shop.lib.php +++ b/lib/shop.lib.php @@ -1070,6 +1070,52 @@ function delete_item_thumbnail($dir, $file) } } } + +// 마일리지 부여 +function insert_mileage($mb_id, $point, $content='', $od_id, $ct_id) +{ + global $g4; + + // 포인트가 없다면 업데이트 할 필요 없음 + if ($point == 0) { return 0; } + + // 회원아이디가 없다면 업데이트 할 필요 없음 + 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($od_id && $ct_id) { + $sql = " select count(*) as cnt from {$g4['shop_mileage_table']} + where mb_id = '$mb_id' + and od_id = '$od_id' + and ct_id = '$ct_id' "; + $row = sql_fetch($sql); + if ($row['cnt']) + return -1; + } + + // 마일리지 건별 생성 + $sql = " insert into {$g4['shop_mileage_table']} + set mb_id = '$mb_id', + od_id = '$od_id', + ct_id = '$ct_id', + ml_content = '".addslashes($content)."', + ml_point = '$point', + ml_datetime = '".G4_TIME_YMDHIS."' "; + sql_query($sql); + + // 포인트 내역의 합을 구하고 + $sql = " select sum(ml_point) as sum_mileage from {$g4['shop_mileage_table']} where mb_id = '$mb_id' "; + $row = sql_fetch($sql); + $sum_mileage = $row['sum_mileage']; + + // 포인트 UPDATE + $sql = " update {$g4['member_table']} set mb_mileage = '$sum_mileage' where mb_id = '$mb_id' "; + sql_query($sql); + + return 1; +} //============================================================================== // 쇼핑몰 함수 모음 끝 //============================================================================== diff --git a/shop/cartupdate.php b/shop/cartupdate.php index 5a23f427d..e54e18c12 100644 --- a/shop/cartupdate.php +++ b/shop/cartupdate.php @@ -267,7 +267,11 @@ else // 장바구니에 담기 if ((int)$_POST['total_price'] !== (int)$total_price) die("Error.."); - $point = $it['it_point']; + if($it['it_point_type']) { + $point = floor(($it['it_price'] * ($it['it_point'] / 100) / 10)) * 10; + } else { + $point = $it['it_point']; + } // 포인트가 다름 if ((int)$point !== (int)$_POST['it_point'] && $config['cf_use_point']) die("Error..."); diff --git a/shop/item.php b/shop/item.php index 05fc471ad..0bcc0597b 100644 --- a/shop/item.php +++ b/shop/item.php @@ -319,7 +319,7 @@ else 판매가격 - 원 + @@ -337,8 +337,16 @@ else 포인트 - 점 - + 점 +