| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- <?php
- namespace App\Module\UrsPromotion\Models;
- use UCore\ModelCore;
- use Illuminate\Database\Eloquent\Relations\BelongsTo;
- /**
- * URS用户推荐关系模型
- *
- * field start
- * @property int $id 主键ID
- * @property int $urs_user_id URS用户ID
- * @property int $urs_referrer_id URS推荐人ID
- * @property int $user_id 农场用户ID(可能为0)
- * @property int $referrer_id 推荐人的农场用户ID(可能为0)
- * @property \Carbon\Carbon $referral_time 推荐时间
- * @property int $status 状态:1有效,0无效
- * @property \Carbon\Carbon $created_at 创建时间
- * @property \Carbon\Carbon $updated_at 更新时间
- * field end
- *
- * @property-read User $user 用户
- * @property-read User $referrer 推荐人
- */
- class UrsUserReferral extends ModelCore
- {
- /**
- * 数据库表名
- */
- protected $table = 'urs_promotion_user_referrals';
-
- /**
- * 可批量赋值的属性
- */
- protected $fillable = [
- 'urs_user_id',
- 'urs_referrer_id',
- 'user_id',
- 'referrer_id',
- 'referral_time',
- 'status',
- ];
- /**
- * 属性类型转换
- */
- protected $casts = [
- 'urs_user_id' => 'integer',
- 'urs_referrer_id' => 'integer',
- 'user_id' => 'integer',
- 'referrer_id' => 'integer',
- 'referral_time' => 'datetime',
- 'status' => 'integer',
- 'created_at' => 'datetime',
- 'updated_at' => 'datetime',
- ];
- /**
- * 状态常量
- */
- const STATUS_INVALID = 0; // 无效
- const STATUS_VALID = 1; // 有效
- /**
- * 获取用户映射关系
- */
- public function userMapping(): BelongsTo
- {
- return $this->belongsTo(UrsUserMapping::class, 'urs_user_id', 'urs_user_id');
- }
- /**
- * 获取推荐人映射关系
- */
- public function referrerMapping(): BelongsTo
- {
- return $this->belongsTo(UrsUserMapping::class, 'urs_referrer_id', 'urs_user_id');
- }
- /**
- * 获取农场用户信息(通过映射关系)
- */
- public function farmUser()
- {
- return $this->userMapping()->with('user.info');
- }
- /**
- * 获取推荐人农场用户信息(通过映射关系)
- */
- public function referrerFarmUser()
- {
- return $this->referrerMapping()->with('user.info');
- }
- /**
- * 获取农场用户信息(直接关联)
- */
- public function user(): BelongsTo
- {
- return $this->belongsTo(\App\Module\User\Models\User::class, 'user_id');
- }
- /**
- * 获取推荐人农场用户信息(直接关联)
- */
- public function referrer(): BelongsTo
- {
- return $this->belongsTo(\App\Module\User\Models\User::class, 'referrer_id');
- }
- /**
- * 检查推荐关系是否有效
- */
- public function isValid(): bool
- {
- return $this->status === self::STATUS_VALID;
- }
- /**
- * 设置为有效状态
- */
- public function setValid(): void
- {
- $this->status = self::STATUS_VALID;
- }
- /**
- * 设置为无效状态
- */
- public function setInvalid(): void
- {
- $this->status = self::STATUS_INVALID;
- }
- /**
- * 获取状态文本
- */
- public function getStatusText(): string
- {
- return match($this->status) {
- self::STATUS_VALID => '有效',
- self::STATUS_INVALID => '无效',
- default => '未知',
- };
- }
- }
|