2026-03-01 22:20:54 +08:00
|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 文件功能:红包领取记录 Model
|
|
|
|
|
|
*
|
|
|
|
|
|
* 每条记录代表某个用户领取了某个红包的一份,
|
|
|
|
|
|
* envelope_id + user_id 联合唯一约束保证幂等性。
|
|
|
|
|
|
*
|
|
|
|
|
|
* @author ChatRoom Laravel
|
2026-03-12 15:26:54 +08:00
|
|
|
|
*
|
2026-03-01 22:20:54 +08:00
|
|
|
|
* @version 1.0.0
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
namespace App\Models;
|
|
|
|
|
|
|
|
|
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
|
|
|
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|
|
|
|
|
|
|
|
|
|
|
class RedPacketClaim extends Model
|
|
|
|
|
|
{
|
|
|
|
|
|
/** 无自动 updated_at,只记录 claimed_at */
|
|
|
|
|
|
public $timestamps = false;
|
|
|
|
|
|
|
|
|
|
|
|
protected $fillable = [
|
|
|
|
|
|
'envelope_id',
|
|
|
|
|
|
'user_id',
|
|
|
|
|
|
'username',
|
|
|
|
|
|
'amount',
|
|
|
|
|
|
'claimed_at',
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 类型转换。
|
|
|
|
|
|
*/
|
|
|
|
|
|
public function casts(): array
|
|
|
|
|
|
{
|
|
|
|
|
|
return [
|
|
|
|
|
|
'claimed_at' => 'datetime',
|
|
|
|
|
|
];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 关联红包主表。
|
|
|
|
|
|
*
|
|
|
|
|
|
* @return BelongsTo<RedPacketEnvelope, RedPacketClaim>
|
|
|
|
|
|
*/
|
|
|
|
|
|
public function envelope(): BelongsTo
|
|
|
|
|
|
{
|
|
|
|
|
|
return $this->belongsTo(RedPacketEnvelope::class, 'envelope_id');
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|