| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | 
							- <?php
 
- namespace App\Jobs;
 
- use Illuminate\Bus\Queueable;
 
- use Illuminate\Queue\SerializesModels;
 
- use Illuminate\Queue\InteractsWithQueue;
 
- use Illuminate\Contracts\Queue\ShouldQueue;
 
- use Illuminate\Foundation\Bus\Dispatchable;
 
- use Illuminate\Support\Facades\Redis;
 
- use App\Model\Question;
 
- use App\Model\Option;
 
- use App\Model\RoomQuestion;
 
- use GatewayWorker\Lib\Gateway;
 
- class Distribute implements ShouldQueue
 
- {
 
-     use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
 
-     protected $room_id;     //房间ID
 
-     /**
 
-      * Create a new job instance.
 
-      *
 
-      * @return void
 
-      */
 
-     public function __construct($room_id)
 
-     {
 
-         $this->room_id = $room_id;
 
-     }
 
-     /**
 
-      * Execute the job.
 
-      *
 
-      * @return void
 
-      */
 
-     public function handle()
 
-     {
 
-         if(!$this->room_id){
 
-             echo "找不到房间ID";
 
-             return 0;
 
-         }
 
-         //获取当前房间是否还有未结算题目
 
-         $has_not_settlement_question = RoomQuestion::where("room_id", $this->room_id)->whereNull("end_at")->count();
 
-         if($has_not_settlement_question){
 
-             echo "当前房间还有未结算题目";
 
-             return 0;
 
-         }
 
-         //获取当前房间题目数
 
-         $questions_id = RoomQuestion::where("room_id", $this->room_id)->pluck("question_id");
 
-         if(count($questions_id) < 5){
 
-             //注册地址
 
-             Gateway::$registerAddress = '127.0.0.1:1238';
 
-             //获取题目
 
-             $question = Question::inRandomOrder()->select('question_id','title')->where("is_released",1)->whereNotIn("question_id", $questions_id)->first();
 
-             $options = Option::select('option_id','title')->where("question_id",$question->question_id)->get($question->question_id);
 
-             //记录题目
 
-             $date = date('Y-m-d H:i:s');
 
-             $next_date = date('YmdHis', strtotime("{$date} +10 seconds"));
 
-             RoomQuestion::insert([
 
-                 "room_id" => $this->room_id,
 
-                 "question_id" => $question->question_id,
 
-                 "title" => $question->title,
 
-                 "start_at" => $date,
 
-                 "created_at" => $date,
 
-                 "updated_at" => $date,
 
-             ]);
 
-             //发送题目
 
-             $info['question'] = $question; 
 
-             $info['options'] = $options; 
 
-             $info['start_at'] = $date; 
 
-             $info['sequence'] = count($questions_id) + 1; 
 
-             $message = [
 
-                 "type" => 'question',
 
-                 "msg" => "获取题目成功",
 
-                 "info" => $info,
 
-             ];
 
-             echo "发送题目到房间 {$this->room_id} \n";
 
-             Gateway::sendToGroup($this->room_id, json_encode($message));
 
-             //设置下次结算固定时间
 
-             $room_list = Redis::rpush("Game_settlement_{$next_date}", $this->room_id);
 
-         }
 
-     }
 
- }
 
 
  |