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());
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |