updateUserName.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. namespace App\Console\Commands;
  3. use App\Components\QQInfo;
  4. use App\Models\User;
  5. use Illuminate\Console\Command;
  6. use Log;
  7. class updateUserName extends Command
  8. {
  9. protected $signature = 'updateUserName';
  10. protected $description = '升级用户昵称';
  11. public function handle(): void
  12. {
  13. Log::info(
  14. '----------------------------【升级用户昵称】开始----------------------------'
  15. );
  16. $userList = User::all();
  17. foreach ($userList as $user) {
  18. $name = process($user->id);
  19. $user->update(['username' => $name]);
  20. Log::info(
  21. '---用户[ID:' . $user->id . ' - ' . $user->email . '] :' . $user->username . '---'
  22. );
  23. }
  24. foreach ($userList as $user) {
  25. if ($user->email == $user->username) {
  26. $name = process($user->id);
  27. $user->update(['username' => $name]);
  28. Log::info(
  29. '---用户[ID:' . $user->id . ' - ' . $user->email . '] :' . $user->username . '---'
  30. );
  31. }
  32. }
  33. Log::info(
  34. '----------------------------【升级用户昵称】结束----------------------------'
  35. );
  36. }
  37. }
  38. function process($id)
  39. {
  40. $user = User::find($id);
  41. // 先设个默认值
  42. $name = $user->email;
  43. // 用户是否设置了QQ号
  44. if ($user->qq) {
  45. $name = QQInfo::getName3($user->qq);
  46. // 检测用户注册是否为QQ邮箱
  47. } elseif (stripos($user->email, '@qq') !== false) {
  48. // 分离QQ邮箱后缀
  49. $email = explode('@', $user->email, 2);
  50. if (is_numeric($email[0])) {
  51. $name = QQInfo::getName3($email[0]);
  52. } elseif (str_contains($email[0], '.')) {
  53. $temp = explode('.', $email[0]);
  54. if (is_numeric($temp[1])) {
  55. $name = QQInfo::getName3($temp[1]);
  56. } else {
  57. echo $user->email . PHP_EOL;
  58. }
  59. }
  60. }
  61. if ($name == false) {
  62. $name = $user->email;
  63. }
  64. return $name;
  65. }