|
|
|
|
@ -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[] = [
|
|
|
|
|
|