From 738256a32c6786971182db9e8f83cd5cbb9950cb Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Wed, 3 Sep 2025 10:25:33 +0800 Subject: [PATCH] update --- .../Controllers/Admin/OtherController.php | 25 ++---------- app/Models/CourseSign.php | 39 +++++++++++++++++++ 2 files changed, 42 insertions(+), 22 deletions(-) diff --git a/app/Http/Controllers/Admin/OtherController.php b/app/Http/Controllers/Admin/OtherController.php index 9476b06..7150fe8 100755 --- a/app/Http/Controllers/Admin/OtherController.php +++ b/app/Http/Controllers/Admin/OtherController.php @@ -118,9 +118,6 @@ class OtherController extends CommonController */ public function coursesHome() { - // 启用查询日志记录 - DB::enableQueryLog(); - $start_date = request('start_date', '2020-01-01'); $end_date = request('end_date', date('Y-m-d')); $course_type_id = request('course_type_id', ''); @@ -137,25 +134,11 @@ class OtherController extends CommonController ->whereIn('type', $course_type_id) ->get(); // 报名人数 - $list['course_signs_total'] = CourseSign::whereDate('created_at', '>=', $start_date) - ->whereDate('created_at', '<=', $end_date) - ->whereNotIn('status', [4, 5]) - ->distinct('user_id') -// ->where(function ($query) use ($courses) { -// $query->whereIn('course_id', $courses->pluck('id')); -// }) - ->count(); + $list['course_signs_total'] = CourseSign::courseSignsTotal($start_date, $end_date); // 审核通过人数 - $courseSign = CourseSign::where('status', 1) - ->whereDate('created_at', '>=', $start_date) - ->whereDate('created_at', '<=', $end_date) -// ->where(function ($query) use ($courses) { -// $query->whereIn('course_id', $courses->pluck('id')); -// }) - ->get(); - $list['course_signs_pass'] = $courseSign->count(); + $list['course_signs_pass'] = CourseSign::courseSignsTotal($start_date, $end_date, 1); // 审核通过人数去重 - $list['course_signs_pass_unique'] = User::whereIn('id', $courseSign->pluck('user_id'))->distinct('mobile')->count(); + $list['course_signs_pass_unique'] = CourseSign::courseSignsTotalByUnique($start_date, $end_date, 1); // 开课场次 $calendar = Calendar::whereIn('course_id', $courses->pluck('id'))->whereBetween('date', [$start_date, $end_date])->get(); $list['course_total'] = $calendar->count(); @@ -165,8 +148,6 @@ class OtherController extends CommonController $end = Carbon::parse($course->end_time); return $end->diffInDays($start) + 1; // 包含起始和结束日期 }); - // 返回所有sql语句 - $sql = DB::getQueryLog(); // 课程分类明细统计 $courseTypesSum = []; $courseTypes = CourseType::whereIn('id', $course_type_id)->get(); diff --git a/app/Models/CourseSign.php b/app/Models/CourseSign.php index 2e47ddd..ba230e8 100755 --- a/app/Models/CourseSign.php +++ b/app/Models/CourseSign.php @@ -71,5 +71,44 @@ class CourseSign extends SoftDeletesModel return $this->hasMany(ThirdAppointmentLog::class, 'course_sign_id', 'id'); } + + /** + * 指定时间内的报名信息(未去重) + */ + public static function courseSignsTotal($start_date, $end_date, $status = null, $course_ids = null) + { + $total = CourseSign::whereDate('created_at', '>=', $start_date) + ->whereDate('created_at', '<=', $end_date) + ->where(function ($query) use ($status, $course_ids) { + if (isset($status)) { + $query->where('status', $status); + } + if (isset($course_ids)) { + $query->whereIn('course_id', $course_ids); + } + })->whereNotIn('status', [4, 5]) + ->count(); + return $total; + } + + /** + * 指定时间内的报名信息(去重) + */ + public static function courseSignsTotalByUnique($start_date, $end_date, $status = null, $course_ids = null) + { + $courseSignByType = CourseSign::whereDate('created_at', '>=', $start_date) + ->whereDate('created_at', '<=', $end_date) + ->where(function ($query) use ($status, $course_ids) { + if (isset($status)) { + $query->where('status', $status); + } + if (isset($course_ids)) { + $query->whereIn('course_id', $course_ids); + } + })->whereNotIn('status', [4, 5]) + ->get(); + return User::whereIn('id', $courseSignByType->pluck('user_id'))->distinct('mobile')->count(); + } + }