diff --git a/app/Endpoint/Api/Filters/OrderFilter.php b/app/Endpoint/Api/Filters/OrderFilter.php index b638dca7..2ced1026 100644 --- a/app/Endpoint/Api/Filters/OrderFilter.php +++ b/app/Endpoint/Api/Filters/OrderFilter.php @@ -2,6 +2,7 @@ namespace App\Endpoint\Api\Filters; +use App\Models\Order; use EloquentFilter\ModelFilter; class OrderFilter extends ModelFilter @@ -10,19 +11,19 @@ class OrderFilter extends ModelFilter { switch ($status) { case 'pending': - $this->pending(); + $this->where('status', Order::STATUS_PENDING); break; case 'unreceived': - $this->unreceived(); + $this->whereIn('status', [Order::STATUS_PAID, Order::STATUS_SHIPPED]); break; case 'completed': - $this->completed(); + $this->where('status', Order::STATUS_COMPLETED); break; case 'cancelled': - $this->cancelled(); + $this->where('status', Order::STATUS_CANCELLED); break; } } diff --git a/app/Endpoint/Api/Http/Controllers/Order/StatisticsController.php b/app/Endpoint/Api/Http/Controllers/Order/StatisticsController.php index 3ac8303d..fd363abd 100644 --- a/app/Endpoint/Api/Http/Controllers/Order/StatisticsController.php +++ b/app/Endpoint/Api/Http/Controllers/Order/StatisticsController.php @@ -18,13 +18,6 @@ class StatisticsController extends Controller { $user = $request->user(); - // 如果有已过期的订单,则将过期订单的状态修改为已取消 - if ($user->orders()->expired()->count()) { - $user->orders()->expired()->update([ - 'status' => Order::STATUS_CANCELLED, - ]); - } - $statistics = $user->orders() ->selectRaw('count(1) as aggregate, status') ->groupBy('status') diff --git a/app/Models/Order.php b/app/Models/Order.php index d0b820e3..db88f085 100644 --- a/app/Models/Order.php +++ b/app/Models/Order.php @@ -71,65 +71,6 @@ class Order extends Model self::PAY_WAY_BALANCE => '余额', ]; - /** - * 仅查询已过期的订单 - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeExpired($query) - { - return $query->where('status', static::STATUS_PENDING) - ->where('created_at', '<=', now()->subSeconds(static::expiresAt())); - } - - /** - * 仅查询待付款的订单 - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopePending($query) - { - return $query->where('status', static::STATUS_PENDING) - ->where('created_at', '>', now()->subSeconds(static::expiresAt())); - } - - /** - * 仅查询待收货的订单 - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeUnreceived($query) - { - return $query->where('status', [static::STATUS_PAID, static::STATUS_SHIPPED]); - } - - /** - * 仅查询已完成的订单 - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeCompleted($query) - { - return $query->where('status', static::STATUS_COMPLETED); - } - - /** - * 仅查询已取消的订单 - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeCancelled($query) - { - return $query->where(function ($query) { - $query->expired(); - })->orWhere('status', static::STATUS_CANCELLED); - } - /** * 属于此订单的商品 */ @@ -168,22 +109,6 @@ class Order extends Model return $this->status === static::STATUS_PENDING; } - /** - * 获取订单券优惠金额 - * - * @return int - */ - public function getStatusAttribute() - { - if ($this->attributes['status'] === static::STATUS_PENDING - && $this->created_at->lte(now()->subSeconds(static::expiresAt())) - ) { - return static::STATUS_CANCELLED; - } - - return $this->attributes['status']; - } - /** * 获取订单券优惠金额 * @@ -255,16 +180,8 @@ class Order extends Model return 0; } - return 1800; - } - - /** - * 待付款订单的过期时间(单位:秒) - * - * @return int - */ - public static function expiresAt(): int - { - return 1800; + return now()->diffInSeconds( + $this->created_at->addSeconds(1800), false + ); } }