| 
					
					
						
							
						
					
					
				 | 
				@ -41,14 +41,16 @@ class OrderTimeout extends Command | 
			
		
		
	
		
			
				 | 
				 | 
					 */ | 
				 | 
				 | 
					 */ | 
			
		
		
	
		
			
				 | 
				 | 
				    public function handle() | 
				 | 
				 | 
				    public function handle() | 
			
		
		
	
		
			
				 | 
				 | 
					{ | 
				 | 
				 | 
					{ | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
						//需要处理的订单状态
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
						$status_arr = [OrderStatus::UNPAID, OrderStatus::PAY_EARNEST]; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
						//记录最小ID,下次查询时按ID正序查询,只处理大于该ID的订单,避免重复扫描数据库
 | 
				 | 
				 | 
						//记录最小ID,下次查询时按ID正序查询,只处理大于该ID的订单,避免重复扫描数据库
 | 
			
		
		
	
		
			
				 | 
				 | 
						$min_id = Order::query()->where('status', OrderStatus::UNPAID)->min('id'); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
						$min_id = Order::query()->whereIn('status', $status_arr)->min('id'); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				    	while (true) { | 
				 | 
				 | 
				    	while (true) { | 
			
		
		
	
		
			
				 | 
				 | 
							Order::query() | 
				 | 
				 | 
							Order::query() | 
			
		
		
	
		
			
				 | 
				 | 
								->where([ | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
									['status', '=', OrderStatus::UNPAID], | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
									['id', '>=', $min_id], | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
								]) | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
								->where('id', '>=', $min_id) | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
								->whereIn('status', $status_arr) | 
			
		
		
	
		
			
				 | 
				 | 
								->whereNotNull('timeout') | 
				 | 
				 | 
								->whereNotNull('timeout') | 
			
		
		
	
		
			
				 | 
				 | 
								->orderBy('id') | 
				 | 
				 | 
								->orderBy('id') | 
			
		
		
	
		
			
				 | 
				 | 
								->chunk(100, function ($order) use (&$min_id) { | 
				 | 
				 | 
								->chunk(100, function ($order) use (&$min_id) { | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -66,6 +68,7 @@ class OrderTimeout extends Command | 
			
		
		
	
		
			
				 | 
				 | 
												DB::commit(); | 
				 | 
				 | 
												DB::commit(); | 
			
		
		
	
		
			
				 | 
				 | 
											} catch (\Exception $exception) { | 
				 | 
				 | 
											} catch (\Exception $exception) { | 
			
		
		
	
		
			
				 | 
				 | 
												DB::rollBack(); | 
				 | 
				 | 
												DB::rollBack(); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
												$this->line("订单ID {$v->id} 错误:" . $exception->getMessage()); | 
			
		
		
	
		
			
				 | 
				 | 
											} | 
				 | 
				 | 
											} | 
			
		
		
	
		
			
				 | 
				 | 
										} | 
				 | 
				 | 
										} | 
			
		
		
	
		
			
				 | 
				 | 
										$min_id = $v->id; | 
				 | 
				 | 
										$min_id = $v->id; | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
					
				 | 
				
  |