From e00dd15e297500ae7d556f3351b949ef9afc0469 Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Fri, 13 Mar 2026 15:46:59 +0800 Subject: [PATCH] update --- .../Admin/ScheduleOverviewController.php | 395 ++++++++++++++++++ app/Models/ScheduleOverviewCourse.php | 18 + app/Models/ScheduleOverviewSchedule.php | 18 + app/Models/ScheduleOverviewSystem.php | 18 + ...160000_create_schedule_overview_tables.php | 67 +++ routes/api.php | 15 + shangxueyuan.code-workspace | 13 + 科技商学院学员信息-匹配人才标签_匹配是否.xlsx | Bin 31130 -> 0 bytes 8 files changed, 544 insertions(+) create mode 100644 app/Http/Controllers/Admin/ScheduleOverviewController.php create mode 100644 app/Models/ScheduleOverviewCourse.php create mode 100644 app/Models/ScheduleOverviewSchedule.php create mode 100644 app/Models/ScheduleOverviewSystem.php create mode 100644 database/migrations/2026_03_13_160000_create_schedule_overview_tables.php create mode 100644 shangxueyuan.code-workspace delete mode 100644 科技商学院学员信息-匹配人才标签_匹配是否.xlsx diff --git a/app/Http/Controllers/Admin/ScheduleOverviewController.php b/app/Http/Controllers/Admin/ScheduleOverviewController.php new file mode 100644 index 0000000..7c84fa4 --- /dev/null +++ b/app/Http/Controllers/Admin/ScheduleOverviewController.php @@ -0,0 +1,395 @@ +systemModel = new ScheduleOverviewSystem(); + $this->courseModel = new ScheduleOverviewCourse(); + $this->scheduleModel = new ScheduleOverviewSchedule(); + } + + public function overview() + { + $year = request('year', date('Y')); + + return $this->success([ + 'systems' => $this->getSystems(), + 'courses' => $this->getCourses(), + 'schedules' => $this->getSchedules($year), + ]); + } + + public function systemIndex() + { + return $this->success($this->getSystems()); + } + + public function systemShow() + { + $all = request()->all(); + $validator = Validator::make($all, [ + 'id' => 'required', + ], [ + 'id.required' => '体系ID必填', + ]); + + if ($validator->fails()) { + return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); + } + + $detail = $this->systemModel->with('courses')->find($all['id']); + if (empty($detail)) { + return $this->fail([ResponseCode::ERROR_BUSINESS, '体系不存在']); + } + + return $this->success($detail); + } + + public function systemSave() + { + $all = request()->all(); + $validator = Validator::make($all, [ + 'name' => 'required|string|max:255', + 'sort' => 'nullable|integer', + ], [ + 'name.required' => '体系名称必填', + ]); + + if ($validator->fails()) { + return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); + } + + if (!empty($all['id'])) { + $model = $this->systemModel->find($all['id']); + if (empty($model)) { + return $this->fail([ResponseCode::ERROR_BUSINESS, '体系不存在']); + } + } else { + $model = new ScheduleOverviewSystem(); + $model->admin_id = $this->getUserId(); + $model->department_id = optional($this->getUser())->department_id; + } + + DB::beginTransaction(); + try { + $model->name = $all['name']; + $model->sort = (int) ($all['sort'] ?? 0); + $model->save(); + + DB::commit(); + return $this->success($model); + } catch (\Throwable $throwable) { + DB::rollBack(); + return $this->fail([ResponseCode::ERROR_INSIDE, $throwable->getMessage()]); + } + } + + public function systemDestroy() + { + $all = request()->all(); + $validator = Validator::make($all, [ + 'id' => 'required', + ], [ + 'id.required' => '体系ID必填', + ]); + + if ($validator->fails()) { + return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); + } + + $model = $this->systemModel->find($all['id']); + if (empty($model)) { + return $this->fail([ResponseCode::ERROR_BUSINESS, '体系不存在']); + } + + DB::beginTransaction(); + try { + $courseIds = $this->courseModel->where('system_id', $model->id)->pluck('id')->toArray(); + $this->scheduleModel->where('system_id', $model->id)->delete(); + if (!empty($courseIds)) { + $this->scheduleModel->whereIn('course_id', $courseIds)->delete(); + $this->courseModel->whereIn('id', $courseIds)->delete(); + } + $model->delete(); + + DB::commit(); + return $this->success('删除成功'); + } catch (\Throwable $throwable) { + DB::rollBack(); + return $this->fail([ResponseCode::ERROR_INSIDE, $throwable->getMessage()]); + } + } + + public function courseIndex() + { + return $this->success($this->getCourses()); + } + + public function courseShow() + { + $all = request()->all(); + $validator = Validator::make($all, [ + 'id' => 'required', + ], [ + 'id.required' => '课程ID必填', + ]); + + if ($validator->fails()) { + return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); + } + + $detail = $this->courseModel->with('system')->find($all['id']); + if (empty($detail)) { + return $this->fail([ResponseCode::ERROR_BUSINESS, '课程不存在']); + } + + return $this->success($detail); + } + + public function courseSave() + { + $all = request()->all(); + $validator = Validator::make($all, [ + 'system_id' => 'required|integer', + 'name' => 'required|string|max:255', + 'sort' => 'nullable|integer', + ], [ + 'system_id.required' => '所属体系必填', + 'name.required' => '课程名称必填', + ]); + + if ($validator->fails()) { + return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); + } + + $system = $this->systemModel->find($all['system_id']); + if (empty($system)) { + return $this->fail([ResponseCode::ERROR_BUSINESS, '所属体系不存在']); + } + + if (!empty($all['id'])) { + $model = $this->courseModel->find($all['id']); + if (empty($model)) { + return $this->fail([ResponseCode::ERROR_BUSINESS, '课程不存在']); + } + } else { + $model = new ScheduleOverviewCourse(); + $model->admin_id = $this->getUserId(); + $model->department_id = optional($this->getUser())->department_id; + } + + DB::beginTransaction(); + try { + $originSystemId = $model->system_id; + $model->system_id = (int) $all['system_id']; + $model->name = $all['name']; + $model->sort = (int) ($all['sort'] ?? 0); + $model->save(); + + if (!empty($originSystemId) && (int) $originSystemId !== (int) $model->system_id) { + $this->scheduleModel->where('course_id', $model->id)->update([ + 'system_id' => $model->system_id, + ]); + } + + DB::commit(); + return $this->success($model->load('system')); + } catch (\Throwable $throwable) { + DB::rollBack(); + return $this->fail([ResponseCode::ERROR_INSIDE, $throwable->getMessage()]); + } + } + + public function courseDestroy() + { + $all = request()->all(); + $validator = Validator::make($all, [ + 'id' => 'required', + ], [ + 'id.required' => '课程ID必填', + ]); + + if ($validator->fails()) { + return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); + } + + $model = $this->courseModel->find($all['id']); + if (empty($model)) { + return $this->fail([ResponseCode::ERROR_BUSINESS, '课程不存在']); + } + + DB::beginTransaction(); + try { + $this->scheduleModel->where('course_id', $model->id)->delete(); + $model->delete(); + + DB::commit(); + return $this->success('删除成功'); + } catch (\Throwable $throwable) { + DB::rollBack(); + return $this->fail([ResponseCode::ERROR_INSIDE, $throwable->getMessage()]); + } + } + + public function scheduleIndex() + { + $year = request('year', date('Y')); + + return $this->success($this->getSchedules($year)); + } + + public function scheduleShow() + { + $all = request()->all(); + $validator = Validator::make($all, [ + 'id' => 'required', + ], [ + 'id.required' => '编排ID必填', + ]); + + if ($validator->fails()) { + return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); + } + + $detail = $this->scheduleModel->with(['system', 'course'])->find($all['id']); + if (empty($detail)) { + return $this->fail([ResponseCode::ERROR_BUSINESS, '编排不存在']); + } + + return $this->success($detail); + } + + public function scheduleSave() + { + $all = request()->all(); + $validator = Validator::make($all, [ + 'year' => 'required|string|size:4', + 'system_id' => 'required|integer', + 'course_id' => 'required|integer', + 'month' => 'required|integer|min:1|max:12', + 'title' => 'required|string|max:255', + 'owner' => 'required|string|max:255', + 'location' => 'required|string|max:255', + 'count_text' => 'nullable|string|max:255', + ], [ + 'year.required' => '年份必填', + 'system_id.required' => '体系必填', + 'course_id.required' => '课程必填', + 'month.required' => '月份必填', + 'title.required' => '编排标题必填', + 'owner.required' => '负责人必填', + 'location.required' => '地点必填', + ]); + + if ($validator->fails()) { + return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); + } + + $system = $this->systemModel->find($all['system_id']); + if (empty($system)) { + return $this->fail([ResponseCode::ERROR_BUSINESS, '体系不存在']); + } + + $course = $this->courseModel->find($all['course_id']); + if (empty($course)) { + return $this->fail([ResponseCode::ERROR_BUSINESS, '课程不存在']); + } + + if ((int) $course->system_id !== (int) $system->id) { + return $this->fail([ResponseCode::ERROR_BUSINESS, '课程不属于当前体系']); + } + + if (!empty($all['id'])) { + $model = $this->scheduleModel->find($all['id']); + if (empty($model)) { + return $this->fail([ResponseCode::ERROR_BUSINESS, '编排不存在']); + } + } else { + $model = new ScheduleOverviewSchedule(); + $model->admin_id = $this->getUserId(); + $model->department_id = optional($this->getUser())->department_id; + } + + DB::beginTransaction(); + try { + $model->year = $all['year']; + $model->system_id = (int) $all['system_id']; + $model->course_id = (int) $all['course_id']; + $model->month = (int) $all['month']; + $model->title = $all['title']; + $model->owner = $all['owner']; + $model->location = $all['location']; + $model->count_text = $all['count_text'] ?? ''; + $model->save(); + + DB::commit(); + return $this->success($model->load(['system', 'course'])); + } catch (\Throwable $throwable) { + DB::rollBack(); + return $this->fail([ResponseCode::ERROR_INSIDE, $throwable->getMessage()]); + } + } + + public function scheduleDestroy() + { + $all = request()->all(); + $validator = Validator::make($all, [ + 'id' => 'required', + ], [ + 'id.required' => '编排ID必填', + ]); + + if ($validator->fails()) { + return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); + } + + $model = $this->scheduleModel->find($all['id']); + if (empty($model)) { + return $this->fail([ResponseCode::ERROR_BUSINESS, '编排不存在']); + } + + $model->delete(); + return $this->success('删除成功'); + } + + protected function getSystems() + { + return $this->systemModel + ->orderBy('sort') + ->orderBy('id') + ->get(); + } + + protected function getCourses() + { + return $this->courseModel + ->with('system') + ->orderBy('sort') + ->orderBy('id') + ->get(); + } + + protected function getSchedules($year) + { + return $this->scheduleModel + ->with(['system', 'course']) + ->where('year', $year) + ->orderBy('month') + ->orderBy('id') + ->get(); + } +} diff --git a/app/Models/ScheduleOverviewCourse.php b/app/Models/ScheduleOverviewCourse.php new file mode 100644 index 0000000..9caf75c --- /dev/null +++ b/app/Models/ScheduleOverviewCourse.php @@ -0,0 +1,18 @@ +belongsTo(ScheduleOverviewSystem::class, 'system_id', 'id'); + } + + public function schedules() + { + return $this->hasMany(ScheduleOverviewSchedule::class, 'course_id', 'id'); + } +} diff --git a/app/Models/ScheduleOverviewSchedule.php b/app/Models/ScheduleOverviewSchedule.php new file mode 100644 index 0000000..32fc00b --- /dev/null +++ b/app/Models/ScheduleOverviewSchedule.php @@ -0,0 +1,18 @@ +belongsTo(ScheduleOverviewSystem::class, 'system_id', 'id'); + } + + public function course() + { + return $this->belongsTo(ScheduleOverviewCourse::class, 'course_id', 'id'); + } +} diff --git a/app/Models/ScheduleOverviewSystem.php b/app/Models/ScheduleOverviewSystem.php new file mode 100644 index 0000000..11e355a --- /dev/null +++ b/app/Models/ScheduleOverviewSystem.php @@ -0,0 +1,18 @@ +hasMany(ScheduleOverviewCourse::class, 'system_id', 'id')->orderBy('sort')->orderBy('id'); + } + + public function schedules() + { + return $this->hasMany(ScheduleOverviewSchedule::class, 'system_id', 'id'); + } +} diff --git a/database/migrations/2026_03_13_160000_create_schedule_overview_tables.php b/database/migrations/2026_03_13_160000_create_schedule_overview_tables.php new file mode 100644 index 0000000..157c9a6 --- /dev/null +++ b/database/migrations/2026_03_13_160000_create_schedule_overview_tables.php @@ -0,0 +1,67 @@ +id(); + $table->string('name')->comment('体系名称'); + $table->integer('sort')->default(0)->comment('排序'); + $table->bigInteger('admin_id')->nullable()->comment('创建管理员'); + $table->bigInteger('department_id')->nullable()->comment('部门ID'); + $table->timestamps(); + $table->softDeletes(); + }); + + Schema::create('schedule_overview_courses', function (Blueprint $table) { + $table->id(); + $table->unsignedBigInteger('system_id')->comment('所属体系ID'); + $table->string('name')->comment('课程名称'); + $table->integer('sort')->default(0)->comment('排序'); + $table->bigInteger('admin_id')->nullable()->comment('创建管理员'); + $table->bigInteger('department_id')->nullable()->comment('部门ID'); + $table->timestamps(); + $table->softDeletes(); + + $table->index('system_id'); + }); + + Schema::create('schedule_overview_schedules', function (Blueprint $table) { + $table->id(); + $table->string('year', 4)->comment('年份'); + $table->unsignedBigInteger('system_id')->comment('体系ID'); + $table->unsignedBigInteger('course_id')->comment('课程ID'); + $table->unsignedTinyInteger('month')->comment('月份'); + $table->string('title')->comment('编排标题'); + $table->string('owner')->comment('负责人'); + $table->string('location')->comment('地点'); + $table->string('count_text')->nullable()->comment('显示说明'); + $table->bigInteger('admin_id')->nullable()->comment('创建管理员'); + $table->bigInteger('department_id')->nullable()->comment('部门ID'); + $table->timestamps(); + $table->softDeletes(); + + $table->index(['year', 'month']); + $table->index('system_id'); + $table->index('course_id'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('schedule_overview_schedules'); + Schema::dropIfExists('schedule_overview_courses'); + Schema::dropIfExists('schedule_overview_systems'); + } +}; diff --git a/routes/api.php b/routes/api.php index a7e8ef7..24b0bd7 100755 --- a/routes/api.php +++ b/routes/api.php @@ -80,6 +80,21 @@ Route::group(["namespace" => "Admin", "prefix" => "admin"], function () { Route::post('course-types/excel-show', [\App\Http\Controllers\Admin\CourseTypeController::class, "excelShow"]); Route::post('course-types/import', [\App\Http\Controllers\Admin\CourseTypeController::class, "import"]); + // 课程排期总览 + Route::get('schedule-overview/overview', [\App\Http\Controllers\Admin\ScheduleOverviewController::class, "overview"]); + Route::get('schedule-overview/systems/index', [\App\Http\Controllers\Admin\ScheduleOverviewController::class, "systemIndex"]); + Route::get('schedule-overview/systems/show', [\App\Http\Controllers\Admin\ScheduleOverviewController::class, "systemShow"]); + Route::post('schedule-overview/systems/save', [\App\Http\Controllers\Admin\ScheduleOverviewController::class, "systemSave"]); + Route::get('schedule-overview/systems/destroy', [\App\Http\Controllers\Admin\ScheduleOverviewController::class, "systemDestroy"]); + Route::get('schedule-overview/courses/index', [\App\Http\Controllers\Admin\ScheduleOverviewController::class, "courseIndex"]); + Route::get('schedule-overview/courses/show', [\App\Http\Controllers\Admin\ScheduleOverviewController::class, "courseShow"]); + Route::post('schedule-overview/courses/save', [\App\Http\Controllers\Admin\ScheduleOverviewController::class, "courseSave"]); + Route::get('schedule-overview/courses/destroy', [\App\Http\Controllers\Admin\ScheduleOverviewController::class, "courseDestroy"]); + Route::get('schedule-overview/schedules/index', [\App\Http\Controllers\Admin\ScheduleOverviewController::class, "scheduleIndex"]); + Route::get('schedule-overview/schedules/show', [\App\Http\Controllers\Admin\ScheduleOverviewController::class, "scheduleShow"]); + Route::post('schedule-overview/schedules/save', [\App\Http\Controllers\Admin\ScheduleOverviewController::class, "scheduleSave"]); + Route::get('schedule-overview/schedules/destroy', [\App\Http\Controllers\Admin\ScheduleOverviewController::class, "scheduleDestroy"]); + // 通讯录 Route::get('users/index', [\App\Http\Controllers\Admin\UserController::class, "index"]); Route::get('users/study', [\App\Http\Controllers\Admin\UserController::class, "study"]); diff --git a/shangxueyuan.code-workspace b/shangxueyuan.code-workspace new file mode 100644 index 0000000..d5e682c --- /dev/null +++ b/shangxueyuan.code-workspace @@ -0,0 +1,13 @@ +{ + "folders": [ + { + "name": "后端 (wx.sstbc.com)", + "path": "." + }, + { + "name": "后台前端 (shangxueyuan-admin)", + "path": "/Users/apple/www/fronted/shangxueyuan-admin" + } + ], + "settings": {} +} diff --git a/科技商学院学员信息-匹配人才标签_匹配是否.xlsx b/科技商学院学员信息-匹配人才标签_匹配是否.xlsx deleted file mode 100644 index 103a04b5423130a26d1282c780c66f87e4416ee9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31130 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