From c82a8a83e38cb13a607cdc29d3aa809fcf8c9e4f Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Thu, 14 Aug 2025 14:49:10 +0800 Subject: [PATCH] update --- .../Controllers/Admin/CalendarsController.php | 2 + .../Admin/CourseContentController.php | 2 + .../Controllers/Admin/TeacherController.php | 77 ++++++++++++++++++- .../Controllers/Mobile/CourseController.php | 15 +--- app/Models/Teacher.php | 4 + ...25_06_25_150423_create_calendars_table.php | 4 + .../2025_08_14_103426_alert_courses_table.php | 4 + 7 files changed, 93 insertions(+), 15 deletions(-) diff --git a/app/Http/Controllers/Admin/CalendarsController.php b/app/Http/Controllers/Admin/CalendarsController.php index 79b3d33..777662d 100644 --- a/app/Http/Controllers/Admin/CalendarsController.php +++ b/app/Http/Controllers/Admin/CalendarsController.php @@ -105,6 +105,8 @@ class CalendarsController extends BaseController * @OA\Parameter(name="content", in="query", @OA\Schema(type="string", format="mediumtext"), required=false, description="内容"), * @OA\Parameter(name="start_time", in="query", @OA\Schema(type="string", format="date-time"), required=false, description="开始时间(YYYY-MM-DD HH:MM:SS)"), * @OA\Parameter(name="end_time", in="query", @OA\Schema(type="string", format="date-time"), required=false, description="结束时间(YYYY-MM-DD HH:MM:SS)"), + * @OA\Parameter(name="is_publish", in="query", @OA\Schema(type="string"), required=true, description="是否向用户发布0否1是"), + * @OA\Parameter(name="address", 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", diff --git a/app/Http/Controllers/Admin/CourseContentController.php b/app/Http/Controllers/Admin/CourseContentController.php index 803836a..c01b2f8 100755 --- a/app/Http/Controllers/Admin/CourseContentController.php +++ b/app/Http/Controllers/Admin/CourseContentController.php @@ -160,6 +160,8 @@ class CourseContentController extends BaseController * @OA\Parameter(name="latitude", in="query", @OA\Schema(type="string"), description="纬度"), * @OA\Parameter(name="address_detail", in="query", @OA\Schema(type="string"), description="详细地址"), * @OA\Parameter(name="file_ids", in="query", @OA\Schema(type="string"), description="文件id数组"), + * @OA\Parameter(name="direction", in="query", @OA\Schema(type="string"), description="课程方向"), + * @OA\Parameter(name="remark", in="query", @OA\Schema(type="string"), description="备注"), * @OA\Response( * response=200, * description="操作成功" diff --git a/app/Http/Controllers/Admin/TeacherController.php b/app/Http/Controllers/Admin/TeacherController.php index 8399490..e50bce4 100755 --- a/app/Http/Controllers/Admin/TeacherController.php +++ b/app/Http/Controllers/Admin/TeacherController.php @@ -2,7 +2,10 @@ namespace App\Http\Controllers\Admin; +use App\Exports\BaseExport; +use App\Models\CustomForm; use App\Models\Teacher; +use Maatwebsite\Excel\Facades\Excel; class TeacherController extends BaseController { @@ -38,7 +41,79 @@ class TeacherController extends BaseController */ public function index() { - return parent::index(); + $all = request()->all(); + $list = $this->model->with('courseContents.course')->where(function ($query) use ($all) { + if (isset($all['filter']) && !empty($all['filter'])) { + foreach ($all['filter'] as $condition) { + $key = $condition['key'] ?? null; + $op = $condition['op'] ?? null; + $value = $condition['value'] ?? null; + if (!isset($key) || !isset($op) || !isset($value)) { + continue; + } + // 等于 + if ($op == 'eq') { + $query->where($key, $value); + } + // 不等于 + if ($op == 'neq') { + $query->where($key, '!=', $value); + } + // 大于 + if ($op == 'gt') { + $query->where($key, '>', $value); + } + // 大于等于 + if ($op == 'egt') { + $query->where($key, '>=', $value); + } + // 小于 + if ($op == 'lt') { + $query->where($key, '<', $value); + } + // 小于等于 + if ($op == 'elt') { + $query->where($key, '<=', $value); + } + // 模糊搜索 + if ($op == 'like') { + $query->where($key, 'like', '%' . $value . '%'); + } + // 否定模糊搜索 + if ($op == 'notlike') { + $query->where($key, 'not like', '%' . $value . '%'); + } + // null搜索 + if ($op == 'null') { + $query->whereNull($key); + } + // notnull搜索 + if ($op == 'notnull') { + $query->whereNotNull($key); + } + // 范围搜索 + if ($op == 'range') { + list($from, $to) = explode(',', $value); + if (empty($from) || empty($to)) { + continue; + } + $query->whereBetween($key, [$from, $to]); + } + } + } + })->orderBy($all['sort_name'] ?? 'id', $all['sort_type'] ?? 'desc'); + if (isset($all['is_export']) && !empty($all['is_export'])) { + $list = $list->get()->toArray(); + $export_fields = $all['export_fields'] ?? []; + // 导出文件名字 + $tableName = $this->model->getTable(); + $filename = (new CustomForm())->getTableComment($tableName); + return Excel::download(new BaseExport($export_fields, $list, $tableName), $filename . date('YmdHis') . '.xlsx'); + } else { + // 输出 + $list = $list->paginate($all['page_size'] ?? 20); + } + return $this->success($list); } /** diff --git a/app/Http/Controllers/Mobile/CourseController.php b/app/Http/Controllers/Mobile/CourseController.php index 9c52ee1..fc576ea 100755 --- a/app/Http/Controllers/Mobile/CourseController.php +++ b/app/Http/Controllers/Mobile/CourseController.php @@ -890,29 +890,16 @@ class CourseController extends CommonController if ($validator->fails()) { return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); } -// $startDate = $all['month'] . '-01'; -// $endDate = date('Y-m-t', strtotime($startDate)); $list = Calendar::with('course', 'courseContent') ->where(function ($query) use ($all) { if (isset($all['type'])) { $query->where('type', $all['type']); } })->where('start_time', 'like', '%' . $all['month'] . '%') + ->where('is_publish', 1) ->orderBy('start_time', 'asc') ->get(); -// $range = getDates($startDate, $endDate); -// $list = []; -// foreach ($range as $date) { -// // 查询Calendar模型里start_time和end_time在日期内的数据,其中date是年月日,start_time和end_time是时分秒 -// $list[] = [ -// 'date' => $date, -// 'details' => Calendar::with('course', 'courseContent') -// ->whereDate('start_time', '<=', $date) -// ->whereDate('end_time', '>=', $date) -// ->get() -// ]; -// } return $this->success($list); } diff --git a/app/Models/Teacher.php b/app/Models/Teacher.php index 9aec16c..07378af 100755 --- a/app/Models/Teacher.php +++ b/app/Models/Teacher.php @@ -6,6 +6,10 @@ namespace App\Models; class Teacher extends SoftDeletesModel { + public function courseContents() + { + return $this->hasMany(CourseContent::class, 'teacher_id', 'id'); + } } diff --git a/database/migrations/2025_06_25_150423_create_calendars_table.php b/database/migrations/2025_06_25_150423_create_calendars_table.php index 5526c83..9979fcf 100644 --- a/database/migrations/2025_06_25_150423_create_calendars_table.php +++ b/database/migrations/2025_06_25_150423_create_calendars_table.php @@ -32,6 +32,10 @@ return new class extends Migration { $table->dateTime('end_time')->nullable()->comment('结束时间'); // 链接 $table->string('url')->nullable()->comment('链接'); + // 是否向用户发布 + $table->boolean('is_publish')->nullable()->comment('是否向用户发布'); + // 地址 + $table->string('address')->nullable()->comment('地址'); $table->timestamps(); $table->softDeletes(); }); diff --git a/database/migrations/2025_08_14_103426_alert_courses_table.php b/database/migrations/2025_08_14_103426_alert_courses_table.php index 9f14527..b3f4ad9 100644 --- a/database/migrations/2025_08_14_103426_alert_courses_table.php +++ b/database/migrations/2025_08_14_103426_alert_courses_table.php @@ -15,6 +15,10 @@ return new class extends Migration { Schema::table('courses', function (Blueprint $table) { // 已审核学员是否自动进入校友库 $table->boolean('auto_schoolmate')->default(false)->comment('已审核学员是否自动进入校友库0否1是'); + // 课程方向 + $table->string('direction')->nullable()->comment('课程方向'); + // 备注 + $table->string('remark')->nullable()->comment('备注'); }); }