You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

82 lines
2.1 KiB

<?php
namespace App\Console\Commands;
use App\Models\Course;
use App\Models\CourseSign;
use App\Models\User;
use App\Repositories\MeetRepository;
use Illuminate\Console\Command;
class UpdateUserNo extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'update_user_no';
/**
* The console command description.
*
* @var string
*/
protected $description = '批量更新学号';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
// 已经开始的课程日期(所有历史数据处理)
// $dateList = Course::whereNotNull('start_date')
// ->where('start_date', '<=', date('Y-m-d'))
// ->orderBy('start_date')
// ->groupBy('start_date')
// ->pluck('start_date')
// ->toArray();
// 当日数据处理(日常定时任务)
$dateList = [date('Y-m-d')];
foreach ($dateList as $date) {
$courses = Course::with(['courseSigns' => function ($query) {
$query->where('status', 1);
}])->where('start_date', $date)
->whereNotNull('student_prefix')
->orderBy('start_date')
->get();
$i = 1;
// 编号前缀
foreach ($courses as $course) {
foreach ($course->courseSigns as $sign) {
$user = User::find($sign->user_id);
if ($user->no) {
continue;
}
$no = $course->student_prefix . str_pad($i, 3, '0', STR_PAD_LEFT);
// 更新用户编号
$user->no = $no;
$user->save();
$this->info($no);
$i++;
}
}
}
return $this->info('更新完成');
}
}