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} 个用户");
}
}