diff --git a/app/Http/Controllers/Admin/OtherController.php b/app/Http/Controllers/Admin/OtherController.php index fd25a62..a346c15 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,23 +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]) - ->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) - ->whereNotIn('status', [4, 5]) - ->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(); @@ -163,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(); @@ -174,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]), ]; } @@ -211,7 +182,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')); } /** 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]); 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(); + } + }