master
cody 11 months ago
parent 3464152df5
commit 8d77f21a89

@ -21,6 +21,8 @@ class ChartController extends CommonController
* tags={"图表"},
* summary="首页统计",
* description="",
* @OA\Parameter(name="start_date", in="query", @OA\Schema(type="string"), required=false, description="开始日期例如2022-01-01"),
* @OA\Parameter(name="end_date", in="query", @OA\Schema(type="string"), required=false, description="结束日期例如2022-12-31"),
* @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"),
* @OA\Response(
* response="200",
@ -30,28 +32,48 @@ class ChartController extends CommonController
*/
public function home()
{
$all = request()->all();
$startDate = $all['start_date'] ?? null;
$endDate = $all['end_date'] ?? null;
// 构建查询条件
$buildQuery = function($type) use ($startDate, $endDate) {
$query = Visit::where('type', $type);
if ($startDate && $endDate) {
$query->whereBetween('date', [$startDate, $endDate]);
} elseif ($startDate) {
$query->where('date', '>=', $startDate);
} elseif ($endDate) {
$query->where('date', '<=', $endDate);
}
return $query;
};
$list = [
'common_visit' => [
'total' => Visit::where('type', 1)->count(),
'enter_visit' => Visit::where('type', 1)->whereNotNull('accept_admin_sign')->count(),
'total' => $buildQuery(1)->count(),
'enter_visit' => $buildQuery(1)->whereNotNull('accept_admin_sign')->count(),
'today_total' => Visit::where('type', 1)->where('date', date('Y-m-d'))->count(),
'today_enter_visit' => Visit::where('type', 1)->where('date', date('Y-m-d'))->whereNotNull('accept_admin_sign')->count(),
],
'work_visit' => [
'total' => Visit::where('type', 2)->count(),
'enter_visit' => Visit::where('type', 2)->whereNotNull('accept_admin_sign')->count(),
'total' => $buildQuery(2)->count(),
'enter_visit' => $buildQuery(2)->whereNotNull('accept_admin_sign')->count(),
'today_total' => Visit::where('type', 2)->where('date', date('Y-m-d'))->count(),
'today_enter_visit' => Visit::where('type', 2)->where('date', date('Y-m-d'))->whereNotNull('accept_admin_sign')->count(),
],
'car_visit' => [
'total' => Visit::where('type', 3)->count(),
'enter_visit' => Visit::where('type', 3)->whereNotNull('accept_admin_sign')->count(),
'total' => $buildQuery(3)->count(),
'enter_visit' => $buildQuery(3)->whereNotNull('accept_admin_sign')->count(),
'today_total' => Visit::where('type', 3)->where('date', date('Y-m-d'))->count(),
'today_enter_visit' => Visit::where('type', 3)->where('date', date('Y-m-d'))->whereNotNull('accept_admin_sign')->count(),
],
];
$startDate = date('Y-m-d', strtotime('-30 day', time()));
$dateList = getDateFromRange($startDate, date('Y-m-d'));
// 图表日期范围如果有时间筛选参数使用筛选参数否则使用最近30天
$chartStartDate = $startDate ?: date('Y-m-d', strtotime('-30 day', time()));
$chartEndDate = $endDate ?: date('Y-m-d');
$dateList = getDateFromRange($chartStartDate, $chartEndDate);
$all_date_list = [];
foreach ($dateList as &$item) {
$all_date_list[] = [

Loading…
Cancel
Save