UserType::class, 'credit' => Amount::class.':4', 'accumulate_credit' => Amount::class.':4', 'commission' => Amount::class, 'accumulate_commission' => Amount::class, ]; protected static function booted(): void { self::creating(function (User $user) { $user->referral_code = Str::random(8); }); } // vip套餐 public function vipPackage(): BelongsTo { return $this->belongsTo(VipPackage::class, 'vip_id'); } // 推荐人 public function parent(): BelongsTo { return $this->belongsTo(self::class, 'parent_id'); } // 下级 public function children(): HasMany { return $this->hasMany(self::class, 'parent_id'); } // 佣金记录 public function commissionLogs(): HasMany { return $this->hasMany(CommissionLog::class, 'user_id'); } // 获取权益配置 public function getPackageConfig(?string $key = null) { $package = null; if ($this->vip_id) { $package = $this->vipPackage; } return $key ? data_get($package, 'config.'.$key) : $package; } }