UserInfoUpdated.php 4.3 KB
<?php

namespace App\Jobs\User;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Log;

class UserInfoUpdated implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $model;
    protected $desc =  '智能门锁信息更新成功';

    /**
     * Create a new job instance.
     *
     * @param $model
     */
    public function __construct($model)
    {
        $this->model = $model;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        Log::channel('queue')->info('====================================== '.$this->desc.' begin ======================================');

        if ($this->attempts() > 3) {
            Log::channel('queue')->info('尝试次数过多');
        } else {
            Log::channel('queue')->info('请求模型对象' . json_encode($this->model));
            // 获取模型
            $model  = $this->model;
            $model->gender     = get_gender_from_ID_number($model->ID_number);
            $model->birthday   = get_birth_from_ID_number($model->ID_number);

            $user = $model->user;
            if ($user) {
                $user->name         = $model->name;
                $user->ID_number    = $model->ID_number;
                $user->birthday     = $model->birthday;
                $user->nation       = $model->nation;
                $user->issued       = $model->issued;
                $user->address      = $model->address;
                $user->valid_date   = $model->valid_date;
                $user->ID_image     = $model->ID_image;
                $user->gender       = $model->gender;
                $user->save();
//                Log::channel('queue')->info('更新用户信息');

                $user->changeAccountRecords->each(function ($record) use ($model) {
                    $record->name         = $model->name;
                    $record->mobile       = $model->mobile;
                    $record->ID_number    = $model->ID_number;
                    $record->gender       = $model->gender;
                    $record->save();
                });

                $tenant = $user->tenant;
                if ($tenant) {
                    $tenant->name         = $model->name;
                    $tenant->mobile       = $model->mobile;
                    $tenant->ID_number    = $model->ID_number;
                    $tenant->gender       = $model->gender;
                    $tenant->birthday     = $model->birthday;
                    $tenant->nation       = $model->nation;
                    $tenant->issued       = $model->issued;
                    $tenant->address      = $model->address;
                    $tenant->valid_date   = $model->valid_date;
                    $tenant->ID_image     = $model->ID_image;
                    $tenant->save();

                    $tenant->rooms->each(function ($room) use ($model) {
                        $room->name         = $model->name;
                        $room->mobile       = $model->mobile;
                        $room->ID_number    = $model->ID_number;
                        $room->gender       = $model->gender;
                        $room->save();
                    });
                }

                $landlord = $user->landlord;
                if ($landlord) {
                    $landlord->name         = $model->name;
                    $landlord->mobile   = $model->mobile;
                    $landlord->ID_number    = $model->ID_number;
                    $landlord->gender       = $model->gender;
                    $landlord->save();
                    $landlord->rooms->each(function ($room) use ($model) {
                        $room->name         = $model->name;
                        $room->mobile       = $model->mobile;
                        $room->ID_number    = $model->ID_number;
                        $room->gender       = $model->gender;
                        $room->save();
                    });
                }
            }
        }
        Log::channel('queue')->info('====================================== '.$this->desc.' end ======================================');
    }
}