From 40957dc15f42d33d0a712dd4b5d16951b374faa3 Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Thu, 17 Jul 2025 14:15:39 +0800 Subject: [PATCH] update --- app/Models/User.php | 35 ++++++++++++++++++- .../2025_06_19_105447_alert_users_table.php | 5 +-- 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/app/Models/User.php b/app/Models/User.php index c94c0a5..1c0f62c 100755 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -183,7 +183,40 @@ class User extends Authenticatable implements Auditable public static function updateNo($userId) { $user = self::find($userId); - $no = date('Ymd', strtotime($user->created_at)) . str_pad($userId, 6, '0', STR_PAD_LEFT); + if (!empty($user->no)) { + return false; + } + // 获取最早一条审核通过的报名数据 + $courseSigns = CourseSign::with('course') + ->where('user_id', $userId) + ->where('status', 1) + ->orderBy('created_at', 'asc') + ->first(); + if (empty($courseSigns)) { + return false; + } + if (empty($courseSigns->course->start_time)) { + return false; + } + // 编号前缀 + $prifix = date('Ymd', strtotime($courseSigns->course->start_time)); + // 获取同一天开始的所有课程 + $course = Course::where('start_time', $courseSigns->course->start_time)->orderBy('created_at', 'asc')->get(); + // 获取同一天开始所有课程的报名信息 + $courseSigns = CourseSign::whereIn('id', function ($query) use ($course) { + $query->from('course_signs') + ->where('status', 1) + ->whereIn('course_id', $course->pluck('id')) + ->selectRaw('MIN(id)') + ->groupBy('user_id'); + })->whereHas('user', function ($query) { + $query->whereNull('no'); + })->orderBy('created_at', 'asc')->get(); + // 获取当前用户id在$courseSigns中第几位 + $index = $courseSigns->search(function ($item) use ($user) { + return $item->user_id == $user->id; + }); + $no = $prifix . str_pad($index, 3, '0', STR_PAD_LEFT); $user->no = $no; $user->save(); return $user->no; diff --git a/database/migrations/2025_06_19_105447_alert_users_table.php b/database/migrations/2025_06_19_105447_alert_users_table.php index 4f92a64..6ce4142 100644 --- a/database/migrations/2025_06_19_105447_alert_users_table.php +++ b/database/migrations/2025_06_19_105447_alert_users_table.php @@ -4,8 +4,7 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -return new class extends Migration -{ +return new class extends Migration { /** * Run the migrations. * @@ -16,6 +15,8 @@ return new class extends Migration Schema::table('users', function (Blueprint $table) { $table->string('no')->nullable()->comment('学号'); $table->date('birthday')->nullable()->comment('生日')->change(); + // no字段唯一索引 + $table->unique('no'); }); }