Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
______--______
ShopXO
提交
5a82819a
ShopXO
项目概览
______--______
/
ShopXO
与 Fork 源项目一致
Fork自
纵之格 / ShopXO
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
ShopXO
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
5a82819a
编写于
2月 23, 2019
作者:
G
gongfuxiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
新增后台管理首页仪表盘
上级
521b7482
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
413 addition
and
136 deletion
+413
-136
application/admin/controller/Index.php
application/admin/controller/Index.php
+24
-0
application/admin/view/default/index/init.html
application/admin/view/default/index/init.html
+58
-127
application/service/StatisticalService.php
application/service/StatisticalService.php
+319
-4
application/service/UserService.php
application/service/UserService.php
+1
-1
public/static/admin/default/css/index.init.css
public/static/admin/default/css/index.init.css
+11
-4
未找到文件。
application/admin/controller/Index.php
浏览文件 @
5a82819a
...
...
@@ -74,6 +74,30 @@ class Index extends Common
$user
=
StatisticalService
::
UserYesterdayTodayTotal
();
$this
->
assign
(
'user'
,
$user
[
'data'
]);
// 订单总数
$order_number
=
StatisticalService
::
OrderNumberYesterdayTodayTotal
();
$this
->
assign
(
'order_number'
,
$order_number
[
'data'
]);
// 订单成交总量
$order_complete_number
=
StatisticalService
::
OrderCompleteYesterdayTodayTotal
();
$this
->
assign
(
'order_complete_number'
,
$order_complete_number
[
'data'
]);
// 订单收入总计
$order_complete_money
=
StatisticalService
::
OrderCompleteMoneyYesterdayTodayTotal
();
$this
->
assign
(
'order_complete_money'
,
$order_complete_money
[
'data'
]);
// 近7日订单交易走势
$order_trading_trend
=
StatisticalService
::
OrderTradingTrendSevenTodayTotal
();
$this
->
assign
(
'order_trading_trend'
,
$order_trading_trend
[
'data'
]);
// 近7日订单支付方式
$order_type_number
=
StatisticalService
::
OrderPayTypeSevenTodayTotal
();
$this
->
assign
(
'order_type_number'
,
$order_type_number
[
'data'
]);
// 近7日热销商品
$goods_hot_sale
=
StatisticalService
::
GoodsHotSaleSevenTodayTotal
();
$this
->
assign
(
'goods_hot_sale'
,
$goods_hot_sale
[
'data'
]);
return
$this
->
fetch
();
}
}
...
...
application/admin/view/default/index/init.html
浏览文件 @
5a82819a
...
...
@@ -4,7 +4,7 @@
<div
class=
"content-right"
>
<div
class=
"content"
>
<!-- 基础统计 -->
<div
class=
"echarts-container shopxo-base"
style=
"display: none;"
>
<div
class=
"echarts-container shopxo-base"
>
<div
class=
"echarts-title"
>
<span
class=
"icon"
></span>
<span
class=
"title"
>
商城统计
</span>
...
...
@@ -27,42 +27,42 @@
<li>
<div
class=
"li-content"
>
<p
class=
"name"
>
订单总量
</p>
<p
class=
"total"
>
234234
</p>
<p
class=
"total"
>
{{$order_number.total_count}}
</p>
<div
class=
"yesterday"
>
<span>
昨日
</span>
<span>
34324
</span>
<span>
{{$order_number.yesterday_count}}
</span>
</div>
<div
class=
"today"
>
<span>
今日
</span>
<span>
65645
</span>
<span>
{{$order_number.today_count}}
</span>
</div>
</div>
</li>
<li>
<div
class=
"li-content"
>
<p
class=
"name"
>
成交总量
</p>
<p
class=
"total"
>
234234
</p>
<p
class=
"total"
>
{{$order_complete_number.total_count}}
</p>
<div
class=
"yesterday"
>
<span>
昨日
</span>
<span>
34324
</span>
<span>
{{$order_complete_number.yesterday_count}}
</span>
</div>
<div
class=
"today"
>
<span>
今日
</span>
<span>
65645
</span>
<span>
{{$order_complete_number.today_count}}
</span>
</div>
</div>
</li>
<li>
<div
class=
"li-content"
>
<p
class=
"name"
>
收入总计
</p>
<p
class=
"total"
>
234234
</p>
<p
class=
"total"
>
{{$order_complete_money.total_count}}
</p>
<div
class=
"yesterday"
>
<span>
昨日
</span>
<span>
34324
</span>
<span>
{{$order_complete_money.yesterday_count}}
</span>
</div>
<div
class=
"today"
>
<span>
今日
</span>
<span>
65645
</span>
<span>
{{$order_complete_money.today_count}}
</span>
</div>
</div>
</li>
...
...
@@ -70,17 +70,17 @@
</div>
<!--
支付方式
-->
<div
class=
"echarts-container"
style=
"display: none;"
>
<!--
近7日订单交易走势
-->
<div
class=
"echarts-container"
>
<div
class=
"echarts-title"
>
<span
class=
"icon"
></span>
<span
class=
"title"
>
支付方式
</span>
<span
class=
"title"
>
近7日订单交易走势
</span>
</div>
<div
id=
"echarts-order-
pay-type
"
></div>
<div
id=
"echarts-order-
trading
"
></div>
</div>
<!-- 组合 -->
<ul
class=
"am-avg-sm-1 am-avg-sm-2 am-avg-lg-2 echarts-combination-container-2"
style=
"display: none;"
>
<ul
class=
"am-avg-sm-1 am-avg-sm-2 am-avg-lg-2 echarts-combination-container-2"
>
<li>
<!-- 近7日热销商品 -->
<div
class=
"echarts-title"
>
...
...
@@ -91,12 +91,12 @@
</li>
<li>
<!-- 近7日订单
交易走势
-->
<!-- 近7日订单
支付方式
-->
<div
class=
"echarts-title"
>
<span
class=
"icon"
></span>
<span
class=
"title"
>
近7日订单
交易走势
</span>
<span
class=
"title"
>
近7日订单
支付方式
</span>
</div>
<div
id=
"echarts-order-
trading
"
></div>
<div
id=
"echarts-order-
pay-type
"
></div>
</li>
</ul>
...
...
@@ -155,14 +155,20 @@
<script
type=
"text/javascript"
>
$
(
function
()
{
// 订单支付方式
var
order_
pay_type_chart
=
echarts
.
init
(
document
.
getElementById
(
'
echarts-order-pay-type
'
));
// 近7日订单交易走势
var
order_
trading_chart
=
echarts
.
init
(
document
.
getElementById
(
'
echarts-order-trading
'
));
var
option
=
{
tooltip
:
{
trigger
:
'
axis
'
trigger
:
'
axis
'
,
axisPointer
:
{
type
:
'
cross
'
,
label
:
{
backgroundColor
:
'
#6a7985
'
}
}
},
legend
:
{
data
:
[
'
支付宝
'
,
'
微信
'
,
'
现金支付
'
,
'
货到付款
'
]
data
:
{{:
json_encode
(
$order_trading_trend
.
title_arr
)}}
},
toolbox
:
{
show
:
true
,
...
...
@@ -171,15 +177,20 @@ $(function()
dataView
:
{
show
:
true
,
readOnly
:
false
},
magicType
:
{
show
:
true
,
type
:
[
'
line
'
,
'
bar
'
,
'
stack
'
,
'
tiled
'
]},
restore
:
{
show
:
true
},
saveAsImage
:
{
show
:
true
}
saveAsImage
:
{
name
:
'
近7日订单交易走势
'
,
show
:
true
}
}
},
calculable
:
true
,
grid
:
{
left
:
'
3%
'
,
right
:
'
4%
'
,
bottom
:
'
3%
'
,
containLabel
:
true
},
xAxis
:
[
{
type
:
'
category
'
,
boundaryGap
:
false
,
data
:
[
'
周一
'
,
'
周二
'
,
'
周三
'
,
'
周四
'
,
'
周五
'
,
'
周六
'
,
'
周日
'
]
data
:
{{:
json_encode
(
$order_trading_trend
.
name_arr
)}}
}
],
yAxis
:
[
...
...
@@ -187,37 +198,12 @@ $(function()
type
:
'
value
'
}
],
series
:
[
{
name
:
'
支付宝
'
,
type
:
'
line
'
,
tiled
:
'
总量
'
,
data
:[
120
,
132
,
101
,
134
,
90
,
230
,
210
]
},
{
name
:
'
微信
'
,
type
:
'
line
'
,
tiled
:
'
总量
'
,
data
:[
220
,
182
,
191
,
234
,
290
,
330
,
310
]
},
{
name
:
'
现金支付
'
,
type
:
'
line
'
,
tiled
:
'
总量
'
,
data
:[
150
,
232
,
201
,
154
,
190
,
330
,
410
]
},
{
name
:
'
货到付款
'
,
type
:
'
line
'
,
tiled
:
'
总量
'
,
data
:[
320
,
332
,
301
,
334
,
390
,
330
,
320
]
},
]
series
:
{{:
json_encode
(
$order_trading_trend
.
data
)}}
};
order_pay_type
_chart
.
setOption
(
option
);
order_trading
_chart
.
setOption
(
option
);
// 热销商品
//
近7日
热销商品
var
goods_hot_chart
=
echarts
.
init
(
document
.
getElementById
(
'
echarts-goods-hot
'
));
var
option
=
{
title
:
{
...
...
@@ -226,12 +212,7 @@ $(function()
},
tooltip
:
{
trigger
:
'
item
'
,
formatter
:
"
{a} <br/>{b} : {c} ({d}%)
"
},
legend
:
{
orient
:
'
vertical
'
,
x
:
'
left
'
,
data
:[
'
直接访问
'
,
'
邮件营销
'
,
'
联盟广告
'
,
'
视频广告
'
,
'
搜索引擎
'
]
formatter
:
"
{b} : {c} ({d}%)
"
},
toolbox
:
{
show
:
true
,
...
...
@@ -250,60 +231,47 @@ $(function()
}
}
},
restore
:
{
show
:
tru
e
},
saveAsImage
:
{
show
:
true
}
restore
:
{
show
:
fals
e
},
saveAsImage
:
{
name
:
'
近7日热销商品
'
,
show
:
true
}
}
},
calculable
:
true
,
series
:
[
{
name
:
'
访问来源
'
,
type
:
'
pie
'
,
radius
:
'
55%
'
,
center
:
[
'
50%
'
,
'
60%
'
],
data
:[
{
value
:
335
,
name
:
'
直接访问
'
},
{
value
:
310
,
name
:
'
邮件营销
'
},
{
value
:
234
,
name
:
'
联盟广告
'
},
{
value
:
135
,
name
:
'
视频广告
'
},
{
value
:
1548
,
name
:
'
搜索引擎
'
}
]
data
:
{{:
json_encode
(
$goods_hot_sale
.
data
)}}
}
]
};
goods_hot_chart
.
setOption
(
option
);
//
订单交易走势
var
order_
trading_chart
=
echarts
.
init
(
document
.
getElementById
(
'
echarts-order-trading
'
));
//
近7日订单支付方式
var
order_
pay_type_chart
=
echarts
.
init
(
document
.
getElementById
(
'
echarts-order-pay-type
'
));
var
option
=
{
tooltip
:
{
trigger
:
'
axis
'
,
axisPointer
:
{
type
:
'
cross
'
,
label
:
{
backgroundColor
:
'
#6a7985
'
}
}
trigger
:
'
axis
'
},
legend
:
{
data
:
[
'
邮件营销
'
,
'
联盟广告
'
,
'
视频广告
'
,
'
直接访问
'
,
'
搜索引擎
'
]
data
:
{{:
json_encode
(
$order_type_number
.
title_arr
)}}
},
toolbox
:
{
feature
:
{
saveAsImage
:
{}
show
:
true
,
feature
:
{
mark
:
{
show
:
true
},
dataView
:
{
show
:
true
,
readOnly
:
false
},
magicType
:
{
show
:
true
,
type
:
[
'
line
'
,
'
bar
'
]},
restore
:
{
show
:
false
},
saveAsImage
:
{
name
:
'
近7日订单支付方式
'
,
show
:
true
}
}
},
grid
:
{
left
:
'
3%
'
,
right
:
'
4%
'
,
bottom
:
'
3%
'
,
containLabel
:
true
},
calculable
:
true
,
xAxis
:
[
{
type
:
'
category
'
,
boundaryGap
:
false
,
data
:
[
'
周一
'
,
'
周二
'
,
'
周三
'
,
'
周四
'
,
'
周五
'
,
'
周六
'
,
'
周日
'
]
data
:
{{:
json_encode
(
$order_type_number
.
name_arr
)}}
}
],
yAxis
:
[
...
...
@@ -311,46 +279,9 @@ $(function()
type
:
'
value
'
}
],
series
:
[
{
name
:
'
邮件营销
'
,
type
:
'
line
'
,
stack
:
'
总量
'
,
areaStyle
:
{},
data
:[
120
,
132
,
101
,
134
,
90
,
230
,
210
]
},
{
name
:
'
联盟广告
'
,
type
:
'
line
'
,
stack
:
'
总量
'
,
areaStyle
:
{},
data
:[
220
,
182
,
191
,
234
,
290
,
330
,
310
]
},
{
name
:
'
视频广告
'
,
type
:
'
line
'
,
stack
:
'
总量
'
,
areaStyle
:
{},
data
:[
150
,
232
,
201
,
154
,
190
,
330
,
410
]
},
{
name
:
'
直接访问
'
,
type
:
'
line
'
,
stack
:
'
总量
'
,
areaStyle
:
{
normal
:
{}},
data
:[
320
,
332
,
301
,
334
,
390
,
330
,
320
]
},
{
name
:
'
搜索引擎
'
,
type
:
'
line
'
,
stack
:
'
总量
'
,
areaStyle
:
{
normal
:
{}},
data
:[
820
,
932
,
901
,
934
,
1290
,
1330
,
1320
]
}
]
series
:
{{:
json_encode
(
$order_type_number
.
data
)}}
};
order_trading
_chart
.
setOption
(
option
);
order_pay_type
_chart
.
setOption
(
option
);
// 浏览器大小改变则实时更新图表大小
window
.
onresize
=
function
()
...
...
application/service/StatisticalService.php
浏览文件 @
5a82819a
...
...
@@ -27,6 +27,10 @@ class StatisticalService
private
static
$nearly_fifteen_days
;
private
static
$nearly_thirty_days
;
// 近7天日期
private
static
$seven_time_start
;
private
static
$seven_time_end
;
// 昨天日期
private
static
$yesterday_time_start
;
private
static
$yesterday_time_end
;
...
...
@@ -46,6 +50,10 @@ class StatisticalService
*/
public
static
function
Init
(
$params
=
[])
{
// 近7天日期
self
::
$seven_time_start
=
strtotime
(
date
(
'Y-m-d 00:00:00'
,
strtotime
(
'-7 day'
)));
self
::
$seven_time_end
=
time
();
// 昨天日期
self
::
$yesterday_time_start
=
strtotime
(
date
(
'Y-m-d 00:00:00'
,
strtotime
(
'-1 day'
)));
self
::
$yesterday_time_end
=
strtotime
(
date
(
'Y-m-d 23:59:59'
,
strtotime
(
'-1 day'
)));
...
...
@@ -75,10 +83,10 @@ class StatisticalService
}
self
::
${$name}
=
$date
;
}
}
/**
* 用户总数,今日,昨日
* 用户总数,今日,昨日
,总数
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
...
...
@@ -108,12 +116,319 @@ class StatisticalService
$today_count
=
Db
::
name
(
'User'
)
->
where
(
$where
)
->
count
();
// 数据组装
$data
=
[
$result
=
[
'total_count'
=>
$total_count
,
'yesterday_count'
=>
$yesterday_count
,
'today_count'
=>
$today_count
,
];
return
DataReturn
(
'处理成功'
,
0
,
$result
);
}
/**
* 订单总数,今日,昨日,总数
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-06T21:31:53+0800
* @param [array] $params [输入参数]
*/
public
static
function
OrderNumberYesterdayTodayTotal
(
$params
=
[])
{
// 初始化
self
::
Init
(
$params
);
// 订单状态
// (0待确认, 1已确认/待支付, 2已支付/待发货, 3已发货/待收货, 4已完成, 5已取消, 6已关闭)
// 总数
$where
=
[
[
'status'
,
'<='
,
4
],
];
$total_count
=
Db
::
name
(
'Order'
)
->
where
(
$where
)
->
count
();
// 昨天
$where
=
[
[
'status'
,
'<='
,
4
],
[
'add_time'
,
'>='
,
self
::
$yesterday_time_start
],
[
'add_time'
,
'<='
,
self
::
$yesterday_time_end
],
];
$yesterday_count
=
Db
::
name
(
'Order'
)
->
where
(
$where
)
->
count
();
// 今天
$where
=
[
[
'status'
,
'<='
,
4
],
[
'add_time'
,
'>='
,
self
::
$today_time_start
],
[
'add_time'
,
'<='
,
self
::
$today_time_end
],
];
$today_count
=
Db
::
name
(
'Order'
)
->
where
(
$where
)
->
count
();
// 数据组装
$result
=
[
'total_count'
=>
$total_count
,
'yesterday_count'
=>
$yesterday_count
,
'today_count'
=>
$today_count
,
];
return
DataReturn
(
'处理成功'
,
0
,
$result
);
}
/**
* 订单成交总量,今日,昨日,总数
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-06T21:31:53+0800
* @param [array] $params [输入参数]
*/
public
static
function
OrderCompleteYesterdayTodayTotal
(
$params
=
[])
{
// 初始化
self
::
Init
(
$params
);
// 订单状态
// (0待确认, 1已确认/待支付, 2已支付/待发货, 3已发货/待收货, 4已完成, 5已取消, 6已关闭)
// 总数
$where
=
[
[
'status'
,
'='
,
4
],
];
$total_count
=
Db
::
name
(
'Order'
)
->
where
(
$where
)
->
count
();
// 昨天
$where
=
[
[
'status'
,
'='
,
4
],
[
'add_time'
,
'>='
,
self
::
$yesterday_time_start
],
[
'add_time'
,
'<='
,
self
::
$yesterday_time_end
],
];
$yesterday_count
=
Db
::
name
(
'Order'
)
->
where
(
$where
)
->
count
();
// 今天
$where
=
[
[
'status'
,
'='
,
4
],
[
'add_time'
,
'>='
,
self
::
$today_time_start
],
[
'add_time'
,
'<='
,
self
::
$today_time_end
],
];
$today_count
=
Db
::
name
(
'Order'
)
->
where
(
$where
)
->
count
();
// 数据组装
$result
=
[
'total_count'
=>
$total_count
,
'yesterday_count'
=>
$yesterday_count
,
'today_count'
=>
$today_count
,
];
return
DataReturn
(
'处理成功'
,
0
,
$data
);
return
DataReturn
(
'处理成功'
,
0
,
$result
);
}
/**
* 订单收入总计,今日,昨日,总数
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-06T21:31:53+0800
* @param [array] $params [输入参数]
*/
public
static
function
OrderCompleteMoneyYesterdayTodayTotal
(
$params
=
[])
{
// 初始化
self
::
Init
(
$params
);
// 订单状态
// (0待确认, 1已确认/待支付, 2已支付/待发货, 3已发货/待收货, 4已完成, 5已取消, 6已关闭)
// 总数
$where
=
[
[
'status'
,
'<='
,
4
],
];
$total_count
=
Db
::
name
(
'Order'
)
->
where
(
$where
)
->
sum
(
'total_price'
);
// 昨天
$where
=
[
[
'status'
,
'<='
,
4
],
[
'add_time'
,
'>='
,
self
::
$yesterday_time_start
],
[
'add_time'
,
'<='
,
self
::
$yesterday_time_end
],
];
$yesterday_count
=
Db
::
name
(
'Order'
)
->
where
(
$where
)
->
sum
(
'total_price'
);
// 今天
$where
=
[
[
'status'
,
'<='
,
4
],
[
'add_time'
,
'>='
,
self
::
$today_time_start
],
[
'add_time'
,
'<='
,
self
::
$today_time_end
],
];
$today_count
=
Db
::
name
(
'Order'
)
->
where
(
$where
)
->
sum
(
'total_price'
);
// 数据组装
$result
=
[
'total_count'
=>
PriceNumberFormat
(
$total_count
),
'yesterday_count'
=>
PriceNumberFormat
(
$yesterday_count
),
'today_count'
=>
PriceNumberFormat
(
$today_count
),
];
return
DataReturn
(
'处理成功'
,
0
,
$result
);
}
/**
* 订单交易趋势, 7天数据
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-06T21:31:53+0800
* @param [array] $params [输入参数]
*/
public
static
function
OrderTradingTrendSevenTodayTotal
(
$params
=
[])
{
// 初始化
self
::
Init
(
$params
);
// 订单状态列表
$order_status_list
=
lang
(
'common_order_user_status'
);
$status_arr
=
array_column
(
$order_status_list
,
'id'
);
// 循环获取统计数据
$data
=
[];
$count_arr
=
[];
$name_arr
=
[];
if
(
!
empty
(
$status_arr
))
{
foreach
(
self
::
$nearly_seven_days
as
$day
)
{
// 当前日期名称
$name_arr
[]
=
$day
[
'name'
];
// 根据支付名称获取数量
foreach
(
$status_arr
as
$status
)
{
// 获取订单
$where
=
[
[
'status'
,
'='
,
$status
],
[
'add_time'
,
'>='
,
$day
[
'start_time'
]],
[
'add_time'
,
'<='
,
$day
[
'end_time'
]],
];
$count_arr
[
$status
][]
=
Db
::
name
(
'Order'
)
->
where
(
$where
)
->
count
();
}
}
}
// 数据格式组装
foreach
(
$status_arr
as
$status
)
{
$data
[]
=
[
'name'
=>
$order_status_list
[
$status
][
'name'
],
'type'
=>
'line'
,
'tiled'
=>
'总量'
,
'data'
=>
empty
(
$count_arr
[
$status
])
?
[]
:
$count_arr
[
$status
],
];
}
// 数据组装
$result
=
[
'title_arr'
=>
array_column
(
$order_status_list
,
'name'
),
'name_arr'
=>
$name_arr
,
'data'
=>
$data
,
];
return
DataReturn
(
'处理成功'
,
0
,
$result
);
}
/**
* 订单支付方式, 7天数据
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-06T21:31:53+0800
* @param [array] $params [输入参数]
*/
public
static
function
OrderPayTypeSevenTodayTotal
(
$params
=
[])
{
// 初始化
self
::
Init
(
$params
);
// 获取支付方式名称
$where
=
[
[
'business_type'
,
'='
,
1
],
];
$pay_name_arr
=
Db
::
name
(
'PayLog'
)
->
where
(
$where
)
->
group
(
'payment_name'
)
->
column
(
'payment_name'
);
// 循环获取统计数据
$data
=
[];
$count_arr
=
[];
$name_arr
=
[];
if
(
!
empty
(
$pay_name_arr
))
{
foreach
(
self
::
$nearly_seven_days
as
$day
)
{
// 当前日期名称
$name_arr
[]
=
date
(
'm-d'
,
strtotime
(
$day
[
'name'
]));
// 根据支付名称获取数量
foreach
(
$pay_name_arr
as
$payment
)
{
// 获取订单
$where
=
[
[
'payment_name'
,
'='
,
$payment
],
[
'add_time'
,
'>='
,
$day
[
'start_time'
]],
[
'add_time'
,
'<='
,
$day
[
'end_time'
]],
];
$count_arr
[
$payment
][]
=
Db
::
name
(
'PayLog'
)
->
where
(
$where
)
->
count
();
}
}
}
// 数据格式组装
foreach
(
$pay_name_arr
as
$payment
)
{
$data
[]
=
[
'name'
=>
$payment
,
'type'
=>
'line'
,
'stack'
=>
'总量'
,
'areaStyle'
=>
(
object
)
[],
'data'
=>
empty
(
$count_arr
[
$payment
])
?
[]
:
$count_arr
[
$payment
],
];
}
// 数据组装
$result
=
[
'title_arr'
=>
$pay_name_arr
,
'name_arr'
=>
$name_arr
,
'data'
=>
$data
,
];
return
DataReturn
(
'处理成功'
,
0
,
$result
);
}
/**
* 热销商品, 7天数据
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-06T21:31:53+0800
* @param [array] $params [输入参数]
*/
public
static
function
GoodsHotSaleSevenTodayTotal
(
$params
=
[])
{
// 初始化
self
::
Init
(
$params
);
// 获取热销商品
$where
=
[
[
'd.add_time'
,
'>='
,
self
::
$seven_time_start
],
[
'd.add_time'
,
'<='
,
self
::
$seven_time_end
],
];
$data
=
Db
::
name
(
'Goods'
)
->
alias
(
'g'
)
->
join
([
'__ORDER_DETAIL__'
=>
'd'
],
'g.id=d.goods_id'
)
->
where
(
$where
)
->
field
(
'g.title AS name,g.sales_count AS value'
)
->
order
(
'g.sales_count desc'
)
->
limit
(
10
)
->
group
(
'g.id'
)
->
select
();
if
(
!
empty
(
$data
))
{
foreach
(
$data
as
&
$v
)
{
if
(
mb_strlen
(
$v
[
'name'
],
'utf-8'
)
>
15
)
{
$v
[
'name'
]
=
mb_substr
(
$v
[
'name'
],
0
,
15
)
.
'...'
;
}
}
}
// 数据组装
$result
=
[
'name_arr'
=>
array_column
(
$data
,
'name'
),
'data'
=>
$data
,
];
return
DataReturn
(
'处理成功'
,
0
,
$result
);
}
}
...
...
application/service/UserService.php
浏览文件 @
5a82819a
...
...
@@ -478,7 +478,7 @@ class UserService
];
if
(
!
empty
(
$params
[
'alias'
]))
{
$data
[
'alias'
]
=
floatval
(
$params
[
'alias'
])
;
$data
[
'alias'
]
=
$params
[
'alias'
]
;
}
if
(
!
empty
(
$params
[
'lng'
]))
{
...
...
public/static/admin/default/css/index.init.css
浏览文件 @
5a82819a
...
...
@@ -24,7 +24,7 @@ html, body {
margin-left
:
10px
;
}
.echarts-container
.echarts-title
.icon
{
background
:
#
2196F3
;
background
:
#
3f82fe
;
display
:
block
;
width
:
5px
;
height
:
16px
;
...
...
@@ -90,16 +90,23 @@ html, body {
margin
:
0
;
color
:
#fff
;
}
.shopxo-base
li
.total
{
.shopxo-base
li
.
li-content
.
total
{
margin
:
0
0
5px
0
;
color
:
#fff
;
font-size
:
26px
;
font-weight
:
700
;
}
.shopxo-base
li
.li-content
p
,
.shopxo-base
li
.li-content
.yesterday
,
.shopxo-base
li
.li-content
.today
{
text-overflow
:
ellipsis
;
overflow
:
hidden
;
white-space
:
nowrap
;
max-width
:
100%
;
}
.shopxo-base
li
.
yesterday
,
.shopxo-base
li
.today
{
.shopxo-base
li
.
li-content
.yesterday
,
.shopxo-base
li
.li-content
.today
{
color
:
#f0f0f0
;
font-size
:
12px
;
}
.shopxo-base
li
.yesterday
{
.shopxo-base
li
.
li-content
.
yesterday
{
padding-bottom
:
5px
;
}
@media
only
screen
and
(
max-width
:
641px
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录