From c7733994e13fcb8673e1a9894e1aff5f389b7e2a Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Wed, 3 Sep 2025 09:51:05 +0800 Subject: [PATCH 1/9] update --- app/Http/Controllers/Admin/OtherController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/Admin/OtherController.php b/app/Http/Controllers/Admin/OtherController.php index fd25a62..cc23f06 100755 --- a/app/Http/Controllers/Admin/OtherController.php +++ b/app/Http/Controllers/Admin/OtherController.php @@ -142,7 +142,7 @@ class OtherController extends CommonController ->whereNotIn('status', [4, 5]) ->where(function ($query) use ($courses) { $query->whereIn('course_id', $courses->pluck('id')); - })->count(); + })->distinct('user_id')->count(); // 审核通过人数 $courseSign = CourseSign::where('status', 1) ->whereDate('created_at', '>=', $start_date) From f303735bf0d06c0284db47717bde78f4944ab5c3 Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Wed, 3 Sep 2025 09:55:15 +0800 Subject: [PATCH 2/9] update --- app/Http/Controllers/Admin/OtherController.php | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/app/Http/Controllers/Admin/OtherController.php b/app/Http/Controllers/Admin/OtherController.php index cc23f06..0981abf 100755 --- a/app/Http/Controllers/Admin/OtherController.php +++ b/app/Http/Controllers/Admin/OtherController.php @@ -140,17 +140,18 @@ class OtherController extends CommonController $list['course_signs_total'] = CourseSign::whereDate('created_at', '>=', $start_date) ->whereDate('created_at', '<=', $end_date) ->whereNotIn('status', [4, 5]) - ->where(function ($query) use ($courses) { - $query->whereIn('course_id', $courses->pluck('id')); - })->distinct('user_id')->count(); +// ->where(function ($query) use ($courses) { +// $query->whereIn('course_id', $courses->pluck('id')); +// }) + ->count(); // 审核通过人数 $courseSign = CourseSign::where('status', 1) ->whereDate('created_at', '>=', $start_date) ->whereDate('created_at', '<=', $end_date) - ->whereNotIn('status', [4, 5]) - ->where(function ($query) use ($courses) { - $query->whereIn('course_id', $courses->pluck('id')); - })->get(); +// ->where(function ($query) use ($courses) { +// $query->whereIn('course_id', $courses->pluck('id')); +// }) + ->get(); $list['course_signs_pass'] = $courseSign->count(); // 审核通过人数去重 $list['course_signs_pass_unique'] = User::whereIn('id', $courseSign->pluck('user_id'))->distinct('mobile')->count(); From 36da8820b14e7b4e720ab5dc605767525c22ec8d Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Wed, 3 Sep 2025 09:56:07 +0800 Subject: [PATCH 3/9] update --- app/Http/Controllers/Admin/OtherController.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Http/Controllers/Admin/OtherController.php b/app/Http/Controllers/Admin/OtherController.php index 0981abf..9476b06 100755 --- a/app/Http/Controllers/Admin/OtherController.php +++ b/app/Http/Controllers/Admin/OtherController.php @@ -140,6 +140,7 @@ class OtherController extends CommonController $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')); // }) 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 4/9] 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(); + } + } From b8b00e4a225e8781fe41ec47a6ad5c3c1ae9176e Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Wed, 3 Sep 2025 10:26:21 +0800 Subject: [PATCH 5/9] update --- app/Http/Controllers/Admin/OtherController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/Admin/OtherController.php b/app/Http/Controllers/Admin/OtherController.php index 7150fe8..22ae5a2 100755 --- a/app/Http/Controllers/Admin/OtherController.php +++ b/app/Http/Controllers/Admin/OtherController.php @@ -194,7 +194,7 @@ class OtherController extends CommonController $area->course_signs_pass = $courseSignByArea->count(); $area->course_signs_pass_unique = User::whereIn('id', $courseSignByArea->pluck('user_id'))->distinct('mobile')->count(); } - return $this->success(compact('list', 'courseTypesSum', 'areas', 'sql')); + return $this->success(compact('list', 'courseTypesSum', 'areas')); } /** From 3d8e2e3db068f8393935474aaef6fe1fef4ed908 Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Wed, 3 Sep 2025 10:31:54 +0800 Subject: [PATCH 6/9] update --- .../Controllers/Admin/OtherController.php | 22 +++++-------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/app/Http/Controllers/Admin/OtherController.php b/app/Http/Controllers/Admin/OtherController.php index 22ae5a2..a346c15 100755 --- a/app/Http/Controllers/Admin/OtherController.php +++ b/app/Http/Controllers/Admin/OtherController.php @@ -157,27 +157,15 @@ class OtherController extends CommonController ->where('start_date', '<=', $end_date) ->where('type', $courseType->id) ->get(); - $courseSignByType = CourseSign::where('status', 1) - ->whereIn('course_id', $courses2->pluck('id')) - ->whereNotIn('status', [4, 5]) - ->whereDate('created_at', '>=', $start_date) - ->whereDate('created_at', '<=', $end_date) - ->get(); - // 培养人数 - $courseTypeSignsPass = $courseSignByType->count(); - // 去重培养人数 - $courseTypeSignsPassUnique = User::whereIn('id', $courseSignByType->pluck('user_id'))->distinct('mobile')->count(); foreach ($courses2 as $course) { $courseTypesSum[] = [ 'course_type' => $courseType->name, - 'course_type_signs_pass' => $courseTypeSignsPass, - 'course_type_signs_pass_unique' => $courseTypeSignsPassUnique, + // 培养人数 + 'course_type_signs_pass' => CourseSign::courseSignsTotal($start_date, $end_date, 1, $courses2->pluck('id')->toArray()), + // 去重培养人数 + 'course_type_signs_pass_unique' => CourseSign::courseSignsTotalByUnique($start_date, $end_date, 1, $courses2->pluck('id')->toArray()), 'course_name' => $course->name, - 'course_signs_pass' => CourseSign::where('status', 1) - ->where('course_id', $course->id) - ->whereDate('created_at', '>=', $start_date) - ->whereDate('created_at', '<=', $end_date) - ->count() + 'course_signs_pass' => CourseSign::courseSignsTotal($start_date, $end_date, 1, [$course->id]), ]; } From 08b1fe22f03d86354119739761e8c966231aab5e Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Wed, 3 Sep 2025 10:46:25 +0800 Subject: [PATCH 7/9] update --- app/Http/Controllers/Admin/UserController.php | 23 ++++++++----------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index 76cdfb5..c918426 100755 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -191,6 +191,9 @@ class UserController extends BaseController { $all = request()->all(); $year = request('year', date('Y')); + $start_date = $year . '-01-01'; + $end_date = $year . '-12-31'; + $list = $this->model->with('appointments', 'companyIndustryDetail', 'companyPositionDetail', 'companyAreaDetail') ->with(['courseSigns' => function ($query) { @@ -328,22 +331,14 @@ class UserController extends BaseController $list = $list->limit(5000)->get()->toArray(); return Excel::download(new CommonExport($list, $all['export_fields'] ?? ''), $all['file_name'] ?? '' . date('YmdHis') . '.xlsx'); } else { - $total = $this->model->whereHas('courseSigns')->count(); - $year_total = $this->model->whereHas('courseSigns', function ($query) use ($year) { - $query->whereHas('course', function ($q) use ($year) { - $q->where('year', $year); - }); - })->count(); + // 累计总数 + $total = CourseSign::courseSignsTotalByUnique('2020-01-01', date('Y-m-d')); + // 报名人数 + $year_total = CourseSign::courseSignsTotalByUnique($start_date, $end_date); // 年度培养学员 - $year_training_total = $this->model->whereHas('courseSigns', function ($query) use ($year) { - $query->where('status', 1)->whereHas('course', function ($q) use ($year) { - $q->where('year', $year); - }); - })->count(); + $year_training_total = CourseSign::courseSignsTotalByUnique($start_date, $end_date, 1); // 累计培养学员 - $training_total = $this->model->whereHas('courseSigns', function ($query) use ($year) { - $query->where('status', 1); - })->count(); + $training_total = CourseSign::courseSignsTotalByUnique('2020-01-01', date('Y-m-d'), 1); $list = $list->paginate($all['page_size'] ?? 20); } return $this->success(['list' => $list, 'year_total' => $year_total, 'total' => $total, 'year_training_total' => $year_training_total, 'training_total' => $training_total]); From 71b396dcbb2671acfb9c1421c571fa9f8ede4794 Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Wed, 3 Sep 2025 11:02:07 +0800 Subject: [PATCH 8/9] update --- app/Models/User.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/Models/User.php b/app/Models/User.php index a73486a..c0f9717 100755 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -91,14 +91,14 @@ class User extends Authenticatable implements Auditable return $this->username; } - public function getMobileAttribute($value) - { - // 如果url中包含admin字符串,则所有的手机号显示中间4位星号代替 - if (strpos(request()->url(), 'admin') !== false && env('APP_ENV') == 'local') { - return substr_replace($value, '****', 3, 4); - } - return $value; - } +// public function getMobileAttribute($value) +// { +// // 如果url中包含admin字符串,则所有的手机号显示中间4位星号代替 +// if (strpos(request()->url(), 'admin') !== false && env('APP_ENV') == 'local') { +// return substr_replace($value, '****', 3, 4); +// } +// return $value; +// } public function getAppointmentTotalAttribute($value) { From 80cb43b1e7e9358f331a19044a616c38e5d5c565 Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Wed, 3 Sep 2025 11:02:58 +0800 Subject: [PATCH 9/9] update --- app/Models/User.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/Models/User.php b/app/Models/User.php index c0f9717..a73486a 100755 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -91,14 +91,14 @@ class User extends Authenticatable implements Auditable return $this->username; } -// public function getMobileAttribute($value) -// { -// // 如果url中包含admin字符串,则所有的手机号显示中间4位星号代替 -// if (strpos(request()->url(), 'admin') !== false && env('APP_ENV') == 'local') { -// return substr_replace($value, '****', 3, 4); -// } -// return $value; -// } + public function getMobileAttribute($value) + { + // 如果url中包含admin字符串,则所有的手机号显示中间4位星号代替 + if (strpos(request()->url(), 'admin') !== false && env('APP_ENV') == 'local') { + return substr_replace($value, '****', 3, 4); + } + return $value; + } public function getAppointmentTotalAttribute($value) {