123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- <?php
- namespace App\Listeners;
- use App\Events\CardCertifiedEvent;
- use App\Models\CardRiding;
- use App\Models\CardRidingOrder;
- use App\Models\CardRidingUserBags;
- use App\Models\User;
- use Carbon\Carbon;
- use Illuminate\Contracts\Queue\ShouldQueue;
- use Illuminate\Queue\InteractsWithQueue;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Log;
- /**
- * 新用户注册赠送骑行卡
- * Class NewUserSendRideCardListener
- * @package App\Listeners
- * Author: Mead
- */
- class NewUserSendRideCardListener implements ShouldQueue
- {
- use InteractsWithQueue;
- public $tries = 5;
- /**
- * Handle the event.
- *
- * @param CardCertifiedEvent $event
- * @return void
- */
- public function handle(CardCertifiedEvent $event)
- {
- $card = CardRiding::where('name', '新用户完成实名注册奖励')->where('is_give', CardRiding::GIVE_OK)->first();
- if ($card) {
- $user = $event->user;
- $user_id = $user->id;
- $card_id = $card->id;
- $users = User::where('id', $user_id)->first();
- if (empty($users)) return;
- $cardRiding = CardRiding::where('status', CardRiding::STATUS_OK)->find($card_id);
- if (empty($cardRiding)) return;
- if ($cardRiding->is_give == CardRiding::GIVE_NO) return;
- $expiration_time = Carbon::now()->addDays($cardRiding->effective_days)->format('Y-m-d H:i:s');
- try {
- DB::beginTransaction();
- $cardRidingOrder = CardRidingOrder::firstOrCreate([
- 'no' => CardRidingOrder::makeNo(),
- 'area_id' => $users->register_area_id,
- 'user_id' => $users->id,
- 'riding_card_id' => $card_id,
- 'money' => 0,
- 'discount' => 1,
- 'pay_money' => 0,
- 'pay_type' => CardRidingOrder::PAY_TYPE_NEW_USER_OVER_AUTH_SERVER_GIVE,
- 'pay_status' => CardRidingOrder::PAY_STATUS_OK,
- 'pay_time' => Carbon::now(),
- ]);
- $data = [
- 'user_id' => $users->id,
- 'riding_card_id' => $card_id,
- 'card_riding_order_id' => $cardRidingOrder->id,
- 'take_effect_time' => Carbon::now(),
- 'deduction_money' => $cardRiding->deduction_money,
- 'expiration_time' => $expiration_time,
- 'is_limit_times' => $cardRiding->is_limit_times,
- 'can_ridding_times' => $cardRiding->times,
- 'day_can_ridding_times' => $cardRiding->day_can_ridding_times,
- 'status' => CardRidingUserBags::STATUS_OK
- ];
- CardRidingUserBags::firstOrCreate(['card_riding_order_id' => $cardRidingOrder->id], $data);
- DB::commit();
- } catch (\Exception $exception) {
- Log::error($exception->getMessage());
- }
- }
- return;
- }
- public function failed(CardCertifiedEvent $event, $exception)
- {
- Log::error($exception);
- }
- }
|