543 lines
18 KiB
PHP
543 lines
18 KiB
PHP
<?php
|
|
$sub_menu = '400000';
|
|
include_once('./_common.php');
|
|
|
|
$max_limit = 7; // 몇행 출력할 것인지?
|
|
|
|
$g5['title'] = ' 쇼핑몰관리';
|
|
include_once (G5_ADMIN_PATH.'/admin.head.php');
|
|
|
|
$pg_anchor = '<ul class="anchor sidx_anchor">
|
|
<li><a href="#anc_sidx_ord">주문현황</a></li>
|
|
<li><a href="#anc_sidx_rdy">입금완료미배송내역</a></li>
|
|
<li><a href="#anc_sidx_wait">미입금주문내역</a></li>
|
|
<li><a href="#anc_sidx_ps">사용후기</a></li>
|
|
<li><a href="#anc_sidx_qna">상품문의</a></li>
|
|
</ul>';
|
|
|
|
// 주문상태에 따른 합계 금액
|
|
function get_order_status_sum($status)
|
|
{
|
|
global $g5;
|
|
|
|
$sql = " select count(*) as cnt,
|
|
sum(od_cart_price + od_send_cost + od_send_cost2 - od_cancel_price) as price
|
|
from {$g5['g5_shop_order_table']}
|
|
where od_status = '$status' ";
|
|
$row = sql_fetch($sql);
|
|
|
|
$info = array();
|
|
$info['count'] = (int)$row['cnt'];
|
|
$info['price'] = (int)$row['price'];
|
|
$info['href'] = './orderlist.php?od_status='.urlencode($status);
|
|
|
|
return $info;
|
|
}
|
|
|
|
// 일자별 주문 합계 금액
|
|
function get_order_date_sum($date)
|
|
{
|
|
global $g5;
|
|
|
|
$sql = " select sum(od_cart_price + od_send_cost + od_send_cost2) as orderprice,
|
|
sum(od_cancel_price) as cancelprice
|
|
from {$g5['g5_shop_order_table']}
|
|
where SUBSTRING(od_time, 1, 10) = '$date' ";
|
|
$row = sql_fetch($sql);
|
|
|
|
$info = array();
|
|
$info['order'] = (int)$row['orderprice'];
|
|
$info['cancel'] = (int)$row['cancelprice'];
|
|
|
|
return $info;
|
|
}
|
|
|
|
// 일자별 결제수단 주문 합계 금액
|
|
function get_order_settle_sum($date)
|
|
{
|
|
global $g5, $default;
|
|
|
|
$case = array('신용카드', '계좌이체', '가상계좌', '무통장', '휴대폰');
|
|
$info = array();
|
|
|
|
// 결제수단별 합계
|
|
foreach($case as $val)
|
|
{
|
|
$sql = " select sum(od_cart_price + od_send_cost + od_send_cost2 - od_receipt_point - od_cart_coupon - od_coupon - od_send_coupon) as price,
|
|
count(*) as cnt
|
|
from {$g5['g5_shop_order_table']}
|
|
where SUBSTRING(od_time, 1, 10) = '$date'
|
|
and od_settle_case = '$val' ";
|
|
$row = sql_fetch($sql);
|
|
|
|
$info[$val]['price'] = (int)$row['price'];
|
|
$info[$val]['count'] = (int)$row['cnt'];
|
|
}
|
|
|
|
// 포인트 합계
|
|
$sql = " select sum(od_receipt_point) as price,
|
|
count(*) as cnt
|
|
from {$g5['g5_shop_order_table']}
|
|
where SUBSTRING(od_time, 1, 10) = '$date'
|
|
and od_receipt_point > 0 ";
|
|
$row = sql_fetch($sql);
|
|
$info['포인트']['price'] = (int)$row['price'];
|
|
$info['포인트']['count'] = (int)$row['cnt'];
|
|
|
|
// 쿠폰 합계
|
|
$sql = " select sum(od_cart_coupon + od_coupon + od_send_coupon) as price,
|
|
count(*) as cnt
|
|
from {$g5['g5_shop_order_table']}
|
|
where SUBSTRING(od_time, 1, 10) = '$date'
|
|
and ( od_cart_coupon > 0 or od_coupon > 0 or od_send_coupon > 0 ) ";
|
|
$row = sql_fetch($sql);
|
|
$info['쿠폰']['price'] = (int)$row['price'];
|
|
$info['쿠폰']['count'] = (int)$row['cnt'];
|
|
|
|
return $info;
|
|
}
|
|
|
|
function get_max_value($arr)
|
|
{
|
|
foreach($arr as $key => $val)
|
|
{
|
|
if(is_array($val))
|
|
{
|
|
$arr[$key] = get_max_value($val);
|
|
}
|
|
}
|
|
|
|
sort($arr);
|
|
|
|
return array_pop($arr);
|
|
}
|
|
?>
|
|
|
|
<div class="sidx">
|
|
<section id="anc_sidx_ord">
|
|
<h2>주문현황</h2>
|
|
<?php echo $pg_anchor; ?>
|
|
|
|
<?php
|
|
$arr_order = array();
|
|
$x_val = array();
|
|
for($i=6; $i>=0; $i--) {
|
|
$date = date('Y-m-d', strtotime('-'.$i.' days', G5_SERVER_TIME));
|
|
|
|
$x_val[] = $date;
|
|
$arr_order[] = get_order_date_sum($date);
|
|
}
|
|
|
|
$max_y = get_max_value($arr_order);
|
|
$max_y = ceil(($max_y) / 1000) * 1000;
|
|
$y_val = array();
|
|
$y_val[] = $max_y;
|
|
|
|
for($i=4; $i>=1; $i--) {
|
|
$y_val[] = $max_y * (($i * 2) / 10);
|
|
}
|
|
|
|
$max_height = 230;
|
|
$h_val = array();
|
|
$js_val = array();
|
|
$offset = 10; // 금액이 상대적으로 작아 높이가 0일 때 기본 높이로 사용
|
|
foreach($arr_order as $val) {
|
|
if($val['order'] > 0)
|
|
$h1 = intval(($max_height * $val['order']) / $max_y) + $offset;
|
|
else
|
|
$h1 = 0;
|
|
|
|
if($val['cancel'] > 0)
|
|
$h2 = intval(($max_height * $val['cancel']) / $max_y) + $offset;
|
|
else
|
|
$h2 = 0 ;
|
|
|
|
$h_val['order'][] = $h1;
|
|
$h_val['cancel'][] = $h2;
|
|
}
|
|
?>
|
|
|
|
<div id="sidx_graph">
|
|
<ul id="sidx_graph_price">
|
|
<?php
|
|
foreach($y_val as $val) {
|
|
?>
|
|
<li><span></span><?php echo number_format($val); ?></li>
|
|
<?php
|
|
}
|
|
?>
|
|
</ul>
|
|
<ul id="sidx_graph_area">
|
|
<?php
|
|
for($i=0; $i<count($x_val); $i++) {
|
|
$order_title = date("n월 j일", strtotime($x_val[$i])).' 주문: '.display_price($arr_order[$i]['order']);
|
|
$cancel_title = date("n월 j일", strtotime($x_val[$i])).' 취소: '.display_price($arr_order[$i]['cancel']);
|
|
$k = 10 - $i;
|
|
$li_bg = 'bg'.($i%2);
|
|
?>
|
|
<li class="<?php echo $li_bg; ?>" style="z-index:<?php echo $k; ?>">
|
|
<div class="graph order" title="<?php echo $order_title; ?>">
|
|
|
|
</div>
|
|
<div class="graph cancel" title="<?php echo $cancel_title; ?>">
|
|
|
|
</div>
|
|
</li>
|
|
<?php
|
|
}
|
|
?>
|
|
</ul>
|
|
<ul id="sidx_graph_date">
|
|
<?php
|
|
foreach($x_val as $val) {
|
|
?>
|
|
<li><span></span><?php echo substr($val, 5, 5).' ('.get_yoil($val).')'; ?></li>
|
|
<?php
|
|
}
|
|
?>
|
|
</ul>
|
|
<div id="sidx_graph_legend">
|
|
<span id="legend_order"></span> 주문
|
|
<span id="legend_cancel"></span> 취소
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<div id="sidx_stat">
|
|
<section id="anc_sidx_act">
|
|
<h2>처리할 주문</h2>
|
|
<?php echo $pg_anchor; ?>
|
|
|
|
<div id="sidx_take_act" class="tbl_head01 tbl_wrap">
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th scope="col" class="td_mng">상태변경</th>
|
|
<th scope="col">건수</th>
|
|
<th scope="col">금액</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<?php
|
|
$info = get_order_status_sum('주문');
|
|
?>
|
|
<th scope="row">주문 -> 입금</th>
|
|
<td class="td_numbig"><a href="<?php echo $info['href']; ?>"><?php echo number_format($info['count']); ?></a></td>
|
|
<td class="td_price"><a href="<?php echo $info['href']; ?>"><?php echo number_format($info['price']); ?></a></td>
|
|
</tr>
|
|
<tr>
|
|
<?php
|
|
$info = get_order_status_sum('입금');
|
|
?>
|
|
<th scope="row">입금 -> 준비</th>
|
|
<td class="td_numbig"><a href="<?php echo $info['href']; ?>"><?php echo number_format($info['count']); ?></a></td>
|
|
<td class="td_price"><a href="<?php echo $info['href']; ?>"><?php echo number_format($info['price']); ?></a></td>
|
|
</tr>
|
|
<tr>
|
|
<?php
|
|
$info = get_order_status_sum('준비');
|
|
?>
|
|
<th scope="row">준비 -> 배송</th>
|
|
<td class="td_numbig"><a href="<?php echo $info['href']; ?>"><?php echo number_format($info['count']); ?></a></td>
|
|
<td class="td_price"><a href="<?php echo $info['href']; ?>"><?php echo number_format($info['price']); ?></a></td>
|
|
</tr>
|
|
<tr>
|
|
<?php
|
|
$info = get_order_status_sum('배송');
|
|
?>
|
|
<th scope="row">배송 -> 완료</th>
|
|
<td class="td_numbig"><a href="<?php echo $info['href']; ?>"><?php echo number_format($info['count']); ?></a></td>
|
|
<td class="td_price"><a href="<?php echo $info['href']; ?>"><?php echo number_format($info['price']); ?></a></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</section>
|
|
|
|
<section id="anc_sidx_stock">
|
|
<h2>재고현황</h2>
|
|
<?php echo $pg_anchor; ?>
|
|
|
|
<?php
|
|
// 재고부족 상품
|
|
$item_noti = 0;
|
|
$sql = " select count(*) as cnt
|
|
from {$g5['g5_shop_item_table']}
|
|
where it_use = '1'
|
|
and it_option_subject = ''
|
|
and it_stock_qty <= it_noti_qty ";
|
|
$row = sql_fetch($sql);
|
|
$item_noti = (int)$row['cnt'];
|
|
|
|
// 재고부족 옵션
|
|
$option_noti = 0;
|
|
$sql = " select count(*) as cnt
|
|
from {$g5['g5_shop_item_option_table']}
|
|
where io_use = '1'
|
|
and io_stock_qty <= io_noti_qty ";
|
|
$row = sql_fetch($sql);
|
|
$option_noti = (int)$row['cnt'];
|
|
|
|
// SMS 정보
|
|
if ($config['cf_sms_use'] && $config['cf_icode_id'] && $config['cf_icode_pw']) {
|
|
$userinfo = get_icode_userinfo($config['cf_icode_id'], $config['cf_icode_pw']);
|
|
}
|
|
?>
|
|
<div id="sidx_stock" class="tbl_head01 tbl_wrap">
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th scope="col">재고부족 상품</th>
|
|
<th scope="col">재고부족 옵션</th>
|
|
<th scope="col">SMS 잔여금액</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="td_numbig"><a href="./itemstocklist.php"><?php echo number_format($item_noti); ?></a></td>
|
|
<td class="td_numbig"><a href="./optionstocklist.php"><?php echo number_format($option_noti); ?></a></td>
|
|
<td class="td_price"><?php echo display_price(intval($userinfo['coin'])); ?></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</section>
|
|
</div>
|
|
</div>
|
|
|
|
<section id="anc_sidx_settle">
|
|
<h2>결제수단별 주문현황</h2>
|
|
<?php echo $pg_anchor; ?>
|
|
|
|
<div id="sidx_settle" class="tbl_head02 tbl_wrap">
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th scope="col" rowspan="2">구분</th>
|
|
<?php
|
|
$term = 3;
|
|
$info = array();
|
|
$info_key = array();
|
|
for($i=($term - 1); $i>=0; $i--) {
|
|
$date = date("Y-m-d", strtotime('-'.$i.' days', G5_SERVER_TIME));
|
|
$info[$date] = get_order_settle_sum($date);
|
|
|
|
$day = substr($date, 5, 5).' ('.get_yoil($date).')';
|
|
$info_key[] = $date;
|
|
?>
|
|
<th scope="col" colspan="2"><?php echo $day; ?></th>
|
|
<?php } ?>
|
|
</tr>
|
|
<tr>
|
|
<?php
|
|
for($i=0; $i<$term; $i++) {
|
|
?>
|
|
<th scope="col">건수</th>
|
|
<th scope="col">금액</th>
|
|
<?php } ?>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php
|
|
$case = array('신용카드', '계좌이체', '가상계좌', '무통장', '휴대폰', '포인트', '쿠폰');
|
|
|
|
foreach($case as $val)
|
|
{
|
|
$val_cnt ++;
|
|
?>
|
|
<tr>
|
|
<th scope="row" id="th_val_<?php echo $val_cnt; ?>" class="td_category"><?php echo $val; ?></th>
|
|
<?php
|
|
foreach($info_key as $date)
|
|
{
|
|
?>
|
|
<td><?php echo number_format($info[$date][$val]['count']); ?></td>
|
|
<td><?php echo number_format($info[$date][$val]['price']); ?></td>
|
|
<?php
|
|
}
|
|
?>
|
|
</tr>
|
|
<?php
|
|
}
|
|
?>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</section>
|
|
|
|
<div class="sidx sidx_cs">
|
|
<section id="anc_sidx_oneq">
|
|
<h2>1:1문의</h2>
|
|
<?php echo $pg_anchor; ?>
|
|
|
|
<div class="ul_01 ul_wrap">
|
|
<ul>
|
|
<?php
|
|
$sql = " select * from {$g5['qa_content_table']}
|
|
where qa_status = '0'
|
|
and qa_type = '0'
|
|
order by qa_num
|
|
limit $max_limit ";
|
|
$result = sql_query($sql);
|
|
for ($i=0; $row=sql_fetch_array($result); $i++)
|
|
{
|
|
$sql1 = " select * from {$g5['member_table']} where mb_id = '{$row['mb_id']}' ";
|
|
$row1 = sql_fetch($sql1);
|
|
|
|
$name = get_sideview($row['mb_id'], get_text($row['qa_name']), $row1['mb_email'], $row1['mb_homepage']);
|
|
?>
|
|
<li>
|
|
<span class="oneq_cate oneq_span"><?php echo get_text($row['qa_category']); ?></span>
|
|
<a href="<?php echo G5_BBS_URL; ?>/qaview.php?qa_id=<?php echo $row['qa_id']; ?>" target="_blank" class="oneq_link"><?php echo conv_subject($row['qa_subject'],40); ?></a>
|
|
<?php echo $name; ?>
|
|
</li>
|
|
<?php
|
|
}
|
|
|
|
if ($i == 0)
|
|
echo '<li class="empty_list">자료가 없습니다.</li>';
|
|
?>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="btn_list03 btn_list">
|
|
<a href="<?php echo G5_BBS_URL; ?>/qalist.php" target="_blank">1:1문의 더보기</a>
|
|
</div>
|
|
</section>
|
|
|
|
<section id="anc_sidx_qna">
|
|
<h2>상품문의</h2>
|
|
<?php echo $pg_anchor; ?>
|
|
|
|
<div class="ul_01 ul_wrap">
|
|
<ul>
|
|
<?php
|
|
$sql = " select * from {$g5['g5_shop_item_qa_table']}
|
|
where iq_answer = ''
|
|
order by iq_id desc
|
|
limit $max_limit ";
|
|
$result = sql_query($sql);
|
|
for ($i=0; $row=sql_fetch_array($result); $i++)
|
|
{
|
|
$sql1 = " select * from {$g5['member_table']} where mb_id = '{$row['mb_id']}' ";
|
|
$row1 = sql_fetch($sql1);
|
|
|
|
$name = get_sideview($row['mb_id'], get_text($row['iq_name']), $row1['mb_email'], $row1['mb_homepage']);
|
|
?>
|
|
<li>
|
|
<a href="./itemqaform.php?w=u&iq_id=<?php echo $row['iq_id']; ?>" class="qna_link"><?php echo conv_subject($row['iq_subject'],40); ?></a>
|
|
<?php echo $name; ?>
|
|
</li>
|
|
<?php
|
|
}
|
|
|
|
if ($i == 0)
|
|
echo '<li class="empty_list">자료가 없습니다.</li>';
|
|
?>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="btn_list03 btn_list">
|
|
<a href="./itemqalist.php?sort1=iq_answer&sort2=asc">상품문의 더보기</a>
|
|
</div>
|
|
</section>
|
|
|
|
<section id="anc_sidx_ps">
|
|
<h2>사용후기</h2>
|
|
<?php echo $pg_anchor; ?>
|
|
|
|
<div class="ul_01 ul_wrap">
|
|
<ul>
|
|
<?php
|
|
$sql = " select * from {$g5['g5_shop_item_use_table']}
|
|
where is_confirm = 0
|
|
order by is_id desc
|
|
limit $max_limit ";
|
|
$result = sql_query($sql);
|
|
for ($i=0; $row=sql_fetch_array($result); $i++)
|
|
{
|
|
$sql1 = " select * from {$g5['member_table']} where mb_id = '{$row['mb_id']}' ";
|
|
$row1 = sql_fetch($sql1);
|
|
|
|
$name = get_sideview($row['mb_id'], get_text($row['is_name']), $row1['mb_email'], $row1['mb_homepage']);
|
|
?>
|
|
<li>
|
|
<a href="./itemuseform.php?w=u&is_id=<?php echo $row['is_id']; ?>" class="ps_link"><?php echo conv_subject($row['is_subject'],40); ?></a>
|
|
<?php echo $name; ?>
|
|
</li>
|
|
<?php
|
|
}
|
|
if ($i == 0) echo '<li class="empty_list">자료가 없습니다.</li>';
|
|
?>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="btn_list03 btn_list">
|
|
<a href="./itemuselist.php?sort1=is_confirm&sort2=asc">사용후기 더보기</a>
|
|
</div>
|
|
</section>
|
|
</div>
|
|
|
|
<script>
|
|
$(function() {
|
|
graph_draw();
|
|
|
|
$("#sidx_graph_area div").hover(
|
|
function() {
|
|
if($(this).is(":animated"))
|
|
return false;
|
|
|
|
var title = $(this).attr("title");
|
|
if(title && $(this).data("title") == undefined)
|
|
$(this).data("title", title);
|
|
var left = parseInt($(this).css("left")) + 10;
|
|
var bottom = $(this).height() + 5;
|
|
|
|
$(this)
|
|
.attr("title", "")
|
|
.append("<div id=\"price_tooltip\"><div></div></div>");
|
|
$("#price_tooltip")
|
|
.find("div")
|
|
.html(title)
|
|
.end()
|
|
// .css({ left: left+"px", bottom: bottom+"px" })
|
|
.show(200);
|
|
},
|
|
function() {
|
|
if($(this).is(":animated"))
|
|
return false;
|
|
|
|
$(this).attr("title", $(this).data("title"));
|
|
$("#price_tooltip").remove();
|
|
}
|
|
);
|
|
});
|
|
|
|
function graph_draw()
|
|
{
|
|
var g_h1 = new Array("<?php echo implode('", "', $h_val['order']); ?>");
|
|
var g_h2 = new Array("<?php echo implode('", "', $h_val['cancel']); ?>");
|
|
var duration = 600;
|
|
|
|
var $el = $("#sidx_graph_area li");
|
|
var h1, h2;
|
|
var $g1, $g2;
|
|
|
|
$el.each(function(index) {
|
|
h1 = g_h1[index];
|
|
h2 = g_h2[index];
|
|
|
|
$g1 = $(this).find(".order");
|
|
$g2 = $(this).find(".cancel");
|
|
|
|
$g1.animate({ height: h1+"px" }, duration);
|
|
$g2.animate({ height: h2+"px" }, duration);
|
|
});
|
|
}
|
|
</script>
|
|
|
|
<?php
|
|
include_once (G5_ADMIN_PATH.'/admin.tail.php');
|
|
?>
|