74 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			74 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php | ||
|  | namespace app\common\command; | ||
|  | 
 | ||
|  | use app\common\model\bargain\BargainLaunch; | ||
|  | use app\common\model\bargain\Bargain; | ||
|  | use app\common\enum\BargainEnum; | ||
|  | use app\common\server\ConfigServer; | ||
|  | use think\console\Command; | ||
|  | use think\console\Input; | ||
|  | use think\console\Output; | ||
|  | use think\facade\Log; | ||
|  | 
 | ||
|  | class BargainClose extends Command | ||
|  | { | ||
|  |     protected function configure() | ||
|  |     { | ||
|  |         $this->setName('bargain_close') | ||
|  |             ->setDescription('关闭砍价记录'); | ||
|  |     } | ||
|  |     protected function execute(Input $input, Output $output) | ||
|  |     { | ||
|  |         try { | ||
|  |             $now = time(); | ||
|  |             $bargainModel = new Bargain(); | ||
|  |             $bargainLaunchModel = new BargainLaunch(); | ||
|  | 
 | ||
|  |             $succeed_ids = []; | ||
|  |             $defeat_ids = []; | ||
|  |             //砍价成功后的下单时间
 | ||
|  |             $payment_limit_time = ConfigServer::get('bargain', 'payment_limit_time', 0) * 60; | ||
|  |             if($payment_limit_time > 0){ | ||
|  |                 $payment_limit_time = $now + $payment_limit_time; | ||
|  |             } | ||
|  |             //找出所有超时未关掉的订单
 | ||
|  |             $bargainLaunchModel->where([['status','=',BargainLaunch::conductStatus],['launch_end_time','<=',$now]]) | ||
|  |                 ->chunk(100, function($launchs) use(&$succeed_ids,&$defeat_ids) { | ||
|  | 
 | ||
|  |                     foreach ($launchs as $launch){ | ||
|  |                         $launch = $launch->toarray(); | ||
|  |                         //任意金额购买时,更新砍价成功
 | ||
|  |                         if(2 == $launch['bargain_snap']['payment_where']){ | ||
|  |                             $succeed_ids[] = $launch['id']; | ||
|  |                         }else{ | ||
|  |                             $defeat_ids[] = $launch['id']; | ||
|  | 
 | ||
|  |                         } | ||
|  |                     } | ||
|  |                 }); | ||
|  |             //标记成功
 | ||
|  |             if($succeed_ids){ | ||
|  |                 $bargainLaunchModel->where(['id'=>$succeed_ids])->update(['status'=>BargainLaunch::successStatus,'payment_limit_time'=>$payment_limit_time,'bargain_end_time'=>$now]); | ||
|  |             } | ||
|  |             //标记失败
 | ||
|  |             if($defeat_ids){ | ||
|  |                 $bargainLaunchModel->where(['id'=>$defeat_ids])->update(['status'=>BargainLaunch::failStatus,'bargain_end_time'=>$now]); | ||
|  |             } | ||
|  | 
 | ||
|  |             // 查询出要关闭的砍价活动
 | ||
|  |             $bargain_ids = $bargainModel->where([ | ||
|  |                 ['activity_end_time', '<', $now], | ||
|  |                 ['del', '=', 0], | ||
|  |                 ['status', '=', 1] | ||
|  |             ])->column('id'); | ||
|  | 
 | ||
|  |             // 结束砍价活动(结束时间 < 当前时间)
 | ||
|  |             $bargainModel->whereIn('id', $bargain_ids) | ||
|  |                 ->update(['status' => 0]); | ||
|  | 
 | ||
|  | 
 | ||
|  |         } catch (\Exception $e) { | ||
|  |             Log::write('结束砍价活动失败:'.$e->getMessage()); | ||
|  |         } | ||
|  |     } | ||
|  | } |