56 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			56 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace app\common\command;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use app\common\enum\OrderEnum;
							 | 
						||
| 
								 | 
							
								use app\common\model\order\Order;
							 | 
						||
| 
								 | 
							
								use app\common\server\ConfigServer;
							 | 
						||
| 
								 | 
							
								use think\console\Command;
							 | 
						||
| 
								 | 
							
								use think\console\Input;
							 | 
						||
| 
								 | 
							
								use think\console\Output;
							 | 
						||
| 
								 | 
							
								use think\facade\Log;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class OrderFinish extends Command
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    protected function configure()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $this->setName('order_finish')
							 | 
						||
| 
								 | 
							
								            ->setDescription('自动确认收货(待收货订单)');
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    protected function execute(Input $input, Output $output)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        try {
							 | 
						||
| 
								 | 
							
								            $time = time();
							 | 
						||
| 
								 | 
							
								            $config = ConfigServer::get('transaction', 'order_auto_receipt_days', 0);
							 | 
						||
| 
								 | 
							
								            if ($config == 0) {
							 | 
						||
| 
								 | 
							
								                return true;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            $finish_limit = $config * 24 * 60 * 60;
							 | 
						||
| 
								 | 
							
								            $model = new Order();
							 | 
						||
| 
								 | 
							
								            $orders = $model->field(true)->where([
							 | 
						||
| 
								 | 
							
								                ['order_status', '=', OrderEnum::ORDER_STATUS_GOODS],
							 | 
						||
| 
								 | 
							
								                ['pay_status', '=', OrderEnum::PAY_STATUS_PAID],
							 | 
						||
| 
								 | 
							
								                ['del', '=', 0]
							 | 
						||
| 
								 | 
							
								            ])->whereRaw("shipping_time+$finish_limit < $time")
							 | 
						||
| 
								 | 
							
								              ->select()->toArray();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            foreach ($orders as $order) {
							 | 
						||
| 
								 | 
							
								                $model->where(['id' => $order['id']])
							 | 
						||
| 
								 | 
							
								                    ->update([
							 | 
						||
| 
								 | 
							
								                        'order_status'      => OrderEnum::ORDER_STATUS_COMPLETE,
							 | 
						||
| 
								 | 
							
								                        'update_time'       => $time,
							 | 
						||
| 
								 | 
							
								                        'confirm_take_time' => $time,
							 | 
						||
| 
								 | 
							
								                    ]);
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            return true;
							 | 
						||
| 
								 | 
							
								        } catch (\Exception $e) {
							 | 
						||
| 
								 | 
							
								            Log::write('自动确认收货异常:'.$e->getMessage());
							 | 
						||
| 
								 | 
							
								            return false;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |