64 lines
1.2 KiB
PHP
64 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use App\Casts\Price;
|
|
use Dcat\Admin\Traits\HasDateTimeFormatter;
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
|
|
class Coupon extends Model
|
|
{
|
|
use HasFactory;
|
|
use HasDateTimeFormatter;
|
|
|
|
public const TYPE_AMOUNT = 1; // 抵扣券
|
|
public const TYPE_DISCOUNT = 2; // 折扣券
|
|
|
|
protected $casts = [
|
|
'amount' => Price::class,
|
|
'threshold' => Price::class,
|
|
];
|
|
|
|
/**
|
|
* 此优惠券的使用范围
|
|
*/
|
|
public function ranges()
|
|
{
|
|
return $this->hasMany(CouponRange::class, 'coupon_id');
|
|
}
|
|
|
|
/**
|
|
* 优惠券的发放任务
|
|
*/
|
|
public function sendTask()
|
|
{
|
|
return $this->hasMany(CouponSendTask::class, 'coupon_id');
|
|
}
|
|
|
|
/**
|
|
* 该优惠券下是否有发放任务
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function hasSendTask(): bool
|
|
{
|
|
return $this->sendTask()->exists();
|
|
}
|
|
|
|
public function receiveLog()
|
|
{
|
|
return $this->hasMany(UserCoupon::class, 'coupon_id');
|
|
}
|
|
|
|
/**
|
|
* 是否被领取过
|
|
*
|
|
* @return boolean
|
|
*/
|
|
public function hasReceived()
|
|
{
|
|
return $this->receiveLog()->exists();
|
|
}
|
|
}
|