NewUserSendRideCardListener.php 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. /**
  23. * Handle the event.
  24. *
  25. * @param CardCertifiedEvent $event
  26. * @return void
  27. */
  28. public function handle(CardCertifiedEvent $event)
  29. {
  30. $user = $event->user;
  31. $card = CardRiding::where('name', '新用户完成实名注册奖励')->where('is_give', CardRiding::GIVE_OK)->first();
  32. $user_id = $user->id;
  33. $card_id = $card->id;
  34. if ($card) {
  35. $users = User::where('id', $user_id)->first();
  36. if (empty($users)) return;
  37. $cardRiding = CardRiding::where('status', CardRiding::STATUS_OK)->find($card_id);
  38. if (empty($cardRiding)) return;
  39. if ($cardRiding->is_give == CardRiding::GIVE_NO) return;
  40. $expiration_time = Carbon::now()->addDays($cardRiding->effective_days)->format('Y-m-d H:i:s');
  41. try {
  42. DB::beginTransaction();
  43. $cardRidingOrder = CardRidingOrder::firstOrCreate([
  44. 'no' => CardRidingOrder::makeNo(),
  45. 'area_id' => $users->register_area_id,
  46. 'user_id' => $users->id,
  47. 'riding_card_id' => $card_id,
  48. 'money' => 0,
  49. 'discount' => 1,
  50. 'pay_money' => 0,
  51. 'pay_type' => CardRidingOrder::PAY_TYPE_NEW_USER_OVER_AUTH_SERVER_GIVE,
  52. 'pay_status' => CardRidingOrder::PAY_STATUS_OK,
  53. 'pay_time' => Carbon::now(),
  54. ]);
  55. $data = [
  56. 'user_id' => $users->id,
  57. 'riding_card_id' => $card_id,
  58. 'card_riding_order_id' => $cardRidingOrder->id,
  59. 'take_effect_time' => Carbon::now(),
  60. 'deduction_money' => $cardRiding->deduction_money,
  61. 'expiration_time' => $expiration_time,
  62. 'is_limit_times' => $cardRiding->is_limit_times,
  63. 'can_ridding_times' => $cardRiding->times,
  64. 'day_can_ridding_times' => $cardRiding->day_can_ridding_times,
  65. 'status' => CardRidingUserBags::STATUS_OK
  66. ];
  67. CardRidingUserBags::firstOrCreate(['card_riding_order_id' => $cardRidingOrder->id], $data);
  68. DB::commit();
  69. } catch (\Exception $exception) {
  70. Log::error($exception->getMessage());
  71. }
  72. }
  73. }
  74. }