From 2f8ff5db66b4fe2ed02fad2e5490d57e93b198c4 Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Tue, 19 Aug 2025 13:53:05 +0800 Subject: [PATCH 01/13] update --- app/Console/Commands/UpdateCompany.php | 2 +- app/Console/Commands/UpdateCourseUrls.php | 17 +++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/app/Console/Commands/UpdateCompany.php b/app/Console/Commands/UpdateCompany.php index d7271b2..f7c8833 100755 --- a/app/Console/Commands/UpdateCompany.php +++ b/app/Console/Commands/UpdateCompany.php @@ -43,7 +43,7 @@ class UpdateCompany extends Command public function handle() { // $YuanheRepository = new YuanheRepository(); -// $result = $YuanheRepository->companyInfo(['keyword' => '苏州元瞰科技有限公司']); +// $result = $YuanheRepository->companyInfo(['keyword' => '苏州元瞰科技有限公司','enterpriseName'=>'博世工程技术']); // dd($result); $user_id = $this->option('user_id'); diff --git a/app/Console/Commands/UpdateCourseUrls.php b/app/Console/Commands/UpdateCourseUrls.php index d238d21..1c276a7 100644 --- a/app/Console/Commands/UpdateCourseUrls.php +++ b/app/Console/Commands/UpdateCourseUrls.php @@ -135,11 +135,11 @@ class UpdateCourseUrls extends Command $this->info("处理行 {$row}: 课程='{$courseName}', 跳转链接='{$jumpLink}'"); // 从phome_ecms_news表获取titleurl - $titleUrl = $this->getTitleUrlFromNews($jumpLink); + list($title, $titleUrl) = $this->getTitleUrlFromNews($jumpLink); if ($titleUrl) { // 更新courses表 - $updateCount = $this->updateCourseUrl($courseName, $titleUrl); + $updateCount = $this->updateCourseUrl($courseName, $titleUrl, $title); $updated += $updateCount; if ($updateCount > 0) { @@ -176,7 +176,7 @@ class UpdateCourseUrls extends Command ->first(); if ($news && !empty($news->titleurl)) { - return $news->titleurl; + return [$news->title, $news->titleurl]; } // 模糊匹配 @@ -186,7 +186,7 @@ class UpdateCourseUrls extends Command if ($news && !empty($news->titleurl)) { $this->info("通过模糊匹配找到: '{$news->title}' -> '{$news->titleurl}'"); - return $news->titleurl; + return [$news->title, $news->titleurl]; } // 使用相似度匹配 @@ -210,7 +210,7 @@ class UpdateCourseUrls extends Command if ($bestMatch && $highestSimilarity > 0) { $this->info("通过相似度匹配找到 (相似度: " . round($highestSimilarity * 100, 2) . "%): '{$bestMatch->title}' -> '{$bestMatch->titleurl}'"); - return $bestMatch->titleurl; + return [$bestMatch->title, $bestMatch->titleurl]; } } catch (\Exception $e) { @@ -223,13 +223,13 @@ class UpdateCourseUrls extends Command /** * 更新courses表的url字段 */ - private function updateCourseUrl($courseName, $titleUrl) + private function updateCourseUrl($courseName, $titleUrl, $title) { try { // 直接匹配 $updateCount = Course::where('name', $courseName) ->whereNull('deleted_at') - ->update(['url' => $titleUrl]); + ->update(['url' => $titleUrl, 'url_title' => $title]); if ($updateCount > 0) { return $updateCount; @@ -238,7 +238,7 @@ class UpdateCourseUrls extends Command // 模糊匹配 $updateCount = Course::where('name', 'like', "%{$courseName}%") ->whereNull('deleted_at') - ->update(['url' => $titleUrl]); + ->update(['url' => $titleUrl, 'url_title' => $title]); if ($updateCount > 0) { $this->info("通过模糊匹配更新了课程"); @@ -264,6 +264,7 @@ class UpdateCourseUrls extends Command if ($bestMatch && $highestSimilarity > 0) { $bestMatch->url = $titleUrl; + $bestMatch->url_title = $title; $bestMatch->save(); $this->info("通过相似度匹配更新了课程 (相似度: " . round($highestSimilarity * 100, 2) . "%): '{$bestMatch->name}'"); return 1; From 0f23e993078a2c93b3cfdc3f2ae7bd1646c383fe Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Thu, 21 Aug 2025 14:12:51 +0800 Subject: [PATCH 02/13] update --- app/Console/Commands/AutoSchoolmate.php | 4 +++- app/Http/Controllers/Admin/TeacherController.php | 12 ++++++++++++ app/Http/Controllers/Admin/UserController.php | 6 +++--- app/Models/CourseContent.php | 5 +++++ 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/app/Console/Commands/AutoSchoolmate.php b/app/Console/Commands/AutoSchoolmate.php index f492c99..a2cfb21 100755 --- a/app/Console/Commands/AutoSchoolmate.php +++ b/app/Console/Commands/AutoSchoolmate.php @@ -52,7 +52,9 @@ class AutoSchoolmate extends Command // 获取报名通过的学员 $courseSigns = CourseSign::where('course_id', $course->id)->where('status', 1)->get(); // 用户设置成校友 - User::whereIn('id', $courseSigns->pluck('user_id'))->where('is_black',0)->update(['is_schoolmate' => 1]); + User::whereIn('id', $courseSigns->pluck('user_id')) + //->where('is_black',0) + ->update(['is_schoolmate' => 1]); } return $this->info('更新完成'); } diff --git a/app/Http/Controllers/Admin/TeacherController.php b/app/Http/Controllers/Admin/TeacherController.php index e50bce4..e82631c 100755 --- a/app/Http/Controllers/Admin/TeacherController.php +++ b/app/Http/Controllers/Admin/TeacherController.php @@ -32,6 +32,8 @@ class TeacherController extends BaseController * @OA\Parameter(name="page", in="query", @OA\Schema(type="string"), required=false, description="页码"), * @OA\Parameter(name="sort_name", in="query", @OA\Schema(type="string"), required=false, description="排序字段名字"), * @OA\Parameter(name="sort_type", in="query", @OA\Schema(type="string"), required=false, description="排序类型"), + * @OA\Parameter(name="theme", in="query", @OA\Schema(type="string"), required=false, description="主题"), + * @OA\Parameter(name="direction", in="query", @OA\Schema(type="string"), required=false, description="方向"), * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"), * @OA\Response( * response="200", @@ -110,6 +112,16 @@ class TeacherController extends BaseController $filename = (new CustomForm())->getTableComment($tableName); return Excel::download(new BaseExport($export_fields, $list, $tableName), $filename . date('YmdHis') . '.xlsx'); } else { + if (isset($all['theme']) || isset($all['direction'])) { + $list = $list->whereHas('courseContents', function ($query) use ($all) { + if (isset($all['theme'])) { + $query->where('theme', $all['theme']); + } + if (isset($all['direction'])) { + $query->where('direction', $all['direction']); + } + }); + } // 输出 $list = $list->paginate($all['page_size'] ?? 20); } diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index 340a866..28ba2a3 100755 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -654,9 +654,9 @@ class UserController extends BaseController if (isset($all['is_schoolmate'])) { $data['is_schoolmate'] = $all['is_schoolmate']; } - if (isset($all['is_black'])) { - $data['is_black'] = $all['is_black']; - } +// if (isset($all['is_black'])) { +// $data['is_black'] = $all['is_black']; +// } $this->model->whereIn('id', $idsArray)->update($data); return $this->success('批量更新成功'); } diff --git a/app/Models/CourseContent.php b/app/Models/CourseContent.php index c28bbe7..0619f2f 100755 --- a/app/Models/CourseContent.php +++ b/app/Models/CourseContent.php @@ -60,6 +60,11 @@ class CourseContent extends SoftDeletesModel return $this->hasOne(CourseContentEvaluation::class, 'course_content_id', 'id'); } + public function directionDetail() + { + return $this->hasOne(ParameterDetail::class, 'id', 'direction'); + } + /** * 获取课程详情小程序码 */ From b9ae2ce47ff8079d5a8ed8c186ec0d4f84591a84 Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Thu, 21 Aug 2025 14:39:58 +0800 Subject: [PATCH 03/13] update --- app/Http/Controllers/Admin/CourseContentController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/Admin/CourseContentController.php b/app/Http/Controllers/Admin/CourseContentController.php index c01b2f8..b9e1c3d 100755 --- a/app/Http/Controllers/Admin/CourseContentController.php +++ b/app/Http/Controllers/Admin/CourseContentController.php @@ -138,7 +138,7 @@ class CourseContentController extends BaseController if ($validator->fails()) { return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); } - $detail = $this->model->with('courseContentEvaluation.courseContentEvaluationAsks')->find($all['id']); + $detail = $this->model->with('courseContentEvaluation.courseContentEvaluationAsks','teacher')->find($all['id']); return $this->success($detail); } From b6582919750ea7b672a7b303938b8bf8061f5f7d Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Thu, 21 Aug 2025 14:47:57 +0800 Subject: [PATCH 04/13] update --- app/Http/Controllers/Admin/CourseContentController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/Admin/CourseContentController.php b/app/Http/Controllers/Admin/CourseContentController.php index b9e1c3d..2384a88 100755 --- a/app/Http/Controllers/Admin/CourseContentController.php +++ b/app/Http/Controllers/Admin/CourseContentController.php @@ -138,7 +138,7 @@ class CourseContentController extends BaseController if ($validator->fails()) { return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); } - $detail = $this->model->with('courseContentEvaluation.courseContentEvaluationAsks','teacher')->find($all['id']); + $detail = $this->model->with('courseContentEvaluation.courseContentEvaluationAsks','teacher','directionDetail')->find($all['id']); return $this->success($detail); } From cc66b0d4abc9c416a81e914517a81051470d9f4a Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Thu, 21 Aug 2025 15:05:00 +0800 Subject: [PATCH 05/13] update --- .../Controllers/Admin/TeacherController.php | 2 -- ...2025_08_21_150059_alert_teachers_table.php | 33 +++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 database/migrations/2025_08_21_150059_alert_teachers_table.php diff --git a/app/Http/Controllers/Admin/TeacherController.php b/app/Http/Controllers/Admin/TeacherController.php index e82631c..1075552 100755 --- a/app/Http/Controllers/Admin/TeacherController.php +++ b/app/Http/Controllers/Admin/TeacherController.php @@ -157,8 +157,6 @@ class TeacherController extends BaseController * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="访问令牌"), * @OA\Parameter(name="name", in="query", @OA\Schema(type="integer"), description="名字"), * @OA\Parameter(name="sex", in="query", @OA\Schema(type="string"), description="性别"), - * @OA\Parameter(name="speciality", in="query", @OA\Schema(type="string"), description="专业"), - * @OA\Parameter(name="theme", in="query", @OA\Schema(type="string"), description="主题"), * @OA\Parameter(name="remark", in="query", @OA\Schema(type="string"), description="备注"), * @OA\Parameter(name="introduce", in="query", @OA\Schema(type="string"), description="介绍"), * @OA\Response( diff --git a/database/migrations/2025_08_21_150059_alert_teachers_table.php b/database/migrations/2025_08_21_150059_alert_teachers_table.php new file mode 100644 index 0000000..045e3bb --- /dev/null +++ b/database/migrations/2025_08_21_150059_alert_teachers_table.php @@ -0,0 +1,33 @@ +string('remark')->nullable()->comment('备注'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('teachers', function (Blueprint $table) { + // + }); + } +}; From 7c00e90ba39919f2d2d27806bc3e34503c6cd7a6 Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Thu, 21 Aug 2025 15:06:47 +0800 Subject: [PATCH 06/13] update --- app/Http/Controllers/Admin/TeacherController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/Admin/TeacherController.php b/app/Http/Controllers/Admin/TeacherController.php index 1075552..7e83616 100755 --- a/app/Http/Controllers/Admin/TeacherController.php +++ b/app/Http/Controllers/Admin/TeacherController.php @@ -44,7 +44,7 @@ class TeacherController extends BaseController public function index() { $all = request()->all(); - $list = $this->model->with('courseContents.course')->where(function ($query) use ($all) { + $list = $this->model->with('courseContents.course','courseContents.directionDetail')->where(function ($query) use ($all) { if (isset($all['filter']) && !empty($all['filter'])) { foreach ($all['filter'] as $condition) { $key = $condition['key'] ?? null; From d48466325ed630fa29e0e498846daa0e171b34ac Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Thu, 21 Aug 2025 15:18:15 +0800 Subject: [PATCH 07/13] update --- database/migrations/2025_08_21_150059_alert_teachers_table.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/database/migrations/2025_08_21_150059_alert_teachers_table.php b/database/migrations/2025_08_21_150059_alert_teachers_table.php index 045e3bb..091349f 100644 --- a/database/migrations/2025_08_21_150059_alert_teachers_table.php +++ b/database/migrations/2025_08_21_150059_alert_teachers_table.php @@ -14,6 +14,9 @@ return new class extends Migration public function up() { Schema::table('teachers', function (Blueprint $table) { + $table->string('name')->nullable()->comment('授课老师'); + $table->text('introduce')->nullable()->comment('老师简介'); + $table->string('mobile')->nullable()->comment('联系方式'); // 备注 $table->string('remark')->nullable()->comment('备注'); }); From b150e58b886a0b4c75d941198643436cf4947edd Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Thu, 21 Aug 2025 15:21:33 +0800 Subject: [PATCH 08/13] update --- .../migrations/2025_08_21_150059_alert_teachers_table.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/database/migrations/2025_08_21_150059_alert_teachers_table.php b/database/migrations/2025_08_21_150059_alert_teachers_table.php index 091349f..ba73303 100644 --- a/database/migrations/2025_08_21_150059_alert_teachers_table.php +++ b/database/migrations/2025_08_21_150059_alert_teachers_table.php @@ -14,9 +14,9 @@ return new class extends Migration public function up() { Schema::table('teachers', function (Blueprint $table) { - $table->string('name')->nullable()->comment('授课老师'); - $table->text('introduce')->nullable()->comment('老师简介'); - $table->string('mobile')->nullable()->comment('联系方式'); + $table->string('name')->nullable()->comment('授课老师')->change(); + $table->text('introduce')->nullable()->comment('老师简介')->change(); + $table->string('mobile')->nullable()->comment('联系方式')->change(); // 备注 $table->string('remark')->nullable()->comment('备注'); }); From a31b27c57f6d5ee51c38310027a7ec1242683fd3 Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Fri, 22 Aug 2025 10:12:56 +0800 Subject: [PATCH 09/13] update --- .../Controllers/Admin/OtherController.php | 103 ++++++++++++++++++ routes/api.php | 1 + 2 files changed, 104 insertions(+) diff --git a/app/Http/Controllers/Admin/OtherController.php b/app/Http/Controllers/Admin/OtherController.php index 50e268d..0e9e497 100755 --- a/app/Http/Controllers/Admin/OtherController.php +++ b/app/Http/Controllers/Admin/OtherController.php @@ -16,6 +16,7 @@ use App\Models\ParameterDetail; use App\Models\User; use App\Repositories\DoorRepository; use App\Repositories\EntranceRepository; +use Illuminate\Support\Carbon; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Validator; use App\Models\Course; @@ -81,6 +82,108 @@ class OtherController extends CommonController return $this->success(compact('courseTypes', 'schoolmate', 'company', 'industryTotal', 'suzhou', 'country')); } + /** + * @OA\Get( + * path="/api/admin/other/courses-home", + * tags={"其他"}, + * summary="课程统计", + * description="", + * @OA\Parameter(name="start_date", in="query", @OA\Schema(type="string"), required=true, description="开始日期"), + * @OA\Parameter(name="end_date", in="query", @OA\Schema(type="string"), required=true, description="结束日期"), + * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"), + * @OA\Response( + * response="200", + * description="暂无" + * ) + * ) + */ + public function coursesHome() + { + $start_date = request('start_date', '2020-01-01'); + $end_date = request('end_date', date('Y-m-d')); + // 报名人数 + $list['course_signs_total'] = CourseSign::whereDate('created_at', '>=', $start_date) + ->whereDate('created_at', '<=', $end_date) + ->count(); + // 审核通过人数 + $list['course_signs_pass'] = CourseSign::where('status', 1) + ->whereDate('created_at', '>=', $start_date) + ->whereDate('created_at', '<=', $end_date) + ->count(); + // 审核通过人数去重 + $list['course_signs_pass_unique'] = CourseSign::where('status', 1) + ->whereDate('created_at', '>=', $start_date) + ->whereDate('created_at', '<=', $end_date) + ->select('user_id') + ->distinct() + ->count(); + // 课程 + $courses = Course::whereDate('created_at', '>=', $start_date) + ->whereDate('created_at', '<=', $end_date) + ->get(); + // 开课场次 + $list['course_total'] = $courses->count(); + // 开课天数 + $list['course_day_total'] = $courses->sum(function ($course) { + $start = Carbon::parse($course->start_date); + $end = Carbon::parse($course->end_date); + return $end->diffInDays($start) + 1; // 包含起始和结束日期 + }); + // 课程分类明细统计 + $courseTypesSum = []; + $courseTypes = CourseType::get(); + foreach ($courseTypes as $courseType) { + // 获取课程 + $courses = Course::where('type', $courseType->id)->get(); + // 培养人数 + $courseTypeSignsPass = CourseSign::where('status', 1) + ->whereIn('course_id', $courses->pluck('id')) + ->whereDate('created_at', '>=', $start_date) + ->whereDate('created_at', '<=', $end_date) + ->count(); + // 去重培养人数 + $courseTypeSignsPassUnique = CourseSign::where('status', 1) + ->whereDate('created_at', '>=', $start_date) + ->whereDate('created_at', '<=', $end_date) + ->select('user_id') + ->distinct() + ->count(); + foreach ($courses as $course) { + $courseTypesSum[] = [ + 'course_type' => $courseType->name, + 'course_type_signs_pass' => $courseTypeSignsPass, + 'course_type_signs_pass_unique' => $courseTypeSignsPassUnique, + '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() + ]; + } + + } + // 区域明细统计 + $areas = ParameterDetail::where('parameter_id', 5)->get(); + foreach ($areas as $area) { + $area->course_signs_pass = CourseSign::where('status', 1) + ->whereHas('user', function ($query) use ($area) { + $query->where('company_area', $area->value); + })->whereDate('created_at', '>=', $start_date) + ->whereDate('created_at', '<=', $end_date) + ->count(); + $area->course_signs_pass_unique = CourseSign::where('status', 1) + ->whereHas('user', function ($query) use ($area) { + $query->where('company_area', $area->value); + })->whereDate('created_at', '>=', $start_date) + ->whereDate('created_at', '<=', $end_date) + ->select('user_id') + ->distinct() + ->count(); + } + return $this->success(compact('list', 'courseTypesSum', 'areas')); + } + /** * @OA\Post( * path="/api/admin/other/admin-user-list", diff --git a/routes/api.php b/routes/api.php index 2c68f33..cb4feba 100755 --- a/routes/api.php +++ b/routes/api.php @@ -35,6 +35,7 @@ Route::group(["namespace" => "Admin", "prefix" => "admin"], function () { Route::get('users/index', [\App\Http\Controllers\Admin\UserController::class, "index"]); Route::get('other/table-fileds', [\App\Http\Controllers\Admin\OtherController::class, "tableFileds"]); Route::get('other/home', [\App\Http\Controllers\Admin\OtherController::class, "home"]); + Route::get('other/courses-home', [\App\Http\Controllers\Admin\OtherController::class, "coursesHome"]); // 验证码登陆 Route::get('auth/sms-login', [\App\Http\Controllers\Admin\AuthController::class, "smsLogin"]); From b72a0bbbffae7618485e1d804a7fbcb74167b4a1 Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Fri, 22 Aug 2025 10:18:34 +0800 Subject: [PATCH 10/13] update --- app/Http/Controllers/Admin/OtherController.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Admin/OtherController.php b/app/Http/Controllers/Admin/OtherController.php index 0e9e497..3e54712 100755 --- a/app/Http/Controllers/Admin/OtherController.php +++ b/app/Http/Controllers/Admin/OtherController.php @@ -181,7 +181,9 @@ class OtherController extends CommonController ->distinct() ->count(); } - return $this->success(compact('list', 'courseTypesSum', 'areas')); + // 返回所有sql语句 + $sql = DB::getQueryLog(); + return $this->success(compact('list', 'courseTypesSum', 'areas', 'sql')); } /** From 0ba63b19c22d83bf94313e87b0f7d26dd01fa40f Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Fri, 22 Aug 2025 10:21:17 +0800 Subject: [PATCH 11/13] update --- app/Http/Controllers/Admin/OtherController.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/Http/Controllers/Admin/OtherController.php b/app/Http/Controllers/Admin/OtherController.php index 3e54712..93b814a 100755 --- a/app/Http/Controllers/Admin/OtherController.php +++ b/app/Http/Controllers/Admin/OtherController.php @@ -99,6 +99,9 @@ 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')); // 报名人数 From 4efb922386e01f7c1c20a16cd0725b6b7f03887a Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Fri, 22 Aug 2025 10:22:32 +0800 Subject: [PATCH 12/13] update --- app/Http/Controllers/Admin/OtherController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/Admin/OtherController.php b/app/Http/Controllers/Admin/OtherController.php index 93b814a..3f4a9ef 100755 --- a/app/Http/Controllers/Admin/OtherController.php +++ b/app/Http/Controllers/Admin/OtherController.php @@ -132,6 +132,8 @@ class OtherController extends CommonController $end = Carbon::parse($course->end_date); return $end->diffInDays($start) + 1; // 包含起始和结束日期 }); + // 返回所有sql语句 + $sql = DB::getQueryLog(); // 课程分类明细统计 $courseTypesSum = []; $courseTypes = CourseType::get(); @@ -184,8 +186,6 @@ class OtherController extends CommonController ->distinct() ->count(); } - // 返回所有sql语句 - $sql = DB::getQueryLog(); return $this->success(compact('list', 'courseTypesSum', 'areas', 'sql')); } From e3c0ff323e5620b084b7e7437de672237f203423 Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Fri, 22 Aug 2025 10:45:24 +0800 Subject: [PATCH 13/13] update --- .../Controllers/Admin/OtherController.php | 41 ++++++++++++++----- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/app/Http/Controllers/Admin/OtherController.php b/app/Http/Controllers/Admin/OtherController.php index 3f4a9ef..d2c045c 100755 --- a/app/Http/Controllers/Admin/OtherController.php +++ b/app/Http/Controllers/Admin/OtherController.php @@ -90,6 +90,7 @@ class OtherController extends CommonController * description="", * @OA\Parameter(name="start_date", in="query", @OA\Schema(type="string"), required=true, description="开始日期"), * @OA\Parameter(name="end_date", in="query", @OA\Schema(type="string"), required=true, description="结束日期"), + * @OA\Parameter(name="course_type_id", in="query", @OA\Schema(type="string"), required=true, description="课程体系id,多个英文逗号"), * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"), * @OA\Response( * response="200", @@ -104,26 +105,42 @@ class OtherController extends CommonController $start_date = request('start_date', '2020-01-01'); $end_date = request('end_date', date('Y-m-d')); + $course_type_id = request('course_type_id', ''); + if ($course_type_id) { + // 部分 + $course_type_id = explode(',', $course_type_id); + } else { + // 全部 + $course_type_id = CourseType::pluck('id')->toArray(); + } + // 课程 + $courses = Course::where('start_date', '>=', $start_date) + ->where('start_date', '<=', $end_date) + ->whereIn('type', $course_type_id) + ->get(); // 报名人数 $list['course_signs_total'] = CourseSign::whereDate('created_at', '>=', $start_date) ->whereDate('created_at', '<=', $end_date) - ->count(); + ->where(function ($query) use ($courses) { + $query->whereIn('course_id', $courses->pluck('id')); + })->count(); // 审核通过人数 $list['course_signs_pass'] = 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')); + }) ->count(); // 审核通过人数去重 $list['course_signs_pass_unique'] = CourseSign::where('status', 1) ->whereDate('created_at', '>=', $start_date) ->whereDate('created_at', '<=', $end_date) - ->select('user_id') + ->where(function ($query) use ($courses) { + $query->whereIn('course_id', $courses->pluck('id')); + })->select('user_id') ->distinct() ->count(); - // 课程 - $courses = Course::whereDate('created_at', '>=', $start_date) - ->whereDate('created_at', '<=', $end_date) - ->get(); // 开课场次 $list['course_total'] = $courses->count(); // 开课天数 @@ -136,24 +153,28 @@ class OtherController extends CommonController $sql = DB::getQueryLog(); // 课程分类明细统计 $courseTypesSum = []; - $courseTypes = CourseType::get(); + $courseTypes = CourseType::whereIn('id', $course_type_id)->get(); foreach ($courseTypes as $courseType) { // 获取课程 - $courses = Course::where('type', $courseType->id)->get(); + $courses2 = Course::where('start_date', '>=', $start_date) + ->where('start_date', '<=', $end_date) + ->where('type', $courseType->id) + ->get(); // 培养人数 $courseTypeSignsPass = CourseSign::where('status', 1) - ->whereIn('course_id', $courses->pluck('id')) + ->whereIn('course_id', $courses2->pluck('id')) ->whereDate('created_at', '>=', $start_date) ->whereDate('created_at', '<=', $end_date) ->count(); // 去重培养人数 $courseTypeSignsPassUnique = CourseSign::where('status', 1) + ->whereIn('course_id', $courses2->pluck('id')) ->whereDate('created_at', '>=', $start_date) ->whereDate('created_at', '<=', $end_date) ->select('user_id') ->distinct() ->count(); - foreach ($courses as $course) { + foreach ($courses2 as $course) { $courseTypesSum[] = [ 'course_type' => $courseType->name, 'course_type_signs_pass' => $courseTypeSignsPass,