table('admin_message') . ' AS a, ' . $ecs->table('admin_user') . ' AS b ' . // "WHERE a.sender_id = b.user_id AND a.receiver_id = '$_SESSION[admin_id]' AND " . // "a.readed = 0 AND deleted = 0 ORDER BY a.sent_time DESC"; // $admin_msg = $db->GetAll($sql); // $smarty->assign('admin_msg', $admin_msg); //取得今日的unix時間戳 $today_start = mktime(0, 0, 0, date('m'), date('d'), date('Y')); $today_end = mktime(0, 0, 0, date('m'), date('d') + 1, date('Y')) - 1; $month_start = mktime(0, 0, 0, date('m'), 1, date('Y')); $month_end = mktime(23, 59, 59, date('m'), date('t'), date('Y')); //今日銷售總額 //訂單金額 $today['order_amount'] = Db::name('order_info') ->where('add_time', 'between', [$today_start, $today_end]) ->where('order_status', 'in', '1,5,6') ->sum('order_amount'); //付款金額 $today['money_paid_money'] = Db::name('order_info') ->where('add_time', 'between', [$today_start, $today_end]) ->where('order_status', 'in', '1,5,6') ->sum('money_paid'); //餘額金額 $today['surplus_money'] = Db::name('order_info') ->where('add_time', 'between', [$today_start, $today_end]) ->where('order_status', 'in', '1,5,6') ->sum('surplus'); //總金額 // $today['money'] = $today['money_paid_money'] + $today['surplus_money']; $today['money'] = $today['order_amount']; //今日訂單數量 $today['order'] = Db::name('order_info') ->where('add_time', 'between', [$today_start, $today_end]) ->count(); //今日註冊會員 $today['user'] = Db::name('users') ->where('reg_time', 'between', [$today_start, $today_end]) ->count(); /* “未確認”的訂單 */ $order['unconfirmed'] = Db::name('order_info') ->where('order_status', 'in', '0') ->count(); /* 待付款的訂單: */ $order['await_pay'] = Db::name('order_info') ->where('order_status', 'in', '1') ->where('pay_status', 'in', '0,1') ->where('pay_id', '<>', '0') ->count(); /* 待發貨的訂單: */ $order['await_ship'] = Db::name('order_info') ->whereRaw('order_status = 1 and ((pay_status in (0,1) and pay_id = 0) or (pay_status = 2)) and shipping_status not in (1,5)') ->count(); /* 已完成的訂單 */ $order['finished'] = Db::name('order_info') ->where('order_status', 'in', '7') ->count(); /* 新缺貨登記 */ $order['new_booking'] = Db::name('booking_goods') ->where('is_dispose', '=', '0') ->count(); /* 售後申請 */ $order['after_sale'] = Db::name('back_order') ->where('status_back', '<>', '3') ->count(); /* “部分發貨”的訂單 */ $order['shipped_part'] = Db::name('order_info') ->where('order_status', 'in', '5') ->count(); // $today_start = mktime(0,0,0,date('m'),date('d'),date('Y')); // $order['stats'] = $db->getRow('SELECT COUNT(*) AS oCount, IFNULL(SUM(order_amount), 0) AS oAmount' . // ' FROM ' . $ecs->table('order_info')); // $sql = "SELECT COUNT(*) AS num, FROM_UNIXTIME(add_time,'%Y-%m-%d') AS date FROM " . $ecs->table('order_info') . " WHERE add_time >= '$today_start' GROUP BY date"; //取得本月份每日訂單數 $order_static = Db::name('order_info') ->where('add_time', 'between', [$month_start, $month_end]) ->field('FROM_UNIXTIME(add_time, "%d") as day,count(*) as num') ->group('day') ->order('day', 'asc') ->select(); foreach ($order_static as $value) { $echart['order_num'][intval($value['day']) - 1] = $value['num']; } for ($i = 0; $i <= date('d') - 1; $i++) { if (!isset($echart['order_num'][$i])) { $echart['order_num'][$i] = 0; } } ksort($echart['order_num']); //取得本月份每日訂單金額 $order_money = Db::name('order_info') ->where('add_time', 'between', [$month_start, $month_end]) ->where('pay_status', 'in', '2') ->field('FROM_UNIXTIME(add_time, "%d") as day,sum(order_amount) as amount') ->group('day') ->order('day', 'asc') ->select(); foreach ($order_money as $value) { $echart['order_amount'][intval($value['day']) - 1] = $value['amount']; } for ($i = 0; $i <= date('d') - 1; $i++) { if (!isset($echart['order_amount'][$i])) { $echart['order_amount'][$i] = 0; } } ksort($echart['order_amount']); $result = [ 'today' => $today, 'echart' => $echart, 'order' => $order, ]; return $this->Success($result); //當前月份 $thismonth = date('m'); $smarty->assign('thismonth', $thismonth); $smarty->assign('today', $today); /* ecmoban zhou */ /* 商品信息 */ $goods['total'] = $db->GetOne('SELECT COUNT(*) FROM ' . $ecs->table('goods') . ' WHERE is_delete = 0 AND is_alone_sale = 1 AND is_real = 1'); $virtual_card['total'] = $db->GetOne('SELECT COUNT(*) FROM ' . $ecs->table('goods') . ' WHERE is_delete = 0 AND is_alone_sale = 1 AND is_real=0 AND extension_code=\'virtual_card\''); $goods['new'] = $db->GetOne('SELECT COUNT(*) FROM ' . $ecs->table('goods') . ' WHERE is_delete = 0 AND is_new = 1 AND is_real = 1'); $virtual_card['new'] = $db->GetOne('SELECT COUNT(*) FROM ' . $ecs->table('goods') . ' WHERE is_delete = 0 AND is_new = 1 AND is_real=0 AND extension_code=\'virtual_card\''); $goods['best'] = $db->GetOne('SELECT COUNT(*) FROM ' . $ecs->table('goods') . ' WHERE is_delete = 0 AND is_best = 1 AND is_real = 1'); $virtual_card['best'] = $db->GetOne('SELECT COUNT(*) FROM ' . $ecs->table('goods') . ' WHERE is_delete = 0 AND is_best = 1 AND is_real=0 AND extension_code=\'virtual_card\''); $goods['hot'] = $db->GetOne('SELECT COUNT(*) FROM ' . $ecs->table('goods') . ' WHERE is_delete = 0 AND is_hot = 1 AND is_real = 1'); $virtual_card['hot'] = $db->GetOne('SELECT COUNT(*) FROM ' . $ecs->table('goods') . ' WHERE is_delete = 0 AND is_hot = 1 AND is_real=0 AND extension_code=\'virtual_card\''); $time = gmtime(); $goods['promote'] = $db->GetOne('SELECT COUNT(*) FROM ' . $ecs->table('goods') . ' WHERE is_delete = 0 AND promote_price>0' . " AND promote_start_date <= '$time' AND promote_end_date >= '$time' AND is_real = 1"); $virtual_card['promote'] = $db->GetOne('SELECT COUNT(*) FROM ' . $ecs->table('goods') . ' WHERE is_delete = 0 AND promote_price>0' . " AND promote_start_date <= '$time' AND promote_end_date >= '$time' AND is_real=0 AND extension_code='virtual_card'"); /* 缺貨商品 */ if ($_CFG['use_storage']) { $sql = 'SELECT COUNT(*) FROM ' . $ecs->table('goods') . ' WHERE is_delete = 0 AND goods_number <= warn_number AND is_real = 1'; $goods['warn'] = $db->GetOne($sql); $sql = 'SELECT COUNT(*) FROM ' . $ecs->table('goods') . ' WHERE is_delete = 0 AND goods_number <= warn_number AND is_real=0 AND extension_code=\'virtual_card\''; $virtual_card['warn'] = $db->GetOne($sql); } else { $goods['warn'] = 0; $virtual_card['warn'] = 0; } $smarty->assign('goods', $goods); $smarty->assign('virtual_card', $virtual_card); /* 訪問統計信息 */ $today = local_getdate(); $sql = 'SELECT COUNT(*) FROM ' . $ecs->table('stats') . ' WHERE access_time > ' . (mktime(0, 0, 0, $today['mon'], $today['mday'], $today['year']) - date('Z')); $today_visit = $db->GetOne($sql); $smarty->assign('today_visit', $today_visit); $online_users = $sess->get_users_count(); $smarty->assign('online_users', $online_users); /* 最近反饋 */ $sql = "SELECT COUNT(f.msg_id) " . "FROM " . $ecs->table('feedback') . " AS f " . "LEFT JOIN " . $ecs->table('feedback') . " AS r ON r.parent_id=f.msg_id " . 'WHERE f.parent_id=0 AND ISNULL(r.msg_id) '; $smarty->assign('feedback_number', $db->GetOne($sql)); /* 未審核評論 */ $smarty->assign('comment_number', $db->getOne('SELECT COUNT(*) FROM ' . $ecs->table('comment') . ' WHERE status = 0 AND parent_id = 0')); /* 每月數據統計 ecmoban start zhou*/ $froms_tooltip = array( 'trigger' => 'item', 'formatter' => '{a}
{b} : {c} ({d}%)' ); $froms_legend = array( 'orient' => 'vertical', 'x' => 'left', 'y' => '20', 'data' => array() ); $froms_toolbox = array( 'show' => true, 'feature' => array( 'magicType' => array( 'show' => true, 'type' => array('pie', 'funnel') ), 'restore' => array('show' => true), 'saveAsImage' => array('show' => true) ) ); $froms_calculable = true; $froms_series = array( array( 'type' => 'pie', 'radius' => '55%', 'center' => array('50%', '60%') ) ); $froms_data = array(); $froms_options = array(); $sql = 'SELECT `referer`, count(*) AS `count` FROM ' . $ecs->table('order_info') . ' WHERE `add_time` BETWEEN ' . $month_start . ' AND ' . $month_end . ' GROUP BY `referer` ORDER BY `count` DESC'; $result = $db->query($sql); while ($row = mysqli_fetch_assoc($result)) { $froms_data[] = array('value' => $row['count'], 'name' => $row['referer']); $froms_legend_data[] = $row['referer']; } $froms_legend['data'] = $froms_legend_data; $froms_series[0]['data'] = $froms_data; $froms_options['tooltip'] = $froms_tooltip; $froms_options['legend'] = $froms_legend; $froms_options['toolbox'] = $froms_toolbox; $froms_options['calculabe'] = $froms_calculable; $froms_options['series'] = $froms_series; $smarty->assign('froms_option', json_encode($froms_options)); //當月每日訂單數統計 $orders_tooltip = array('trigger' => 'axis'); $orders_legend = array('data' => array()); $orders_toolbox = array( 'show' => true, 'x' => 'right', 'feature' => array( 'magicType' => array( 'show' => true, 'type' => array('line', 'bar') ), 'restore' => array( 'show' => true ), 'saveAsImage' => array( 'show' => true ) ) ); $orders_calculable = true; $orders_xAxis = array( 'type' => 'category', 'boundryGap' => false, 'data' => array() ); $orders_yAxis = array( 'type' => 'value', 'axisLabel' => array( 'formatter' => '{value}個' ) ); $orders_series = array( array( 'name' => '訂單個數', 'type' => 'line', 'data' => array(), 'markPoint' => array( 'data' => array( array( 'type' => 'max', 'name' => '最大值' ), array( 'type' => 'min', 'name' => '最小值' ) ) ) ) ); $sql = 'SELECT DATE_FORMAT(FROM_UNIXTIME(`add_time`),"%d") AS day,COUNT(*) AS count,SUM(money_paid) AS money, SUM(money_paid)+SUM(surplus) AS superman FROM ' . $ecs->table('order_info') . ' WHERE `add_time` BETWEEN ' . $month_start . ' AND ' . $month_end . ' GROUP BY day ORDER BY day ASC '; $result = $db->query($sql); while ($row = mysqli_fetch_assoc($result)) { $orders_series_data[intval($row['day'])] = intval($row['count']); $sales_series_data[intval($row['day'])] = floatval($row['money']); $sales_series_data[intval($row['day'])] = floatval($row['superman']); } for ($i = 1; $i <= date('d'); $i++) { if (empty($orders_series_data[$i])) { $orders_series_data[$i] = 0; $sales_series_data[$i] = 0; } $orders_xAxis_data[] = $i; $sales_xAxis_data[] = $i; } $orders_xAxis['data'] = $orders_xAxis_data; ksort($orders_series_data); $orders_series[0]['data'] = array_values($orders_series_data); $orders_option['tooltip'] = $orders_tooltip; $orders_option['legend'] = $orders_legend; $orders_option['toolbox'] = $orders_toolbox; $orders_option['calculable'] = $orders_calculable; $orders_option['xAxis'] = $orders_xAxis; $orders_option['yAxis'] = $orders_yAxis; $orders_option['series'] = $orders_series; $smarty->assign('orders_option', json_encode($orders_option)); //當月每日銷售額統計 $sales_tooltip = array('trigger' => 'axis'); $sales_legend = array('data' => array()); $sales_toolbox = array( 'show' => true, 'x' => 'right', 'feature' => array( 'magicType' => array( 'show' => true, 'type' => array('line', 'bar') ), 'restore' => array( 'show' => true ), 'saveAsImage' => array( 'show' => true ) ) ); $sales_calculable = true; $sales_xAxis = array( 'type' => 'category', 'boundryGap' => false, 'data' => array() ); $sales_yAxis = array( 'type' => 'value', 'axisLabel' => array( 'formatter' => '{value}元' ) ); $sales_series = array( array( 'name' => '銷售額', 'type' => 'line', 'data' => array(), 'markPoint' => array( 'data' => array( array( 'type' => 'max', 'name' => '最大值' ), array( 'type' => 'min', 'name' => '最小值' ) ) ) ) ); $sales_xAxis['data'] = $sales_xAxis_data; ksort($sales_series_data); $sales_series[0]['data'] = array_values($sales_series_data); $sales_option['tooltip'] = $sales_tooltip; $sales_option['toolbox'] = $sales_toolbox; $sales_option['calculable'] = $sales_calculable; $sales_option['xAxis'] = $sales_xAxis; $sales_option['yAxis'] = $sales_yAxis; $sales_option['series'] = $sales_series; $smarty->assign('sales_option', json_encode($sales_option)); /* ecmoban end */ assign_query_info(); $smarty->assign('ecs_version', VERSION); $smarty->assign('ecs_release', RELEASE); $smarty->assign('ecs_lang', $_CFG['lang']); $smarty->assign('ecs_charset', strtoupper(EC_CHARSET)); $smarty->assign('install_date', local_date($_CFG['date_format'], $_CFG['install_date'])); $smarty->display('start.htm'); } }