AutoAssignUserId.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. /**
  3. * 生成待分配使用用户id
  4. */
  5. require __DIR__ . '/../../vendor/autoload.php';
  6. use think\App;
  7. use app\model\UserIdAssignModel;
  8. use app\model\UserModel;
  9. $app = App::getInstance();
  10. $app->initialize();
  11. // 可使用的用户id范围
  12. $userIdRange = [10000, 99999];
  13. $offset = $userIdRange[0];
  14. $limit = $userIdRange[1];
  15. for ($i = $offset; $i < $limit; $i += 5000)
  16. {
  17. $tempRange = range($i, $i + 5000);
  18. echo $i . " " . ($i + 5000) . "\n";
  19. // 打乱数组
  20. shuffle($tempRange);
  21. $availableUids = [];
  22. if (!empty($tempRange))
  23. {
  24. foreach ($tempRange as $key => $val)
  25. {
  26. $isFilter = false;
  27. if (preg_match('/(1{4}|2{4}|3{4}|4{4}|5{4}|6{4}|7{4}|8{4}|9{4}|0{4})/', $val, $matches))
  28. {
  29. // 带4A以上的
  30. $isFilter = true;
  31. }
  32. elseif (preg_match('/(12345|98765)/', $val, $matches))
  33. {
  34. // 5连顺的
  35. $isFilter = true;
  36. }
  37. // id已经注册过
  38. if (UserModel::where([['user_id', '=', $val]])->find())
  39. {
  40. $isFilter = true;
  41. }
  42. if (!$isFilter)
  43. {
  44. $availableUids[] = ['user_id' => $val];
  45. }
  46. if ($key % 1000 === 0)
  47. {
  48. if (!empty($availableUids))
  49. {
  50. UserIdAssignModel::insertAll($availableUids);
  51. echo "添加" . count($availableUids) . "\n";
  52. $availableUids = [];
  53. }
  54. }
  55. }
  56. if ($availableUids)
  57. {
  58. UserIdAssignModel::insertAll($availableUids);
  59. echo "添加" . count($availableUids) . "\n";
  60. }
  61. unset($availableUids);
  62. }
  63. }