You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
423 lines
16 KiB
423 lines
16 KiB
<?php
|
|
|
|
namespace app\adminapi\controller\v1;
|
|
|
|
use app\adminapi\ApiController;
|
|
use think\facade\Db;
|
|
|
|
class Index extends ApiController
|
|
{
|
|
public function index()
|
|
{
|
|
/* 管理員留言信息 */
|
|
// $sql = 'SELECT message_id, sender_id, receiver_id, sent_time, readed, deleted, title, message, user_name ' .
|
|
// 'FROM ' . $ecs->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} <br/>{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');
|
|
}
|
|
}
|