GrabgiftJob.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace App\Jobs;
  3. use Illuminate\Bus\Queueable;
  4. use Illuminate\Contracts\Queue\ShouldQueue;
  5. use Illuminate\Foundation\Bus\Dispatchable;
  6. use Illuminate\Queue\InteractsWithQueue;
  7. use Illuminate\Queue\SerializesModels;
  8. use Illuminate\Support\Facades\Redis;
  9. use Illuminate\Support\Facades\Log;
  10. use \GatewayClient\Gateway;
  11. use Illuminate\Support\Facades\DB;
  12. class GrabgiftJob implements ShouldQueue
  13. {
  14. use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
  15. protected $params;
  16. /**
  17. * Create a new job instance.
  18. *
  19. * @return void
  20. */
  21. public function __construct($params)
  22. {
  23. $this->params = $params;
  24. Log::info(date('Y-m-d H:i:d').':'.json_encode($params));
  25. }
  26. /**
  27. * Execute the job.
  28. *
  29. * @return void
  30. */
  31. public function handle()
  32. {
  33. $grab_id = $this->params['grab_id'];
  34. $new_grab_id = $this->params['new_grab_id'];
  35. $seat_number = $this->params['seat_number'];
  36. $price = $this->params['price'];
  37. $winer_uid = $this->params['winer_uid'];
  38. $redis = Redis::connection();
  39. //开奖了,旧的一期结束了
  40. $redis->del('kge_grabgift_num_'.$grab_id);
  41. $redis->del('kge_grabgift_seatnum_'.$grab_id);
  42. $redis->del('kge_grabgift_data_'.$grab_id);
  43. $redis->del('kge_grabgift_'.$grab_id);
  44. $rs3 = DB::table('hx_grabgift')->where('id',$grab_id)->update(['status'=>1,'grabtime'=>time()]);//更新开奖时间
  45. $rs2 = DB::table('hx_grabgift_log')->where('grab_id',$grab_id)->where('user_id',$winer_uid)->update(['grabstatus'=>1]);//中奖者
  46. //发奖
  47. $grab_info = DB::table('hx_grabgift')->where('id',$grab_id)->first();
  48. $gift_info = DB::table('hx_gift')->where('id',$grab_info->gift_id)->first();
  49. if(!empty($gift_info)){
  50. $giftdata = [
  51. 'user_id' => $winer_uid,
  52. 'gift_id' => $grab_info->gift_id,
  53. 'name' => $gift_info->name,
  54. 'image' => $gift_info->image,
  55. 'gif_image' => $gift_info->special,
  56. 'value' => $gift_info->value,
  57. 'number' => 1,
  58. 'get_way' => 1,
  59. 'createtime' => time(),
  60. ];
  61. $rs4 = DB::table('hx_gift_back')->insertGetId($giftdata);
  62. }
  63. //新的一期开始了
  64. $redis->set('kge_grabgift_'.$new_grab_id,$seat_number);
  65. $redis->set('kge_grabgift_lastgrabid',$new_grab_id);
  66. $redis->set('kge_grabgift_lock',0);
  67. $data = [
  68. 'grab_id' => $new_grab_id,
  69. 'seat_number' => $seat_number,
  70. 'price' => $price,
  71. 'kge_grabgift_lock' => 0,
  72. ];
  73. $this->sendGrabgift('startnew',$data);
  74. }
  75. /**
  76. * 房间中全民抢礼物,全服通告
  77. */
  78. public function sendGrabgift($type,$data)
  79. {
  80. $messageData = [
  81. 'type' => $type,
  82. 'data' => $data
  83. ];
  84. $Gateway = new Gateway();
  85. $Gateway::$registerAddress = '127.0.0.1:2345';
  86. $Gateway::sendToAll(json_encode($messageData));
  87. }
  88. }