diff --git a/app/Admin/Services/OrderPackageService.php b/app/Admin/Services/OrderPackageService.php index 25341540..8fa1b167 100644 --- a/app/Admin/Services/OrderPackageService.php +++ b/app/Admin/Services/OrderPackageService.php @@ -82,7 +82,9 @@ class OrderPackageService //更新订单状态 if (!OrderProduct::where('order_id', $order->id)->where('remain_quantity', '>', 0)->exists()) { $order->update([ - 'shipping_state'=>Order::SHIPPING_STATE_PROCESSED, + 'shipping_state'=> Order::SHIPPING_STATE_PROCESSED, + // 订单自动完成时间 + 'auto_complete_at' => now()->addDays(app_settings('app.order_auto_complete_days', 7)), ]); } elseif ($order->shipping_state == Order::SHIPPING_STATE_PENDING) { $order->update([ diff --git a/app/Models/Order.php b/app/Models/Order.php index 5af4903b..32aa7dcd 100644 --- a/app/Models/Order.php +++ b/app/Models/Order.php @@ -50,6 +50,7 @@ class Order extends Model protected $casts = [ 'pay_at' => 'datetime', 'completed_at' => 'datetime', + 'auto_complete_at' => 'datetime', 'status' => 'int', 'is_change' => 'bool', ]; @@ -80,6 +81,7 @@ class Order extends Model 'shipping_state', 'status', 'completed_at', + 'auto_complete_at', 'is_change', ]; @@ -322,13 +324,13 @@ class Order extends Model */ public function getExpiresAtAttribute() { - if (! $this->isPending()) { - return 0; - } + $seconds = 0; - $seconds = now()->diffInSeconds( - $this->created_at->addSeconds(app_settings('app.order_payment_expires_at')), false - ); + if ($this->isPending()) { + $seconds = now()->diffInSeconds( + $this->created_at->addSeconds(app_settings('app.order_payment_expires_at')), false + ); + } return $seconds > 0 ? $seconds : 0; } diff --git a/app/Services/PayService.php b/app/Services/PayService.php index 3a1b9ce8..c9321ab5 100644 --- a/app/Services/PayService.php +++ b/app/Services/PayService.php @@ -84,6 +84,7 @@ class PayService 'pay_at' => $payLog->pay_at, 'out_trade_no' => $payLog->out_trade_no, 'status' => Order::STATUS_PAID, + 'auto_complete_at' => now()->addDays(app_settings('app.order_auto_complete_days', 7)), ]); DistributionPreIncomeJob::create([ diff --git a/database/migrations/2021_12_28_140737_add_auto_complete_at_to_orders_table.php b/database/migrations/2021_12_28_140737_add_auto_complete_at_to_orders_table.php new file mode 100644 index 00000000..fc4d9628 --- /dev/null +++ b/database/migrations/2021_12_28_140737_add_auto_complete_at_to_orders_table.php @@ -0,0 +1,32 @@ +timestamp('auto_complete_at')->nullable()->comment('订单自动完成时间'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('orders', function (Blueprint $table) { + $table->dropColumn(['auto_complete_at']); + }); + } +}