NewUserSendRideCardListener.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. namespace App\Listeners;
  3. use App\Events\CardCertifiedEvent;
  4. use App\Models\CardRiding;
  5. use App\Models\CardRidingOrder;
  6. use App\Models\CardRidingUserBags;
  7. use App\Models\User;
  8. use Carbon\Carbon;
  9. use Illuminate\Contracts\Queue\ShouldQueue;
  10. use Illuminate\Queue\InteractsWithQueue;
  11. use Illuminate\Support\Facades\DB;
  12. use Illuminate\Support\Facades\Log;
  13. /**
  14. * 新用户注册赠送骑行卡
  15. * Class NewUserSendRideCardListener
  16. * @package App\Listeners
  17. * Author: Mead
  18. */
  19. class NewUserSendRideCardListener implements ShouldQueue
  20. {
  21. use InteractsWithQueue;
  22. public $tries = 5;
  23. /**
  24. * Handle the event.
  25. *
  26. * @param CardCertifiedEvent $event
  27. * @return void
  28. */
  29. public function handle(CardCertifiedEvent $event)
  30. {
  31. $card = CardRiding::where('name', '新用户完成实名注册奖励')->where('is_give', CardRiding::GIVE_OK)->first();
  32. if ($card) {
  33. $user = $event->user;
  34. $user_id = $user->id;
  35. $card_id = $card->id;
  36. $users = User::where('id', $user_id)->first();
  37. if (empty($users)) return;
  38. $cardRiding = CardRiding::where('status', CardRiding::STATUS_OK)->find($card_id);
  39. if (empty($cardRiding)) return;
  40. if ($cardRiding->is_give == CardRiding::GIVE_NO) return;
  41. $expiration_time = Carbon::now()->addDays($cardRiding->effective_days)->format('Y-m-d H:i:s');
  42. try {
  43. DB::beginTransaction();
  44. $cardRidingOrder = CardRidingOrder::firstOrCreate([
  45. 'no' => CardRidingOrder::makeNo(),
  46. 'area_id' => $users->register_area_id,
  47. 'user_id' => $users->id,
  48. 'riding_card_id' => $card_id,
  49. 'money' => 0,
  50. 'discount' => 1,
  51. 'pay_money' => 0,
  52. 'pay_type' => CardRidingOrder::PAY_TYPE_NEW_USER_OVER_AUTH_SERVER_GIVE,
  53. 'pay_status' => CardRidingOrder::PAY_STATUS_OK,
  54. 'pay_time' => Carbon::now(),
  55. ]);
  56. $data = [
  57. 'user_id' => $users->id,
  58. 'riding_card_id' => $card_id,
  59. 'card_riding_order_id' => $cardRidingOrder->id,
  60. 'take_effect_time' => Carbon::now(),
  61. 'deduction_money' => $cardRiding->deduction_money,
  62. 'expiration_time' => $expiration_time,
  63. 'is_limit_times' => $cardRiding->is_limit_times,
  64. 'can_ridding_times' => $cardRiding->times,
  65. 'day_can_ridding_times' => $cardRiding->day_can_ridding_times,
  66. 'status' => CardRidingUserBags::STATUS_OK
  67. ];
  68. CardRidingUserBags::firstOrCreate(['card_riding_order_id' => $cardRidingOrder->id], $data);
  69. DB::commit();
  70. } catch (\Exception $exception) {
  71. Log::error($exception->getMessage());
  72. }
  73. }
  74. return;
  75. }
  76. public function failed(CardCertifiedEvent $event, $exception)
  77. {
  78. Log::error($exception);
  79. }
  80. }