master
cody 5 months ago
parent 99de692cbb
commit 40957dc15f

@ -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;

@ -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');
});
}

Loading…
Cancel
Save