| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- <?php
- namespace App\Module\UrsPromotion\Models;
- use UCore\ModelCore;
- /**
- * URS合伙人分红详情模型
- *
- * field start
- * @property int $id 主键ID
- * @property int $dividend_record_id 分红记录ID
- * @property int $user_id 用户ID(农场用户ID)
- * @property int $urs_user_id URS用户ID
- * @property int $talent_level 达人等级
- * @property float $dividend_amount 分红金额
- * @property string $status 状态:pending待处理,completed已完成,failed失败
- * @property string $error_message 错误信息
- * @property int $transfer_order_id 转账订单ID
- * @property \Carbon\Carbon $created_at 创建时间
- * @property \Carbon\Carbon $updated_at 更新时间
- * field end
- *
- * relation start
- * @property \App\Module\UrsPromotion\Models\UrsPartnerDividendRecord $dividendRecord 分红记录
- * @property \App\Module\User\Models\User $user 用户
- * @property \App\Module\Transfer\Models\TransferOrder $transferOrder 转账订单
- * relation end
- */
- class UrsPartnerDividendDetail extends ModelCore
- {
- /**
- * 表名
- */
- protected $table = 'urs_promotion_partner_dividend_details';
- // attrlist start
- protected $fillable = [
- 'id',
- 'dividend_record_id',
- 'user_id',
- 'urs_user_id',
- 'talent_level',
- 'dividend_amount',
- 'status',
- 'error_message',
- 'transfer_order_id',
- ];
- // attrlist end
- /**
- * 属性类型转换
- */
- protected $casts = [
- 'id' => '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();
- }
- }
|