TestLogin4uCommand.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. <?php
  2. namespace App\Module\AppGame\Commands;
  3. use App\Module\AppGame\Handler\Public\Login4uHandler;
  4. use Illuminate\Console\Command;
  5. use Uraus\Kku\Request\RequestPublicLogin4u;
  6. use Uraus\Kku\Response;
  7. /**
  8. * 测试Login4u功能的命令
  9. */
  10. class TestLogin4uCommand extends Command
  11. {
  12. /**
  13. * 命令签名
  14. *
  15. * @var string
  16. */
  17. protected $signature = 'test:login4u {keylogin? : URS登录密钥}';
  18. /**
  19. * 命令描述
  20. *
  21. * @var string
  22. */
  23. protected $description = '测试URS login4u登录功能';
  24. /**
  25. * 执行命令
  26. *
  27. * @return int
  28. */
  29. public function handle(): int
  30. {
  31. $list = [
  32. '$2y$10$vSeIMezjuWCio1QeTvLRiuXwSFtSWmVrQqMbewqTbSZFfCkwmP1bW',
  33. '$2y$10$AAsh/phSE3satjyVl/L9OeRBCassOopEIUl9TD8oaD4vvg33YPX1.',
  34. '$2y$10$8ctTWiO8s5YCXaFHJCtQae1fKZaZTeCWQTjJYJ5HepoqLKFuyZ8ja',
  35. '$2y$10$i.h97m13olfIaU.ZTYiyeeXFl8xqn48w2bFiAhcoQsJdU6K3w.Lgu',
  36. '$2y$10$.apuGc./lahFIX8Vub.iZ.yH4o/9GitRVH6ATwIw6RfHJSJROy0Om',
  37. '$2y$10$BfhTPCBojKUJngPxl8.n4eRgbBXI3EJ42XFbxSdW.PxZ5aE3pBzY2',
  38. '$2y$10$iqeinOqM18rGhAzpCV8Q4.z4et3WW9bxF5Lts8gSidXFClw6AN/oy',
  39. '$2y$10$AxJqjJBkn99dJ1mevph36es1qzAwy/zTjXWbACWnWs5asyeQNTUtG',
  40. '$2y$10$ufAvwTm0gdZJfAEMMX28ZuzAWvOmz5bKXn1u1ij8ANf9ikXGUP1S6',
  41. '$2y$10$He55N4y1lP42kqG9JF1tqeAWoahgyWm79XxZA4/xUAjx3vqETl2Y2',
  42. '$2y$10$MI8e6Zy9ssZlxY3tUEVnKe/lN1EPimRfZgUwIEph.nSnmHO4a4cI.',
  43. '$2y$10$0wT4qhccgBkwEiR4mCAEa.GGts1k5fMotccdq5nArT0U9u1n5bFo.',
  44. '$2y$10$Us3wgSQ.jDF3yDRSaObbxuzanP8UHUbTdHnCT0GHn43/1a4DHEbMO',
  45. '$2y$10$FUrTODmpCFU96iANKuH8PO7iKTz6Zv.ITG2hSPSw.Isu.M5EUOgaK',
  46. '$2y$10$5bqBQFzt7dJUoefiZyU/pueUs/c.7GuqxCSbJ.NTXKJ1.OpvArq8i',
  47. '$2y$10$w6.a/FLa3QipyUUje9U1sOOfTRsxyaWI0zjGxFktMVjhf2yTrroJu',
  48. '$2y$10$KOYGxwt6KZjUlNQd/vxo1.EulJWClRddb/uxK6zf3ZSJoDff/wxya',
  49. '$2y$10$YYovCoCDIjqXfKC51ZtFauRv1QRrHmKNQuXenHs9xfPB8HQ4ZOCH6',
  50. '$2y$10$k5x/7jW.DuU.REx.YPNxkeLXPrANFfhESzQ4bh2vyPL5lq4BvcVsy',
  51. '$2y$10$WPfgM3D31Jy7zeXvWPltm.E.PAp.8T1Qa7xew26g6UWgBDpDOCr/K',
  52. '$2y$10$DPIUUWwt2nk5521A1sepbe9ZLRCCDwlViZEjx9F1lixcVj68x9JWK',
  53. '$2y$10$8jG9n1fDw8LWTCg/hEHgF.hQ84FohtITs5eiJ4reX1vVtGgKO3C6a',
  54. '$2y$10$VaiyAqdU2XBFWKJmLqwZkOT2J/Ko6ZQpS6qW2CymXbpj3VU8CydXy',
  55. '$2y$10$FATSasULXDsbaEnabqtGL.rMk93cjmGyJY2jrxxCmE8LFa8co01nO',
  56. '$2y$10$H8LL9HStDL5WmtgFa15ETuSUiII0x2f4t/aHNmn3YF0gfzj0JWf8u',
  57. '$2y$10$IL1cVuLTxwzoefan3r5ehO0QoOtfeUmnzRHN8kkVcDJ8OcXpmhuZi',
  58. '$2y$10$b4r9N6BpjAd4xWc59aCOZebrW8mp/8bAmg.nAx4ntJu6nPql63fMK',
  59. '$2y$10$3GmjlsamJmXzTlEOO4wdTurxp7iUMIBUtYU6D52Fgv0mZKI.NMIoy',
  60. '$2y$10$9xoXJr1/J0qCJM.Q4cba1OVskm3zcEguYx6soJcEDLKtbuo5.ugCu',
  61. '$2y$10$x2mwVCeYGWvkHH145Z9f3Oq2nzO6KgZafDIfygw8IDpCHION.iknq',
  62. '$2y$10$B3b/07vETeWpYfJd1ClDIu8auWVrwHzAqS/c74xet2nxngac7p.0O',
  63. '$2y$10$YeITJTaE9QDG0z3NauJHGe739Cr6uahPrX1oTNemvVUk4amsGmKjO',
  64. '$2y$10$CD7CV5767H7twDYvHwlCX.2LAb/ANZN2ZoEQOi/4DXhy9Br/JDg96',
  65. '$2y$10$q/urdzLYbo/M2fgBZSEZJu5QF1vkDrHchQ403plvoxNnOKbPPAc7S',
  66. '$2y$10$uCSahq.3/O2tppVP222ZAuKyEbuYMp6nrP5P66tA5fwHM0bml01zK',
  67. '$2y$10$sUPLMX5dggG6a21i84cfPeeSy3Kx1yVlZKAeJ0npGBdqowt9RGLli',
  68. '$2y$10$ZREhbKQCIdSl.Gwo.MVAvuai2eEElU.Ivag19ethtHPLT7uZLpTpC',
  69. '$2y$10$bQIs2a9gn3HyfQmxfEFebupoToZsrMS9Fp7uadALMsFm0VGlhQCti',
  70. '$2y$10$aHCYj/V9zC6M.jEoucpoXuTXs4zsrQ7ze0ODr4I7pihq7Xql28LjC',
  71. '$2y$10$lHFcS/njOcthjjcPMHh3NuIPCXYsHKB3Nqf0qCBn/kS6PDCICACF6',
  72. '$2y$10$Qvk.Mw02FtC57irtmtHyO./m7mvOr5wIzjbWGi7Y0lrIXwZrAc.Iu',
  73. '$2y$10$8rojU3vsdf/cY.jQU.Be2eGKtfFkvHYxH6n.OTmuJm80E.q.Uj6Yu',
  74. '$2y$10$7Gwu0J/uFL/zYsYHhkLjQOWJBn.Qp.sG1gqXl.Og.2DZyVKEstXhG',
  75. '$2y$10$7NZOasHw6Zz2YAFBi9MIbex.LPdZ7C41SEksdbBVO0g40I5vGX8ny',
  76. '$2y$10$FDiDzFWYicNq8fDZcEagu.gr.4GYWMBoQgix3aB7eXlSLvBxDpRSC',
  77. '$2y$10$3S0xgJDEWTeTr6j0/87ZPOHTtCNxJbuU3V7MkewicEpLTPoxT8w4K',
  78. '$2y$10$WdDdhF6HacHbOMdwJ.cP0.edrIT2HcUDsc46bCKVcVVaNFm2QjESK',
  79. '$2y$10$3aUGOUGumNuLF4t9NXPxMOMDvJ28UwEyqANybSQdv749TCshrmXRa',
  80. '$2y$10$pdWMJl4WRgNnemS.Yq.OJ.UxaDshM.sMPUPCdZu4tsbCSuWudJJL6',
  81. '$2y$10$YHREiV4O3Wq8zGiGpWtKQuvUUuLOcR3n2RAAKWmO1PXSv7KYeVd4i',
  82. '$2y$10$BswBpzVIWcb4ObS.1lKVpubSa3vZFNlkdmb4TTzVv58OXsgeWQZH2',
  83. '$2y$10$Pu45pGsUErVdKB4n7ONO9.eBkFEk3nKvG9oyny40kkFUXvF92w4KG',
  84. '$2y$10$lb/EPcdjpJllZIV9LJpXdOCxN.MhRhhhi2tGbYQptseoFz7Bbr6bi',
  85. '$2y$10$nJ8okHJf80JrTZRQFe7WNuZbvC/u4JLh6PDKWFrkOu89rL21VyPc2',
  86. '$2y$10$/kPfRo2fn6rsrW8B52PLSONt9TYb5ICkvutGLHDB3fj8fOLJM5Pf.',
  87. '$2y$10$hVacePRwFuO06gWGsJ7K6O2hXqfdIbyEm8QA6JSppNqScarvYKxLy',
  88. '$2y$10$gS2ZXXvd1CAvBRnH1qRYF.cCBjBQ33极速赛车开奖结果zrP9SgYSRJ3AUGP2sjSBWDm',
  89. '$2y$10$nBOKpzEJe46.1IE6Q1LF0ucEXQ59RN9KtRTC3INPs9ga1sO6Tuz8a',
  90. '$2y$10$be/eKpuQeBpuVd4eNmRt.e6utrTm0jTqwSdCLQrnpEOep9jJXF14e',
  91. '$2y$10$v2J.NBupc2UEtO9E.C2iI.uq/BosmOmANDPCU9ufors29OriXN7yS',
  92. '$2y$10$0Xl/UrADrLGrBj4N/DXegethsUhzSM3VSWZugNCKO7hYmVy9KqQpW',
  93. '$2y$10$SA1X9y.KC9lbo5jsKfyCLuFipzLEF57Y9D7/rQKO//ciMRI1L5Rbm',
  94. '$2y$10$HXH6CqnWLZ6BS1XFz9UX0.NByZvY4NHQ2nqcIA5SJ.BS/jy3IsOxO',
  95. '$2y$10$ntk89G/nhGTfaqiraVBeXe2wgBcmn0YLJX0CIVyX4dx6kjrhSq0VO',
  96. '$2y$10$xvr3HARikrPniQLkbuYxDeFymlOPYhFULiOqd3Co8FsJ0U3AIaiMO',
  97. '$2y$10$KRVeTEiIxrpFnDzcxU2pfeCJ8YA6mmgI4n/ak80rLiRzK/981shE6',
  98. '$2y$10$NKnyP70oIQx3.mWHjEezwOl.3FKBIP/VihrkPPNlNVxBx6FMBHMp2',
  99. '$2y$10$ZnvXf7f8eguXpb7MzNi.4OQjy1DglOGA44teqO2yRh59LlC6JnkO.',
  100. '$2y$10$kOqeghrJkANWNhUFgNK7iuyd/c6YUpZzifDxSC3IeLZxAJsnP/gya',
  101. '$2y$10$GWaGlkHICfthakapn8XQyeUVNX6gWQO./xDfKENtcIDL0U65pgAZa',
  102. '$2y$10$gtUpWBZByVzt8d4Q7UHEO.Z5Hdrvgnu.PGP1zNRPXsFRqWzXcm6n2',
  103. '$2y$10$BOAMNqPKeYHb.rwccpUy3evu22GGK5rubY363t18Fn59nqphxlxtO',
  104. '$2y$10$3B4apsyILR.stVc086c/seWzNjZzi2SAWK1uPTJcp7YA4JT7iLhLu',
  105. '$2y$10$H2698kZOcLk1Er/oLXyfle9elpI/5FEQCdSRQTKDVOHXKKpv44dgO',
  106. '$2y$10$RpJUc7FAPzvJzzIpCYvscOLAtkuk5Mv2c/V5zKS4KpUwSEAIxZU6e',
  107. '$2y$10$iN1C80.cMhFPnzvGEqV.O.AXK28IBN.F7bE9ivGdyB4GJFylahXhK',
  108. '$2y$10$hiDCtzyQ7pjDY5snfIaDhu6ZxPCyqCp7MoNDNBY3s4bygFbGTx8t2',
  109. '$2y$10$JGtk9C1K7XpE9jAwx4IUF.al1H6uu3gYNU2N8KlGigAfWG.8IDrNO',
  110. '$2y$10$RzArESToJ2AK0Ku8H//q8OcO7tVGujVw8D2pwVElwLkZs7gNHNpW.',
  111. '$2y$10$kuGUKsT9UUZUtWmqrea1RObeGjGaaQg9/gRK/cOlar1PwbsMZ.kZq',
  112. '$2y$10$M3Ck8i.E9vYYsDGYEjajwufkuWS5yGb9ZOZGe8qKPtgehwVhqHwWO',
  113. '$2y$10$8kWkW.xKu6/2YURElTc7ZuyETCNp.ju0iT5q0BocXl3H6rxxWBDAm',
  114. '$2y$10$Qxepvh/TA4.af72mg7yKB.YD316GG.ZSCNwtvMHceRQQvgYQN.s1C',
  115. '$2y$10$Kubeg.CErV.feCGczsq95uPKp812uTvSQuISDbcyyH4zfOX.7mz72',
  116. '$2y$10$qILBqAaW9rv/MKNgv2ecxOXZJ7dDTg4hZavoNIdZd2zylWWO/CsBG',
  117. '$2y$10$bvIS3pBPb3HphUS0lZFq7O9qyuXKkpDWoGlrzkmuyme6JFlU/zQzK',
  118. '$2y$10$5K4lARQdhtLznRsWBi1FQu20GD.nvIr4mBbLfWflrr/PXkNW/tcUi',
  119. '$2y$10$fpxgw2xw1qe4hWuwVLdWxOq91sLffIDOAxnfYi.ZGm5.lLe.nz9Li',
  120. '$2y$10$r4W6Twpx4xo7lJ97/Z5VHOqFGCw9PQmj1TwrMDRNvZl4nRB0WRE0i',
  121. '$2y$10$goqyJyLelYmYa96tvAKbxOgkTItxSdVodH4Jm7mz93snK4B/Donwq',
  122. '$2y$10$esnxwr.VkErOG3ONBrm.P.g6WtEvR7CUhZ2f1.4g3gzjtdP6shTdm',
  123. '$2y$10$etsW/JFgcVrMep4dLVhc3OKUmwJttsHkrMkYgTBJAi0ZqDPN3XKwy',
  124. '$2y$10$SR4FrXjWOzxayozWmiPZouK5mdmD2O/QQqw8k871584txlV3rS5hi',
  125. '$2y$10$G38mEbVrpVSbmuZr2o1X7.oPk/gj8VoQRRrZthxhSGxE/OZlCbfpG',
  126. '$2y$10$PHhgosS6vGaESSiqTAQ7Y.voqiw9eEtq7hv17G23Im17BaDpPOwAm',
  127. '$2y$10$2g3LwUV2j/Iaj2Nt746Jaepvf9yU2Xw2Uab5BjoB40qF6qerNe3GC',
  128. '$2y$10$7.Se8OoQDyb72wxH0VQt.ORHIVUi3.cRmHRvn7plFQpRFFnvI7FFe',
  129. '$2y$10$OzhgLATsdqa3/6XtjFI71.RShcUgLT8AWDfdQZstI8JrUjCSX64AW',
  130. ];
  131. // 获取测试用的keylogin
  132. $keylogin = $this->argument('keylogin') ?: $this->ask('请输入URS登录密钥(keylogin)');
  133. foreach ($list as $value) {
  134. $this->test1($value);
  135. }
  136. return Command::SUCCESS;
  137. }
  138. protected function test1($keylogin)
  139. {
  140. $this->info('=== 测试URS Login4u功能 ===');
  141. if (empty($keylogin)) {
  142. $this->error('登录密钥不能为空');
  143. return Command::FAILURE;
  144. }
  145. try {
  146. // 1. 测试Handler类是否存在
  147. $this->info('1. 检查Handler类...');
  148. if (!class_exists(\App\Module\AppGame\Handler\Public\Login4uHandler::class)) {
  149. $this->error('Login4uHandler类不存在');
  150. return Command::FAILURE;
  151. }
  152. $this->line('✓ Login4uHandler类存在');
  153. // 2. 测试Request和Response类是否存在
  154. $this->info('2. 检查Protobuf类...');
  155. if (!class_exists(\Uraus\Kku\Request\RequestPublicLogin4u::class)) {
  156. $this->error('RequestPublicLogin4u类不存在');
  157. return Command::FAILURE;
  158. }
  159. $this->line('✓ RequestPublicLogin4u类存在');
  160. if (!class_exists(\Uraus\Kku\Response\ResponsePublicLogin4u::class)) {
  161. $this->error('ResponsePublicLogin4u类不存在');
  162. return Command::FAILURE;
  163. }
  164. $this->line('✓ ResponsePublicLogin4u类存在');
  165. // 3. 测试URS服务是否可用
  166. $this->info('3. 检查URS服务...');
  167. if (!class_exists(\ThirdParty\Urs\Services\UrsService::class)) {
  168. $this->error('UrsService类不存在');
  169. return Command::FAILURE;
  170. }
  171. $this->line('✓ UrsService类存在');
  172. // 4. 测试UrsUserMappingService是否可用
  173. $this->info('4. 检查UrsUserMappingService...');
  174. if (!class_exists(\App\Module\UrsPromotion\Services\UrsUserMappingService::class)) {
  175. $this->error('UrsUserMappingService类不存在');
  176. return Command::FAILURE;
  177. }
  178. $this->line('✓ UrsUserMappingService类存在');
  179. // 5. 创建测试请求
  180. $this->info('5. 创建测试请求...');
  181. $request = new RequestPublicLogin4u();
  182. $request->setKeylogin($keylogin);
  183. $this->line("✓ 测试请求创建成功,keylogin: {$keylogin}");
  184. // 6. 创建Handler实例并测试
  185. $this->info('6. 测试Handler处理...');
  186. $response = new Response();
  187. $handler = new Login4uHandler($response);
  188. $this->line('开始处理登录请求...');
  189. $result = $handler->handle($request);
  190. // 7. 检查响应
  191. $this->info('7. 检查响应结果...');
  192. if (!$result instanceof \Uraus\Kku\Response\ResponsePublicLogin4u) {
  193. $this->error('响应类型错误,期望ResponsePublicLogin4u');
  194. return Command::FAILURE;
  195. }
  196. dump($result->serializeToJsonString());
  197. $token = $result->getToken();
  198. $isProhibit = $result->getIsProhibit();
  199. if (empty($token) || $isProhibit) {
  200. $this->error('登录失败');
  201. $this->line("Token: {$token}");
  202. $this->line("IsProhibit: " . ($isProhibit ? 'true' : 'false'));
  203. return Command::FAILURE;
  204. }
  205. $this->info('✓ 登录成功!');
  206. $this->line("Token: {$token}");
  207. $this->line("IsProhibit: " . ($isProhibit ? 'true' : 'false'));
  208. // 8. 检查最后登录信息
  209. if ($result->hasLastLoginInfo()) {
  210. $lastLoginInfo = $result->getLastLoginInfo();
  211. $this->line("最后登录时间: " . date('Y-m-d H:i:s', $lastLoginInfo->getLastLoginTimes()));
  212. }
  213. $this->info('=== 测试完成 ===');
  214. return Command::SUCCESS;
  215. } catch (\Exception $e) {
  216. $this->error('测试失败: ' . $e->getMessage());
  217. $this->line('错误详情: ' . $e->getTraceAsString());
  218. return Command::FAILURE;
  219. }
  220. }
  221. }