| 
					
					
						
							
						
					
					
				 | 
				@ -3,8 +3,11 @@ | 
			
		
		
	
		
			
				 | 
				 | 
				namespace App\Console\Commands; | 
				 | 
				 | 
				namespace App\Console\Commands; | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				use App\Common\OrderStatus; | 
				 | 
				 | 
				use App\Common\OrderStatus; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				use App\Models\AgentProduct; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				use App\Models\AgentProductSpec; | 
			
		
		
	
		
			
				 | 
				 | 
				use App\Models\Order; | 
				 | 
				 | 
				use App\Models\Order; | 
			
		
		
	
		
			
				 | 
				 | 
				use App\Models\Product; | 
				 | 
				 | 
				use App\Models\Product; | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				use App\Models\ProductSpec; | 
			
		
		
	
		
			
				 | 
				 | 
				use Illuminate\Console\Command; | 
				 | 
				 | 
				use Illuminate\Console\Command; | 
			
		
		
	
		
			
				 | 
				 | 
				use Illuminate\Support\Facades\DB; | 
				 | 
				 | 
				use Illuminate\Support\Facades\DB; | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
						
							
						
					
					
				 | 
				@ -52,7 +55,7 @@ class OrderTimeout extends Command | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
						$min_id = 0; | 
				 | 
				 | 
						$min_id = 0; | 
			
		
		
	
		
			
				 | 
				 | 
				    	while (true) { | 
				 | 
				 | 
				    	while (true) { | 
			
		
		
	
		
			
				 | 
				 | 
							Order::query() | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
							Order::with('orderProductItem') | 
			
		
		
	
		
			
				 | 
				 | 
				//				->where('id', '>=', $min_id)
 | 
				 | 
				 | 
				//				->where('id', '>=', $min_id)
 | 
			
		
		
	
		
			
				 | 
				 | 
								->whereIn('status', $status_arr) | 
				 | 
				 | 
								->whereIn('status', $status_arr) | 
			
		
		
	
		
			
				 | 
				 | 
								->whereNotNull('timeout') | 
				 | 
				 | 
								->whereNotNull('timeout') | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -66,9 +69,24 @@ class OrderTimeout extends Command | 
			
		
		
	
		
			
				 | 
				 | 
												$v->status = OrderStatus::CANCEL; | 
				 | 
				 | 
												$v->status = OrderStatus::CANCEL; | 
			
		
		
	
		
			
				 | 
				 | 
												$v->save(); | 
				 | 
				 | 
												$v->save(); | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
												//加回库存
 | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
												//供应商产品加库存
 | 
			
		
		
	
		
			
				 | 
				 | 
												Product::whereIn('id', explode(',', $v->product_ids))->increment('stock', $v->num); | 
				 | 
				 | 
												Product::whereIn('id', explode(',', $v->product_ids))->increment('stock', $v->num); | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
												//代理商产品加库存
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
												AgentProduct::where('id', $v->agent_product_id)->increment('stock', $v->num); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
												if (!$v->orderProductItem->isEmpty()) { | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
													$item = $v->orderProductItem->toArray(); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
													//供应商产品规格加库存
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
													$ids = array_column($item, 'product_spec_id'); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
													ProductSpec::whereIn('id', $ids)->increment('stock', $v->num); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
													//代理商产品规格加库存
 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
													$ids = array_column($item, 'agent_product_spec_id'); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
													AgentProductSpec::whereIn('id', $ids)->increment('stock', $v->num); | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
												} | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
												DB::commit(); | 
				 | 
				 | 
												DB::commit(); | 
			
		
		
	
		
			
				 | 
				 | 
												$min_id = $v->id; | 
				 | 
				 | 
												$min_id = $v->id; | 
			
		
		
	
		
			
				 | 
				 | 
											} catch (\Exception $exception) { | 
				 | 
				 | 
											} catch (\Exception $exception) { | 
			
		
		
	
	
		
			
				| 
					
					
					
						
							
						
					
				 | 
				@ -82,7 +100,7 @@ class OrderTimeout extends Command | 
			
		
		
	
		
			
				 | 
				 | 
							//TODO 产品规格表加库存
 | 
				 | 
				 | 
							//TODO 产品规格表加库存
 | 
			
		
		
	
		
			
				 | 
				 | 
				
 | 
				 | 
				 | 
				
 | 
			
		
		
	
		
			
				 | 
				 | 
							$this->line('[' . date('Y-m-d H:i:s') . "] ID游标:$min_id ,等待下一个任务"); | 
				 | 
				 | 
							$this->line('[' . date('Y-m-d H:i:s') . "] ID游标:$min_id ,等待下一个任务"); | 
			
		
		
	
		
			
				 | 
				 | 
							sleep(3); | 
				 | 
				 | 
				 | 
			
		
		
	
		
			
				 | 
				 | 
				 | 
				 | 
				 | 
							sleep(5); | 
			
		
		
	
		
			
				 | 
				 | 
						} | 
				 | 
				 | 
						} | 
			
		
		
	
		
			
				 | 
				 | 
						return 0; | 
				 | 
				 | 
						return 0; | 
			
		
		
	
		
			
				 | 
				 | 
				    } | 
				 | 
				 | 
				    } | 
			
		
		
	
	
		
			
				| 
					
					
					
				 | 
				
  |