php开发ebay店铺管理系统
php开发ebay店铺管理系统
一、主程序/admin/erp_ebay_order_stats.php代码如下 | |
define('IN_ECS', true); require(dirname(__FILE__) . '/includes/init.php'); require_once(ROOT_PATH . 'languages/' .$_CFG['lang']. '/admin/erp_ebay_statistic.php'); $smarty->assign('lang', $_LANG); /* act操作项的初始化 */ if (empty($_REQUEST['act'])) { $_REQUEST['act'] = 'view'; } else { $_REQUEST['act'] = trim($_REQUEST['act']); } if ($_REQUEST['act'] == 'view') { admin_priv('order_stats'); //检查权限 $is_multi = empty($_POST['is_multi']) ? false : true; /* 时间参数 */ if (isset($_POST['start_date']) && !empty($_POST['end_date'])) { $start_date = local_strtotime($_POST['start_date']); $end_date = local_strtotime($_POST['end_date']); } else { $today = local_strtotime(local_date('Y-m-d')); $start_date = $today - 86400 * 14; $end_date = $today; } $start_date_arr = array(); $end_date_arr = array(); if(!empty($_POST['year_month'])) { $tmp = $_POST['year_month']; for ($i = 0; $i < count($tmp); $i++) { if (!empty($tmp[$i])) { $tmp_time = local_strtotime($tmp[$i] . '-1'); //echo $tmp_time; $start_date_arr[] = $tmp_time; $end_date_arr[] = local_strtotime($tmp[$i] . '-' . date('t', $tmp_time)); //echo local_strtotime($tmp[$i] . '-' . date('t', $tmp_time)); } } } else { $tmp_time = local_strtotime(local_date('Y-m-d')); $start_date_arr[] = local_strtotime(local_date('Y-m') . '-1'); $end_date_arr[] = local_strtotime(local_date('Y-m') . '-31');; } /* ------------------------------------- */ /* -- 综合订单量 /* ------------------------------------- */ $max = 0; if(!$is_multi) { $general_xml = "<graph caption='$_LANG[general_stats]' shownames='1' showvalues='1' decimalPrecision='0' yaxisminvalue='0' yaxismaxvalue='%d' animation='1' outCnvBaseFontSize='12' baseFontSize='12' xaxisname='$_LANG[date]' yaxisname='$_LANG[order_count]' >"; $sql = "SELECT FLOOR((created_time - $start_date) / (24 * 3600)) AS sn, created_time, COUNT(*) AS order_count". " FROM " .$ecs->table('erp_ebay_order'). " WHERE ebay_status = 'Complete' AND created_time >= '$start_date' AND created_time <= " .($end_date + 86400). " GROUP BY sn"; $res = $db->query($sql); $key = 0; while ($val = $db->fetchRow($res)) { $val['order_date'] = gmdate('m-d',$val['created_time'] + $timezone * 3600 + 86400); $general_xml .= "<set name='$val[order_date]' value='$val[order_count]' color='" .chart_color($key). "' />"; if ($val['order_count'] > $max) { $max = $val['order_count']; } $key++; } $general_xml .= '</graph>'; $general_xml = sprintf($general_xml, $max); } else { $general_xml = "<graph caption='$_LANG[general_stats]' lineThickness='1' showValues='0' formatNumberScale='0' anchorRadius='2' divLineAlpha='20' divLineColor='CC3300' divLineIsDashed='1' showAlternateHGridColor='1' alternateHGridAlpha='5' alternateHGridColor='CC3300' shadowAlpha='40' labelStep='2' numvdivlines='5' chartRightMargin='35' bgColor='FFFFFF,CC3300' bgAngle='270' bgAlpha='10,10' outCnvBaseFontSize='12' baseFontSize='12' >"; foreach($start_date_arr AS $k => $val) { $seriesName = local_date('Y-m', $start_date_arr[$k]); $general_xml .= "<dataset seriesName='$seriesName' color='" . chart_color($k) . "' anchorBorderColor='" . chart_color($k) . "' anchorBgColor='" . chart_color($k) . "'>"; $sql = "SELECT FLOOR((created_time - $start_date_arr[$k]) / (24 * 3600)) AS sn, created_time, COUNT(*) AS order_count". " FROM " .$ecs->table('erp_ebay_order'). " WHERE ebay_status = 'Complete' AND created_time >= '$start_date_arr[$k]' AND created_time <= " .($end_date_arr[$k] + 86400). " GROUP BY sn"; $res = $db->query($sql); $lastDay = 0; while ($val = $db->fetchRow($res)) { $day = gmdate('d', $val['created_time'] + $timezone * 3600); if ($lastDay == 0) { $time_span = (($day-1) - $lastDay); $lastDay++; for (; $lastDay < $day; $lastDay++) { $general_xml .= "<set value='0' />"; } } $general_xml .= "<set value='$val[order_count]' />"; $lastDay = $day; } $general_xml .= "</dataset>"; } $general_xml .= "<categories>"; for ($i = 1; $i<=31; $i++) { $general_xml .= "<category label='$i' />"; } $general_xml .= "</categories>"; $general_xml .= "</graph>"; echo $general_xml; } /* ------------------------------------- */ /* -- 销售额 /* ------------------------------------- */ $max = 0; if(!$is_multi) { $amount_xml = "<graph caption='$_LANG[amount_stats]' shownames='1' showvalues='1' decimalPrecision='0' yaxisminvalue='0' yaxismaxvalue='%d' animation='1' outCnvBaseFontSize='12' baseFontSize='12' xaxisname='$_LANG[date]' yaxisname='$_LANG[order_count]' >"; $sql = "SELECT FLOOR((created_time - $start_date) / (24 * 3600)) AS sn, created_time, SUM(subtotal) AS order_amount". " FROM " .$ecs->table('erp_ebay_order'). " WHERE ebay_status = 'Complete' AND created_time >= '$start_date' AND created_time <= " .($end_date + 86400) . " AND ebay_status = 'Complete'" . " GROUP BY sn"; $res = $db->query($sql); $key = 0; while ($val = $db->fetchRow($res)) { $val['order_date'] = gmdate('m-d',$val['created_time'] + $timezone * 3600 + 86400); $amount_xml .= "<set name='$val[order_date]' value='$val[order_amount]' color='" .chart_color($key). "' />"; if ($val['order_amount'] > $max) { $max = $val['order_amount']; } $key++; } $amount_xml .= '</graph>'; $amount_xml = sprintf($amount_xml, $max); } else { $amount_xml = "<graph caption='$_LANG[amount_stats]' lineThickness='1' showValues='0' formatNumberScale='0' anchorRadius='2' divLineAlpha='20' divLineColor='CC3300' divLineIsDashed='1' showAlternateHGridColor='1' alternateHGridAlpha='5' alternateHGridColor='CC3300' shadowAlpha='40' labelStep='2' numvdivlines='5' chartRightMargin='35' bgColor='FFFFFF,CC3300' bgAngle='270' bgAlpha='10,10' outCnvBaseFontSize='12' baseFontSize='12' >"; foreach($start_date_arr AS $k => $val) { $seriesName = local_date('Y-m', $start_date_arr[$k]); $amount_xml .= "<dataset seriesName='$seriesName' color='" . chart_color($k) . "' anchorBorderColor='" . chart_color($k) . "' anchorBgColor='" . chart_color($k) . "'>"; $sql = "SELECT FLOOR((created_time - $start_date_arr[$k]) / (24 * 3600)) AS sn, created_time, SUM(subtotal) AS order_amount". " FROM " .$ecs->table('erp_ebay_order'). " WHERE ebay_status = 'Complete' AND created_time >= '$start_date_arr[$k]' AND created_time <= " .($end_date_arr[$k] + 86400) . " AND ebay_status = 'Complete'" . " GROUP BY sn"; $res = $db->query($sql); $lastDay = 0; while ($val = $db->fetchRow($res)) { $day = gmdate('d',$val['created_time'] + $timezone * 3600); if ($lastDay == 0) { $time_span = (($day-1) - $lastDay); $lastDay++; for (; $lastDay < $day; $lastDay++) { $amount_xml .= "<set value='0' />"; } } $amount_xml .= "<set value='$val[order_amount]' />"; $lastDay = $day; } $amount_xml .= "</dataset>"; } $amount_xml .= "<categories>"; for ($i = 1;$i<=31;$i++) { $amount_xml .= "<category label='$i' />"; } $amount_xml .= "</categories>"; $amount_xml .= "</graph>"; } /* ------------------------------------- */ /* -- 状态 /* ------------------------------------- */ $status_xml = ''; if(!$is_multi) { $status_xml .= "<graph caption='".$_LANG['status_stats']."' shownames='1' showvalues='1' decimalPrecision='2' outCnvBaseFontSize='13' baseFontSize='13' pieYScale='45' pieBorderAlpha='40' pieFillAlpha='70' pieSliceDepth='15' pieRadius='100' bgAngle='460'>"; $sql = "SELECT COUNT(*) AS order_count, ebay_status FROM " . $ecs->table('erp_ebay_order') . " WHERE created_time >= '$start_date' AND created_time < " .($end_date + 86400). " GROUP BY ebay_status ORDER BY order_count DESC LIMIT 20"; $res = $db->query($sql); $key = 0; while ($val = $db->fetchRow($res)) { $ebay_status = empty($val['ebay_status']) ? 'no data' : $val['ebay_status']; $status_xml .= "<set name='$ebay_status' value='$val[order_count]' color='" .chart_color($key). "' />"; $key++; } $status_xml .= '</graph>'; } else { $where = ''; foreach($start_date_arr AS $k => $val) { if ($where != '') { $where .= ' or '; } $where .= "(created_time >= '$start_date_arr[$k]' AND created_time <= " .($end_date_arr[$k] + 86400).")"; } $sql = "SELECT created_time, ebay_status FROM " . $ecs->table('erp_ebay_order') . " WHERE $where"; $res = $db->query($sql); $area_arr = array(); while ($val = $db->fetchRow($res)) { $date = local_date('Y-m', $val['created_time']); $area_arr[$val['ebay_status']] = null; if (isset($category[$date][$val['ebay_status']])) { $category[$date][$val['ebay_status']]++; } else { $category[$date][$val['ebay_status']] = 1; } } $status_xml = "<chart palette='2' caption='$_LANG[status_stats]' shownames='1' showvalues='0' numberPrefix='' useRoundEdges='1' legendBorderAlpha='0' outCnvBaseFontSize='13' baseFontSize='13'>"; $status_xml .= "<categories>"; foreach ($area_arr AS $k => $v) { $status_xml .= "<category label='$k'/>"; } $status_xml .= "</categories>"; $key = 0; foreach($start_date_arr AS $val) { $key++; $date = local_date('Y-m', $val); $status_xml .= "<dataset seriesName='$date' color='" .chart_color($key). "' showValues='0'>"; foreach ($area_arr AS $k => $v) { if (isset($category[$date][$k])) { $status_xml .= "<set value='" .$category[$date][$k]. "'/>"; } else { $status_xml .= "<set value='0'/>"; } } $status_xml .= "</dataset>"; } $status_xml .= "</chart>"; } /* 模板赋值 */ $smarty->assign('ur_here', $_LANG['01_erp_order_stats']); $smarty->assign('general_data', $general_xml); $smarty->assign('amount_data', $amount_xml); $smarty->assign('status_data', $status_xml); $smarty->assign('is_multi', $is_multi); /* 显示日期 */ $smarty->assign('start_date', local_date('Y-m-d', $start_date)); $smarty->assign('end_date', local_date('Y-m-d', $end_date)); for ($i = 0; $i < 5; $i++) { if (isset($start_date_arr[$i])) { $start_date_arr[$i] = local_date('Y-m', $start_date_arr[$i]); } else { $start_date_arr[$i] = null; } } $smarty->assign('start_date_arr', $start_date_arr); if (!$is_multi) { $filename = gmdate($_CFG['date_format'], $start_date + $timezone * 3600 + 86400) . '_' . gmdate($_CFG['date_format'], $end_date + $timezone * 3600 + 86400); $smarty->assign('action_link', array('text' => $_LANG['down_order_stats'], 'href'=>'erp_ebay_order_stats.php?act=download&filename=' . $filename . '&start_date=' . $start_date . '&end_date=' . $end_date)); } /* 显示页面 */ assign_query_info(); $smarty->display('erp_ebay_order_stats.htm'); } /* 报表下载 */ elseif ($act = 'download') { admin_priv('download_order_stats'); //检查权限 $filename = !empty($_REQUEST['filename']) ? trim($_REQUEST['filename']) : ''; header("Content-type: application/vnd.ms-excel; charset=utf-8"); header("Content-Disposition: attachment; filename=$filename.xls"); $start_date = empty($_GET['start_date']) ? strtotime('-20 day') : intval($_GET['start_date']); $end_date = empty($_GET['end_date']) ? time() : intval($_GET['end_date']); //综合订单量统计 $sql = "SELECT FLOOR((created_time - $start_date) / (24 * 3600)) AS sn, created_time, COUNT(*) AS order_count, SUM(subtotal) AS order_amount". " FROM " . $GLOBALS['ecs']->table('erp_ebay_order') . " WHERE created_time >= '$start_date' AND created_time <= " .($end_date + 86400) . " AND ebay_status = 'Complete'". " GROUP BY sn"; $res = $GLOBALS['db']->query($sql); $data .= $_LANG['date'] . "t"; $data .= $_LANG['order_count'] . "t"; $data .= $_LANG['order_amount'] . "tn"; while ($val = $GLOBALS['db']->fetchRow($res)) { $val['created_date'] = gmdate($_CFG['date_format'], $val['created_time'] + $timezone * 3600 + 86400); $data .= $val['created_date'] . "t"; $data .= $val['order_count'] . "t"; $data .= price_format($val['order_amount']) . "tn"; $total_count += $val['order_count']; $total_amount += $val['order_amount']; } $data .= $_LANG['total'] . "t"; $data .= $total_count . "t"; $data .= price_format($total_amount) . "tn"; //状态统计 $sql = "SELECT COUNT(*) AS order_count, SUM(subtotal) AS order_amount, ebay_status FROM " . $GLOBALS['ecs']->table('erp_ebay_order') . " WHERE created_time >= '$start_date' AND created_time <= " .($end_date + 86400). " GROUP BY ebay_status ORDER BY order_count DESC LIMIT 20"; $res = $GLOBALS['db']->query($sql); $data .= "tn"; $data .= $_LANG['order_status'] . "t"; $data .= $_LANG['order_count'] . "t"; $data .= $_LANG['order_amount'] . "tn"; while ($val = $GLOBALS['db']->fetchRow($res)) { $data .= $val['ebay_status'] . "t"; $data .= $val['order_count'] . "t"; $data .= price_format($val['order_amount']) . "tn"; } if (EC_CHARSET != 'UTF-8') { echo ecs_iconv(EC_CHARSET, 'UTF-8', $data) . "t"; } else { echo $data. "t"; } } ?> |
二、语言文件/languages/zh_cn/admin/erp_ebay_statistic.php
代码如下 | |
<?php /* 订单综合统计 */ $_LANG['tab_general'] = '综合订单量'; $_LANG['tab_amount'] = '销售额'; $_LANG['tab_status'] = '状态'; $_LANG['general_stats'] = '综合订单量统计'; $_LANG['amount_stats'] = '销售额统计'; $_LANG['status_stats'] = '状态统计'; $_LANG['date'] = '日期'; $_LANG['order_status'] = '状态'; $_LANG['order_count'] = '订单量(个)'; $_LANG['order_amount'] = '销售额'; $_LANG['total'] = '合计'; $_LANG['down_order_stats'] = '订单报表下载'; /* 买家排行 */ $_LANG['order_by'] = '排行'; $_LANG['buyer_id'] = '买家'; $_LANG['buyer_email'] = '邮箱'; $_LANG['buyer_phone'] = '电话'; $_LANG['country'] = '国家'; $_LANG['order_count'] = '订单数'; $_LANG['amount_sum'] = '购物金额'; $_LANG['created_time'] = '下单时间'; $_LANG['show_num'] = '显示数量'; $_LANG['order_amount_sort'] = '按订单数量排序'; $_LANG['download_amount_sort'] = '排行报表下载'; /* 公用 */ $_LANG['query'] = '查询'; $_LANG['start_date'] = '开始日期'; $_LANG['end_date'] = '结束日期'; $_LANG['date_interval'] = '日期'; $_LANG['year_month'] = '年月'; ?> |
三、模板文件/admin/templates/erp_ebay_order_stats.htm
代码如下 | |
{include file="pageheader.htm"} <script type="text/javascript" src="../js/calendar.php?></script> <link href="../js/calendar/calendar.css" rel="stylesheet" type="text/css" /> <div > <form action="" method="post" name="selectForm"> {$lang.date_interval} <input name="start_date" value="{$start_date}" onclick="return showCalendar(this, '%Y-%m-%d', false, false, this);" /> -- <input name="end_date" value="{$end_date}" onclick="return showCalendar(this, '%Y-%m-%d', false, false, this);" /> <input type="submit" name="submit" value="{$lang.query}" /> </form> <form action="" method="post" name="selectForm"> {$lang.year_month} <!--{foreach from=$start_date_arr item=start_date key=k}--> {if $k > 0} + {/if} <input name="year_month[]" value="{$start_date}" onclick="return showCalendar(this, '%Y-%m', false, false, this);" /> <!--{/foreach}--><input type="hidden" name="is_multi" value="1" /> <input type="submit" name="submit" value="{$lang.query}" /> </form> </div> <div > <!-- tab bar --> <div > <p> <span >{$lang.tab_general}</span> <span >{$lang.tab_amount}</span> <span >{$lang.tab_status}</span> </p> </div> <!-- tab body --> <div > <!-- 综合订单量 --> <table width="90%" > <tr><td align="center"> <!--{if $is_multi eq "0"}--> <object class codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="565" height="420" align="middle"> <PARAM NAME="FlashVars" value="&dataXML={$general_data}"> <PARAM NAME=movie VALUE="images/charts/line.swf?chartWidth=800&chartHeight=400"> <param NAME="quality" VALUE="high"> <param NAME="bgcolor" VALUE="#FFFFFF"> <param NAME="wmode" VALUE="opaque"> <embed src="images/charts/line.swf?chartWidth=800&chartHeight=400" FlashVars="&dataXML={$general_data}" quality="high" bgcolor="#FFFFFF" width="800" height="400" name="FCColumn2" wmode="opaque" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"> </object> <!--{else}--> <object class codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="565" height="420" align="middle"> <PARAM NAME="FlashVars" value="&dataXML={$general_data}"> <PARAM NAME=movie VALUE="images/charts/MSline.swf?chartWidth=800&chartHeight=400"> <param NAME="quality" VALUE="high"> <param NAME="bgcolor" VALUE="#FFFFFF"> <param NAME="wmode" VALUE="opaque" /> <embed src="images/charts/MSline.swf?chartWidth=800&chartHeight=400" FlashVars="&dataXML={$general_data}" quality="high" bgcolor="#FFFFFF" width="800" height="400" name="FCColumn2" wmode="opaque" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"> </object> <!--{/if}--> </td></tr> </table> <!-- 销售额 --> <table width="90%" > <tr><td align="center"> <!--{if $is_multi eq "0"}--> <object class codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="565" height="420" align="middle"> <PARAM NAME="FlashVars" value="&dataXML={$amount_data}"> <PARAM NAME=movie VALUE="images/charts/line.swf?chartWidth=800&chartHeight=400"> <param NAME="quality" VALUE="high"> <param NAME="bgcolor" VALUE="#FFFFFF"> <param NAME="wmode" VALUE="opaque"> <embed src="images/charts/line.swf?chartWidth=800&chartHeight=400" FlashVars="&dataXML={$amount_data}" quality="high" bgcolor="#FFFFFF" width="800" height="400" name="FCColumn2" wmode="opaque" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"> </object> <!--{else}--> <object class codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="565" height="420" align="middle"> <PARAM NAME="FlashVars" value="&dataXML={$amount_data}"> <PARAM NAME=movie VALUE="images/charts/MSline.swf?chartWidth=800&chartHeight=400"> <param NAME="quality" VALUE="high"> <param NAME="bgcolor" VALUE="#FFFFFF"> <param NAME="wmode" VALUE="opaque" /> <embed src="images/charts/MSline.swf?chartWidth=800&chartHeight=400" FlashVars="&dataXML={$amount_data}" quality="high" bgcolor="#FFFFFF" width="800" height="400" name="FCColumn2" wmode="opaque" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"> </object> <!--{/if}--> </td></tr> </table> <!-- 状态 --> <table width="90%" > <tr><td align="center"> <!--{if $is_multi eq "0"}--> <OBJECT class codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" WIDTH="465" HEIGHT="320" ALIGN="middle"> <PARAM NAME="FlashVars" value="&dataXML={$status_data-tab}"> <PARAM NAME=movie VALUE="images/charts/pie3d.swf?chartWidth=800&chartHeight=400"> <PARAM NAME=quality VALUE=high> <PARAM NAME=bgcolor VALUE=#FFFFFF> <param NAME="wmode" VALUE="opaque" /> <EMBED src="images/charts/pie3d.swf?chartWidth=800&chartHeight=400" FlashVars="&dataXML={$status_data}" quality=high bgcolor=#FFFFFF WIDTH="800" HEIGHT="400" NAME="General" ALIGN="middle" wmode="opaque" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED> </OBJECT> <!--{else}--> <OBJECT class codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" WIDTH="465" HEIGHT="320" ALIGN="middle"> <PARAM NAME="FlashVars" value="&dataXML={$status_data}"> <PARAM NAME=movie VALUE="images/charts/ScrollColumn2D.swf?chartWidth=800&chartHeight=400"> <PARAM NAME=quality VALUE=high> <PARAM NAME=bgcolor VALUE=#FFFFFF> <param NAME="wmode" VALUE="opaque" /> <EMBED src="images/charts/ScrollColumn2D.swf?chartWidth=800&chartHeight=400" FlashVars="&dataXML={$status_data}" quality=high bgcolor=#FFFFFF WIDTH="800" HEIGHT="400" NAME="General" wmode="opaque" ALIGN="middle" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED> </OBJECT> <!--{/if}--> </td></tr> </table> </div> </div> {insert_scripts files="tab.js"} <script type="Text/Javascript" language="JavaScript"> <!-- onload = function() { // 开始检查订单 startCheckOrder(); } //--> </script> {include file="pagefooter.htm"} |