IndexController.php 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. <?php
  2. namespace App\Home\Controllers;
  3. use Storage;
  4. use App\Http\Controllers\Controller;
  5. use App\Model\Question;
  6. use App\Model\Option;
  7. use App\Jobs\Robot;
  8. use GuzzleHttp\Client;
  9. use GuzzleHttp\Cookie\CookieJar;
  10. class IndexController extends Controller
  11. {
  12. public function importTimu1()
  13. {
  14. set_time_limit(0);
  15. $txt = Storage::get('1.txt');
  16. $txt_arr = explode("\n", $txt);
  17. foreach ($txt_arr as $k => $val) {
  18. $q_a = explode('?', $val);
  19. $str1 = preg_replace('/^\d/i','',$q_a[0], 1);
  20. $str2 = preg_replace('/^\d/i','',$str1, 1);
  21. $title = preg_replace('/^\d/i','',$str2, 1);
  22. $question_id = Question::insertGetId([
  23. "title" => $title . "?",
  24. "is_released" => 1,
  25. "created_at" => date('Y-m-d H:i:s'),
  26. "updated_at" => date('Y-m-d H:i:s'),
  27. ]);
  28. $optiion = mb_substr($q_a[1], 0, -4);
  29. //答案
  30. $answer = mb_substr($q_a[1], -4);
  31. $answer = mb_substr($answer, 1,1);
  32. // echo $optiion;
  33. // echo mb_strpos($optiion, 'B');
  34. $o_answer = 0;
  35. if(mb_strpos($optiion, 'A')){
  36. $optiion_A = mb_substr($optiion, mb_strpos($optiion, 'A') + 1, mb_strpos($optiion, 'B') - mb_strpos($optiion, 'A') - 1);
  37. }else{
  38. $optiion_A = mb_substr($optiion, 0 ,mb_strpos($optiion, 'B') - 1);
  39. }
  40. if($answer == 'A'){
  41. $o_answer = 1;
  42. }
  43. Option::insert([
  44. "title" => $optiion_A,
  45. "is_answer" => $o_answer,
  46. "question_id" => $question_id,
  47. "created_at" => date('Y-m-d H:i:s'),
  48. "updated_at" => date('Y-m-d H:i:s'),
  49. ]);
  50. $o_answer = 0;
  51. if(mb_strpos($optiion, 'C')){
  52. $option_B = mb_substr($optiion, mb_strpos($optiion, 'B') + 1, mb_strpos($optiion, 'C') - mb_strpos($optiion, 'B') - 1);
  53. if($answer == 'B'){
  54. $o_answer = 1;
  55. }
  56. Option::insert([
  57. "title" => $option_B,
  58. "is_answer" => $o_answer,
  59. "question_id" => $question_id,
  60. "created_at" => date('Y-m-d H:i:s'),
  61. "updated_at" => date('Y-m-d H:i:s'),
  62. ]);
  63. $o_answer = 0;
  64. }elseif(mb_strpos($optiion, 'B')){
  65. echo $option_B = mb_substr($optiion, mb_strpos($optiion, 'B') + 1);
  66. if($answer == 'B'){
  67. $o_answer = 1;
  68. }
  69. Option::insert([
  70. "title" => $option_B,
  71. "is_answer" => $o_answer,
  72. "question_id" => $question_id,
  73. "created_at" => date('Y-m-d H:i:s'),
  74. "updated_at" => date('Y-m-d H:i:s'),
  75. ]);
  76. $o_answer = 0;
  77. }
  78. if(mb_strpos($optiion, 'D')){
  79. $option_C = mb_substr($optiion, mb_strpos($optiion, 'C') + 1, mb_strpos($optiion, 'D') - mb_strpos($optiion, 'C') - 1);
  80. if($answer == 'C'){
  81. $o_answer = 1;
  82. }
  83. Option::insert([
  84. "title" => $option_C,
  85. "is_answer" => $o_answer,
  86. "question_id" => $question_id,
  87. "created_at" => date('Y-m-d H:i:s'),
  88. "updated_at" => date('Y-m-d H:i:s'),
  89. ]);
  90. $o_answer = 0;
  91. }elseif(mb_strpos($optiion, 'C')){
  92. echo $option_C = mb_substr($optiion, mb_strpos($optiion, 'C') + 1);
  93. if($answer == 'C'){
  94. $o_answer = 1;
  95. }
  96. Option::insert([
  97. "title" => $option_C,
  98. "is_answer" => $o_answer,
  99. "question_id" => $question_id,
  100. "created_at" => date('Y-m-d H:i:s'),
  101. "updated_at" => date('Y-m-d H:i:s'),
  102. ]);
  103. $o_answer = 0;
  104. }
  105. if(mb_strpos($optiion, 'E')){
  106. $option_D = mb_substr($optiion, mb_strpos($optiion, 'D') + 1, mb_strpos($optiion, 'E') - mb_strpos($optiion, 'D') - 1);
  107. if($answer == 'B'){
  108. $o_answer = 1;
  109. }
  110. Option::insert([
  111. "title" => $option_D,
  112. "is_answer" => $o_answer,
  113. "question_id" => $question_id,
  114. "created_at" => date('Y-m-d H:i:s'),
  115. "updated_at" => date('Y-m-d H:i:s'),
  116. ]);
  117. $o_answer = 0;
  118. }elseif(mb_strpos($optiion, 'D')){
  119. $option_D = mb_substr($optiion, mb_strpos($optiion, 'D') + 1);
  120. if($answer == 'D'){
  121. $o_answer = 1;
  122. }
  123. Option::insert([
  124. "title" => $option_D,
  125. "is_answer" => $o_answer,
  126. "question_id" => $question_id,
  127. "created_at" => date('Y-m-d H:i:s'),
  128. "updated_at" => date('Y-m-d H:i:s'),
  129. ]);
  130. $o_answer = 0;
  131. }
  132. }
  133. }
  134. public function importTimu()
  135. {
  136. set_time_limit(0);
  137. $text = Storage::get('timu.json');
  138. $questions = json_decode($text);
  139. dump($questions);
  140. $answer_ex = [
  141. "A" => 1,
  142. "B" => 2,
  143. "C" => 3,
  144. "D" => 4,
  145. "E" => 5,
  146. "F" => 6,
  147. "G" => 7,
  148. ];
  149. foreach ($questions as $k => $ques) {
  150. $question_id = Question::insertGetId([
  151. "title" => $ques->title,
  152. "is_released" => 1,
  153. "created_at" => date('Y-m-d H:i:s'),
  154. "updated_at" => date('Y-m-d H:i:s'),
  155. ]);
  156. //判断答案
  157. foreach ($ques->options as $sk => $op) {
  158. if($answer_ex[$ques->answer] - 1 == $sk){
  159. $is_answer = 1;
  160. }else{
  161. $is_answer = 0;
  162. }
  163. Option::insert([
  164. "title" => $op,
  165. "is_answer" => $is_answer,
  166. "question_id" => $question_id,
  167. "created_at" => date('Y-m-d H:i:s'),
  168. "updated_at" => date('Y-m-d H:i:s'),
  169. ]);
  170. }
  171. echo "{$ques->title} 已入库";
  172. }
  173. }
  174. /**
  175. * 测试加入队列
  176. */
  177. public function putJob()
  178. {
  179. dump(Robot::dispatch()->onQueue('robot'));
  180. }
  181. /**
  182. * 测试机器人
  183. */
  184. // public function robot()
  185. // {
  186. // $client = new Client([
  187. // 'base_uri' => 'http://183.234.61.252:8090',
  188. // 'timeout' => 2.0,
  189. // 'cookies' => true,
  190. // 'verify' => false,
  191. // ]);
  192. // $worker = new Worker('websocket://183.234.61.252:8282');
  193. // $worker->onMessage = function($ws_connection, $message)
  194. // {
  195. // //$client->request('POST');
  196. // // 与远程task服务建立异步连接,ip为远程task服务的ip,如果是本机就是127.0.0.1,如果是集群就是lvs的ip
  197. // $task_connection = new AsyncTcpConnection('Text://127.0.0.1:12345');
  198. // // 任务及参数数据
  199. // $task_data = array(
  200. // 'function' => 'send_mail',
  201. // 'args' => array('from'=>'xxx', 'to'=>'xxx', 'contents'=>'xxx'),
  202. // );
  203. // // 发送数据
  204. // $task_connection->send(json_encode($task_data));
  205. // // 异步获得结果
  206. // $task_connection->onMessage = function($task_connection, $task_result)use($ws_connection)
  207. // {
  208. // // 结果
  209. // var_dump($task_result);
  210. // // 获得结果后记得关闭异步连接
  211. // $task_connection->close();
  212. // // 通知对应的websocket客户端任务完成
  213. // $ws_connection->send('task complete');
  214. // };
  215. // // 执行异步连接
  216. // $task_connection->connect();
  217. // }
  218. // Worker::runAll();
  219. // }
  220. }