UserBotCommand.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. <?php
  2. namespace App\Command\Init;
  3. use App\Model\CreatorModel;
  4. use App\Model\UserModel;
  5. use App\Repositories\Service\CommonService;
  6. use App\Repositories\Utils\RandomUserInfoRepository;
  7. use Carbon\Carbon;
  8. use Hyperf\Command\Command as HyperfCommand;
  9. use Psr\Container\ContainerInterface;
  10. use Hyperf\Command\Annotation\Command;
  11. /**
  12. * @Command
  13. */
  14. #[Command]
  15. class UserBotCommand extends HyperfCommand
  16. {
  17. /**
  18. * 执行的命令行
  19. *
  20. * @var string
  21. */
  22. protected $name = 'init:user_bot';
  23. protected $arrBotAvatars = [];
  24. /**
  25. * @var ContainerInterface
  26. */
  27. protected $container;
  28. public function __construct(ContainerInterface $container)
  29. {
  30. $this->container = $container;
  31. parent::__construct($this->name);
  32. }
  33. public function configure()
  34. {
  35. parent::configure();
  36. $this->setDescription('初始化普通用户1000和机器人20.');
  37. $this->addUsage(" 无参数");
  38. }
  39. public function handle()
  40. {
  41. self::createBots();
  42. self::createUsers();
  43. $nowDate = Carbon::now()->toDateTimeString();
  44. $this->comment(sprintf('[%s]初始化机器人和用户完成', $nowDate));
  45. }
  46. private function createOneUser($params = [])
  47. {
  48. if (empty($params['avatar'])) {
  49. $avatarNumber = str_pad((string)rand(1, 11), '3', '0', STR_PAD_LEFT);
  50. $avatar = sprintf('f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/a_%s.ceb', $avatarNumber);
  51. } else {
  52. $avatar = $params['avatar'];
  53. }
  54. $deviceNo = 'dk_'. substr(md5(random(11) . (string)time()), 0, 21);
  55. $fingerHash = substr(md5('fg_dk_'. $deviceNo) . random(7), 0, 25);
  56. $setarr = [
  57. 'ip' => '113.238.142.208',
  58. 'avatar' => $avatar,
  59. 'device_no' => $deviceNo,
  60. 'parent_uid' => $parentUid ?? '',
  61. 'channel_id' => '',
  62. 'device_type' => self::randDeviceType(),
  63. 'version' => '1.0.0',
  64. 'finger_hash' => $fingerHash,
  65. 'last_login_at' => Carbon::now()->toDateTimeString(),
  66. 'nick' => RandomUserInfoRepository::getNickname(),
  67. 'status' => 1,
  68. 'max_view' => 0,
  69. 'vip_expired' => Carbon::now()->addDays(300)->toDateTimeString(),
  70. 'max_comment' => 1,
  71. 'vip_level' => rand(1, 5),
  72. 'creator_level' => 5, // 冗余创作者等级.
  73. ];
  74. if (!empty($params)) {
  75. $setarr = array_merge($setarr, $params);
  76. }
  77. $user = UserModel::query()->create($setarr);
  78. $code = hashEncodeId($user->id);
  79. $user->code = $code;
  80. $user->save();
  81. // 添加创作者表
  82. $this->createOneCreator($user);
  83. return $user;
  84. }
  85. private function createOneCreator($botUser) {
  86. $setarr = [
  87. 'user_uid' => $botUser->code,
  88. 'is_bot' => 1,
  89. 'status' => 1,
  90. 'level' => 5,
  91. 'reject_reason' => '',
  92. 'apply_at' => Carbon::now()->addMinutes(5)->toDateTimeString(),
  93. 'reject_at' => null,
  94. 'day_video' => 0,
  95. ];
  96. $r = CreatorModel::query()->create($setarr);
  97. return $r;
  98. }
  99. private function createBots()
  100. {
  101. $avatar = 'f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/default.ceb';
  102. $params = [
  103. 'gender' => 3,
  104. 'avatar' => '',
  105. ];
  106. $maxNum = 100;
  107. $arrAvatars = $this->getAllBotAvatars();
  108. for($i = 0; $i < $maxNum; $i++) {
  109. $params['avatar'] = $arrAvatars[$i];
  110. $user = self::createOneUser($params);
  111. }
  112. }
  113. private function createUsers()
  114. {
  115. $maxNum = 2300;
  116. for ($i = 0; $i < $maxNum; $i++) {
  117. $params = [
  118. 'gender' => rand(1, 2),
  119. ];
  120. $user = self::createOneUser($params);
  121. }
  122. }
  123. private function randDeviceType()
  124. {
  125. $arrTypes = [
  126. 'A',
  127. 'I',
  128. ];
  129. $key = array_rand($arrTypes);
  130. return $arrTypes[$key];
  131. }
  132. private function getAllBotAvatars()
  133. {
  134. if (empty($this->arrBotAvatars)) {
  135. $strJson = '["f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/08MvJ5Zj.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/0VgzXv8C.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/0fSiUgdN.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/0n0N0m74.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/0ySy0PBd.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/11D8CWG1.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/1eaXux1a.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/203z0bUo.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/2436129P.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/2z8Ud88D.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/3C37z9RP.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/3yLdjbaG.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/3yh49244.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/4mMwDB0a.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/51p7YDSE.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/53q99k1k.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/5D9q5B6l.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/5qMoFVQv.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/5z88Hj3u.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/67R3F793.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/69119uuf.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/6Gpv8m8z.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/6TXmpI1D.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/6Z7BB299.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/72LZ98MY.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/7ICUq0Wd.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/7iZT7Ljx.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/87vmjkma.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/8SUzx0xS.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/8eP115sm.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/910PTqia.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/9Rdy6dPS.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/9rM8M9qP.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/A0v0cV0v.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/AOTGvJi1.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/Bb9lJj79.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/D8Sz67go.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/Ee7u15vZ.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/EuBeHYz2.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/F3FqCOQ7.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/FbZP9F2R.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/Ie89UuAM.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/Jo4Fp7p9.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/Kz6Fd1KW.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/L9933Qlh.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/LH33d1eE.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/LNh8L1N1.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/MERquYZm.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/Ns3sCdiI.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/OO7L8L8C.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/OrQ11O2n.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/Pba5pprg.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/Q9rvoX4x.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/QDtiT2z2.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/QlWpJvPQ.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/Rtgvfy21.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/SJRPRP2j.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/SmnI31sY.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/U1zwhawC.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/Vyy5u7Yw.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/W38epX9c.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/XPxYQx06.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/Xb6Q555t.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/Y0zDSh7X.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/YH6164aU.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/YSuwzz44.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/Z7Ux8R62.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/ZNzVT6ZE.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/Zf82zb70.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/bRfrJzpP.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/cTPTTrRY.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/dT5a9DU6.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/eeHHf2fz.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/exWKRWwx.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/iCkaImmM.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/iINr6idK.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/jlaAb5fX.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/kkk8YvAv.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/kzAtHnGU.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/lFDMEfTm.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/lWo2eE60.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/n59lQl5e.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/n94NnkZf.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/nEdKZE2j.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/nUpurPqU.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/oOVzZOho.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/rs8zodK7.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/siQ4Or9L.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/tLu58uHl.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/tffoz088.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/ty7TbO37.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/ua1IV1e1.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/um9C8ASj.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/vr84sVCn.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/wyzTvhhW.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/xH1LzYZL.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/xqp6v8xZ.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/y7eyWZL7.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/y8lO7MkX.ceb","f2|/'. env('STATIC_DIR_NAME', 'doukui') . '/avatars/b1/zTlWT5f5.ceb"]';
  136. $strJson = trim($strJson);
  137. $this->arrBotAvatars = json_decode($strJson, true);
  138. }
  139. return $this->arrBotAvatars;
  140. }
  141. }