<?php

namespace App\Jobs\Company\Lottery;

use App\Servers\DB\DbService;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use App\Models\Manager\Lottery\LiveEnlist as Model;
use App\Facades\Servers\Logs\Log;

/**
 * 参与下单抽奖
 * 
 */
class JoinLiveEnlistJobs implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $recordData;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct(array $recordData)
    {
        $this->recordData = $recordData;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        try {
            // 接收参数
            $recordData                           = $this->recordData;
            // 切换数据
            $result                               = (new DbService())->getConnectionNameByCompanyId($recordData['company_id']);
            // 错误提示
            if( isset($result['error']) )         {
                // 返回结果
                Log::error('join_live_enlist_jobs',$result['error'],$recordData);
                return 0;
            }
            unset($recordData['company_id']);
            // 查询
            $result                               = (new Model())->add($recordData);
            // 返回结果
            if( !$result )                        Log::error('join_live_enlist_jobs','写入失败',$recordData);
            // 返回结果
            return                                0;
        } catch (\Throwable $th) {
            // 返回结果
            Log::error('join_live_enlist_jobs',$th->getMessage(),$th);
        }
    }

    public function failed(\Throwable $th)
    {
        Log::info('join_live_enlist_jobs', '直播参与下单抽奖队列失败', ['data' => $this->recordData, 'error' => $th->getMessage()]);
    }
}
