'integer', 'dividend_record_id' => 'integer', 'user_id' => 'integer', 'urs_user_id' => 'integer', 'talent_level' => 'integer', 'dividend_amount' => 'decimal:10', 'status' => 'string', 'error_message' => 'string', 'transfer_order_id' => 'integer', 'created_at' => 'datetime', 'updated_at' => 'datetime', ]; /** * 隐藏字段 */ protected $hidden = []; // 状态常量 const STATUS_PENDING = 'pending'; const STATUS_COMPLETED = 'completed'; const STATUS_FAILED = 'failed'; /** * 获取所有状态 */ public static function getStatuses(): array { return [ self::STATUS_PENDING => '待处理', self::STATUS_COMPLETED => '已完成', self::STATUS_FAILED => '失败', ]; } /** * 获取状态名称 */ public function getStatusNameAttribute(): string { return self::getStatuses()[$this->status] ?? '未知'; } /** * 关联分红记录 */ public function dividendRecord() { return $this->belongsTo(UrsPartnerDividendRecord::class, 'dividend_record_id'); } /** * 关联用户 */ public function user() { return $this->belongsTo(\App\Module\User\Models\User::class, 'user_id'); } /** * 关联转账订单 */ public function transferOrder() { return $this->belongsTo(\App\Module\Transfer\Models\TransferOrder::class, 'transfer_order_id'); } /** * 获取达人等级名称 */ public function getTalentLevelNameAttribute(): string { $levels = [ 0 => '青铜', 1 => '白银', 2 => '黄金', 3 => '钻石', 4 => '至尊', 5 => '合伙人', ]; return $levels[$this->talent_level] ?? '未知'; } /** * 根据分红记录ID获取详情列表 */ public static function getByDividendRecordId(int $dividendRecordId): \Illuminate\Database\Eloquent\Collection { return self::where('dividend_record_id', $dividendRecordId) ->with(['user', 'transferOrder']) ->get(); } /** * 获取用户的分红历史 */ public static function getUserDividendHistory(int $userId): \Illuminate\Database\Eloquent\Collection { return self::where('user_id', $userId) ->with(['dividendRecord', 'transferOrder']) ->orderBy('created_at', 'desc') ->get(); } }