6
0
Fork 0
jiqu-library-server/app/Models/OfflineOrder.php

98 lines
2.1 KiB
PHP

<?php
namespace App\Models;
use App\Enums\OfflineOrderStatus;
use App\Enums\PayWay;
use App\Models\Store\Store;
use Dcat\Admin\Traits\HasDateTimeFormatter;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class OfflineOrder extends Model
{
use HasFactory, HasDateTimeFormatter;
protected $attributes = [
'discount_reduction_amount' => 0,
'points_deduction_amount' => 0,
'status' => OfflineOrderStatus::Pending,
];
protected $casts = [
'payment_time' => 'datetime',
'status' => OfflineOrderStatus::class,
'payment_method' => PayWay::class,
'revoked_at' => 'datetime',
];
protected $fillable = [
'user_id',
'store_id',
'staff_id',
'sn',
'products_total_amount',
'discount_reduction_amount',
'points_deduction_amount',
'payment_amount',
'payment_sn',
'payment_method',
'payment_time',
'out_trade_no',
'status',
'revoked_at',
'orderable_type',
'orderable_id',
];
public function store()
{
return $this->belongsTo(Store::class);
}
public function staff()
{
return $this->belongsTo(User::class, 'staff_id');
}
public function staffInfo()
{
return $this->belongsTo(UserInfo::class, 'staff_id', 'user_id');
}
public function user()
{
return $this->belongsTo(User::class);
}
public function userInfo()
{
return $this->belongsTo(UserInfo::class, 'user_id', 'user_id');
}
public function payLogs()
{
return $this->morphMany(PayLog::class, 'payable');
}
public function items()
{
return $this->hasMany(OfflineOrderItem::class, 'order_id');
}
public function isPending(): bool
{
return $this->status === OfflineOrderStatus::Pending;
}
public function isPaid(): bool
{
return $this->status === OfflineOrderStatus::Paid;
}
public function isRevoked(): bool
{
return $this->status === OfflineOrderStatus::Revoked;
}
}