toJson(JSON_UNESCAPED_UNICODE)); // 引入 ECharts 图表库 Admin::js('/js/echarts.min.js'); return $content ->header('仪表盘') // 设置页面标题 ->row(function (Row $row) use ($service) { // 创建一行布局 /** * 今日统计, 今天的特殊情况,需要从缓存 redis 中读取 * * @var $todaySite SiteCount */ $now = Carbon::now(); // 获取当前时间 $today = $now->toDateString(); // 获取今天的日期字符串 $todaySite = SiteCount::query()->firstOrNew(['date' => $today]); // 获取今天的统计记录,如果不存在则创建新记录 $todaySite = $service->syncByCache($todaySite); // 从缓存中同步今天的统计数据 // 七日统计 $lastWeekDate = $now->subDay(7); // 计算七天前的日期 $weekSites = SiteCount::query() ->where('date', '!=', $today) // 排除今天的记录 ->where('date', '>', $lastWeekDate) // 只获取最近七天的记录 ->get() // 获取记录 ->push($todaySite) // 将今天的记录添加到结果集中 ->sortBy('date'); // 按日期排序 // 本月统计 $month = $now->format('Y-m'); // 获取当前月份(格式:YYYY-MM) $monthSites = SiteCount::query() ->where('date', '!=', $today) // 排除今天的记录 ->where('date', '>', $month) // 只获取本月的记录 ->get() // 获取记录 ->push($todaySite) // 将今天的记录添加到结果集中 ->sortBy('date'); // 按日期排序 // 创建统计信息的盒子组件 $row->column(4, new Box('今日用户注册来源', new Div('todayRegister'))); // 今日用户注册来源 $row->column(4, new Box('七日用户注册来源', new Div('weekRegister'))); // 七日用户注册来源 $row->column(4, new Box('本月用户注册来源', new Div('monthRegister'))); // 本月用户注册来源 $row->column(4, new Box('今日订单', new Div('todayOrders'))); // 今日订单 $row->column(4, new Box('近期订单量', new Div('weekSites'))); // 近期订单量 $row->column(4, new Box('交易金额', new Div('saleMoney'))); // 交易金额 // 将所有统计数据传递给视图 $allSites = compact('todaySite', 'weekSites', 'monthSites'); // 打包统计数据 $row->column(12, view('admin.chars.echart', $allSites)); // 渲染 ECharts 视图并传递数据 }); } /** * 自定义 404 页面. * * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function noFound() { return redirect('admin'); // 重定向到管理员首页 } }