setName('sms_verify') ->setDescription('轮询未验证手机号用户,从上传记录反向校验并更新绑定状态'); } protected function execute(Input $input, Output $output) { $users = User::where('mobile', '<>', '') ->where('is_bind_mobile', 0) ->field('id, mobile') ->select(); if ($users->isEmpty()) { $output->writeln('[SmsVerify] 无待验证用户'); return; } $output->writeln('[SmsVerify] 待验证用户: ' . $users->count() . ''); $updated = 0; foreach ($users as $user) { $mobile = $user->mobile; // 查询 la_sms_upload 是否有该手机号的任意上传记录(兼容+86前缀) $record = SmsLog::where(function ($query) use ($mobile) { $query->where('phone', $mobile) ->whereOr('phone', '+86' . $mobile) ->whereOr('phone', '86' . $mobile); }) ->order('sms_time', 'desc') ->findOrEmpty(); if (!$record->isEmpty()) { if ((int)$record->status === 0) { $record->status = 1; $record->save(); } User::where('id', $user->id)->update(['is_bind_mobile' => 1]); $updated++; $output->writeln(" ✓ 用户 {$user->id} ({$mobile}) 已验证"); } } $output->writeln("[SmsVerify] 完成,更新 {$updated} 个用户"); } }