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