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