添加统计逻辑
This commit is contained in:
@@ -1,9 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
use app\admin\model\OrderGoods;
|
||||
use app\admin\model\OrderRecharge;
|
||||
use app\admin\model\OrderYearcard;
|
||||
use app\admin\model\User;
|
||||
use app\common\server\UrlServer;
|
||||
use think\facade\Url;
|
||||
use app\admin\model\Order;
|
||||
|
||||
class BulletinBoard extends AdminBase
|
||||
{
|
||||
@@ -11,6 +15,108 @@ class BulletinBoard extends AdminBase
|
||||
//看板统计
|
||||
public function index()
|
||||
{
|
||||
//查询商品订单
|
||||
$orderMoney = Order::where('status','<>', 0)->sum('order_amount');
|
||||
//年卡订单
|
||||
$yearCardOrderMoney = OrderYearcard::where('status', 1)->sum('pay_fee');
|
||||
//订单管理
|
||||
$orderGoods = OrderGoods::where('status', 1)->sum('total_fee');
|
||||
//充值订单
|
||||
$rechargeOrderMoney = OrderRecharge::where('pay_status', 1)->sum('order_amount');
|
||||
|
||||
// 计算月销售总额(所有订单类型的总和)
|
||||
$monthlySales = ($orderMoney ?: 0) + ($yearCardOrderMoney ?: 0) + ($orderGoods ?: 0) + ($rechargeOrderMoney ?: 0);
|
||||
|
||||
// 计算月订单量(本月订单数量)
|
||||
$monthlyOrders = Order::where('status','<>', 0)
|
||||
->whereTime('create_time', 'month')
|
||||
->count();
|
||||
$monthlyOrders += OrderYearcard::where('status', 1)
|
||||
->whereTime('createtime', 'month')
|
||||
->count();
|
||||
$monthlyOrders += OrderGoods::where('status', 1)
|
||||
->whereTime('createtime', 'month')
|
||||
->count();
|
||||
$monthlyOrders += OrderRecharge::where('pay_status', 1)
|
||||
->whereTime('create_time', 'month')
|
||||
->count();
|
||||
|
||||
// 计算月客户数(本月新增用户)
|
||||
$monthlyCustomers = User::whereTime('create_time', 'month')
|
||||
->where('del', 0)
|
||||
->count();
|
||||
|
||||
// 计算同比(上个月的数据)
|
||||
$lastMonthSales = Order::where('status','<>', 0)
|
||||
->whereTime('create_time', 'last month')
|
||||
->sum('order_amount');
|
||||
$lastMonthSales += OrderYearcard::where('status', 1)
|
||||
->whereTime('createtime', 'last month')
|
||||
->sum('pay_fee');
|
||||
$lastMonthSales += OrderGoods::where('status', 1)
|
||||
->whereTime('createtime', 'last month')
|
||||
->sum('total_fee');
|
||||
$lastMonthSales += OrderRecharge::where('pay_status', 1)
|
||||
->whereTime('create_time', 'last month')
|
||||
->sum('order_amount');
|
||||
|
||||
$lastMonthOrders = Order::where('status','<>', 0)
|
||||
->whereTime('create_time', 'last month')
|
||||
->count();
|
||||
$lastMonthOrders += OrderYearcard::where('status', 1)
|
||||
->whereTime('createtime', 'last month')
|
||||
->count();
|
||||
$lastMonthOrders += OrderGoods::where('status', 1)
|
||||
->whereTime('createtime', 'last month')
|
||||
->count();
|
||||
$lastMonthOrders += OrderRecharge::where('pay_status', 1)
|
||||
->whereTime('create_time', 'last month')
|
||||
->count();
|
||||
|
||||
$lastMonthCustomers = User::whereTime('create_time', 'last month')
|
||||
->where('del', 0)
|
||||
->count();
|
||||
|
||||
// 计算同比变化率
|
||||
$salesCompare = $lastMonthSales > 0 ? round((($monthlySales - $lastMonthSales) / $lastMonthSales) * 100, 2) : 0;
|
||||
$ordersCompare = $lastMonthOrders > 0 ? round((($monthlyOrders - $lastMonthOrders) / $lastMonthOrders) * 100, 2) : 0;
|
||||
$customersCompare = $lastMonthCustomers > 0 ? round((($monthlyCustomers - $lastMonthCustomers) / $lastMonthCustomers) * 100, 2) : 0;
|
||||
|
||||
// 统计本月客户分析(老客户 vs 新客户)
|
||||
// 本月所有用户ID列表
|
||||
$monthUsers = User::whereTime('create_time', 'month')
|
||||
->where('del', 0)
|
||||
->column('id');
|
||||
|
||||
// 如果本月有用户,查询这些用户中哪些有订单(老客户)
|
||||
$oldCustomerCount = 0;
|
||||
$newCustomerCount = 0;
|
||||
if (!empty($monthUsers)) {
|
||||
// 查询本月注册的用户中,在Order表中有订单的用户(老客户)
|
||||
// 只要有订单就算老客户,不限制订单时间
|
||||
$oldCustomerIds = Order::where('status','<>', 0)
|
||||
->where('user_id', 'in', $monthUsers)
|
||||
->where('user_id', '>', 0)
|
||||
->distinct(true)
|
||||
->column('user_id');
|
||||
|
||||
$oldCustomerCount = count($oldCustomerIds);
|
||||
// 本月注册但没下过单的(新客户)
|
||||
$newCustomerCount = count($monthUsers) - $oldCustomerCount;
|
||||
}
|
||||
|
||||
// 传递数据到视图
|
||||
$this->assign([
|
||||
'monthlySales' => $monthlySales,
|
||||
'monthlyOrders' => $monthlyOrders,
|
||||
'monthlyCustomers' => $monthlyCustomers,
|
||||
'salesCompare' => $salesCompare,
|
||||
'ordersCompare' => $ordersCompare,
|
||||
'customersCompare' => $customersCompare,
|
||||
'oldCustomers' => $oldCustomerCount, // 老客户数量(本月注册且下过单的)
|
||||
'newCustomers' => $newCustomerCount, // 新客户数量(本月注册但没下过单的)
|
||||
]);
|
||||
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
@@ -18,6 +124,14 @@ class BulletinBoard extends AdminBase
|
||||
//地图上显示注册用户位置
|
||||
public function map()
|
||||
{
|
||||
//查询商品订单
|
||||
$orderMoney = Order::where('status','<>', 0)->sum('order_amount');
|
||||
//年卡订单
|
||||
$yearCardOrderMoney = OrderYearcard::where('status', 1)->sum('pay_fee');
|
||||
//订单管理
|
||||
$orderGoods = OrderGoods::where('status', 1)->sum('total_fee');
|
||||
//充值订单
|
||||
$rechargeOrderMoney = OrderRecharge::where('pay_status', 1)->sum('order_amount');
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user