<?php
/**
 * Created by PhpStorm.
 * User: wuzhenke
 * Date: 2019/2/14
 * Time: 10:03
 */

namespace App\Jobs\Cron;

use App\Models\MembersSetmeal;
use App\Repositories\CompanyRepository;
use App\Repositories\MemberLogRepository;
use App\Repositories\MemberSetmealRepository;
use App\Services\Company\ServiceService;
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 ClearExpiredSetmealJob implements ShouldQueue
{

    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public $params=null;

    public function __construct($params=null)
    {
        if (!empty($params)){
            $this->params=$params;
        }
    }


    public function handle(MemberLogRepository $memberLogRepository,MemberSetmealRepository $memberSetmealRepository, ServiceService $serviceService, CompanyRepository $companyRepository)
    {
        //所有的会员都要查询到
        $condition = [
            ['endtime','<=', time()],
            ['endtime','<>',0],
            ['utype','=',1]
        ];
        $list = $memberSetmealRepository->findWhere($condition);
        if ($list->isNotEmpty()) {
            foreach ($list as $key => $val) {
                unset($user);
                unset($userObj);
                $user = $companyRepository->getCompanyInfo(['id'=>$val->uid]);
                if ($user) {
                    $userObj =(object)['id'=>$user['id'],'utype'=>$user['utype'],'username'=>$user['username'],'subsite_id'=>$user['subsite_id']];
                    //判断清除积分

                    try{
                        $serviceService->clearPoint($user['id']);
                    }catch (\Exception $exception){
                        
                    }

                    if ($val->setmeal_id==1){ //免费套餐到期了
                        if (!$serviceService->setFreeMembersSetmeal($userObj)) {
                            Log::error('会员ID'.$user['id'].'套餐修改失败!');
                        }
                    }else{ //其他会员到期了
                        if (!$serviceService->setMembersSetmeal($userObj, MembersSetmeal::FREE_SetMember,$this->params)) {
                            Log::error('会员ID'.$user['id'].'套餐修改失败!');
                        }
                    }

                }
            }
        }

    }
}