添加统计逻辑

This commit is contained in:
2025-12-29 17:28:14 +08:00
parent 1e542a55bf
commit b8a9f9b62e
10 changed files with 205 additions and 11 deletions

View File

@@ -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();
}

View File

@@ -129,11 +129,6 @@ class Invoice extends AdminBase
$this->_error('上传失败');
}
}
// 处理文件路径转换为完整URL用于显示
if (!empty($invoice['document'])) {
$invoice['document'] = UrlServer::getFileUrl($invoice['document']);
}
// 查询订单列表
$orders = Db::name('order')
@@ -143,6 +138,14 @@ class Invoice extends AdminBase
->limit(100)
->select();
$invoice = InvoiceLog::with(['invoice'])->where('id',$id)->find();
// 处理文件路径转换为完整URL用于显示
if (!empty($invoice['document'])) {
$currentDomain = $_SERVER['HTTP_HOST'];
$invoice['document'] = 'http://'.$currentDomain.'/public/'.$invoice['document'];
}
$this->assign([
'invoice' => $invoice,
'orders' => $orders,