updateUserNo(); // 2. 给元和同事打标签 $this->tagYuanheColleague(); return $this->info('更新完成'); } /** * 批量更新学号 */ protected function updateUserNo() { $this->info('开始更新学号...'); // 已经开始的课程日期(所有历史数据处理) // $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++; } } } $this->info('学号更新完成'); } /** * 给元和同事打标签 */ protected function tagYuanheColleague() { $this->info('开始给元和同事打标签...'); $tag = '元禾同事'; // 获取元和员工用户列表 $users = CourseSign::companyJoin(null, null, null, true); $count = 0; foreach ($users as $user) { // 获取当前的 from 字段 $from = $user->from ?? ''; // 将 from 字段按逗号分隔成数组 $fromArray = array_filter(array_map('trim', explode(',', $from))); // 检查是否已存在该标签 if (in_array($tag, $fromArray)) { continue; } // 追加标签 $fromArray[] = $tag; // 更新 from 字段 $user->from = implode(',', $fromArray); $user->save(); $this->info('已为用户 ' . $user->name . '(' . $user->mobile . ') 添加标签: ' . $tag); $count++; } $this->info('元和同事标签更新完成,共更新 ' . $count . ' 人'); } }