| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- <?php
- namespace App\Module\UrsPromotion\Dtos;
- use App\Module\UrsPromotion\Models\UrsUserTalent;
- use UCore\Dto\BaseDto;
- /**
- * URS用户达人等级数据传输对象
- *
- * 用于在服务层返回URS用户达人等级信息,避免直接暴露模型对象
- */
- class UrsUserTalentDto extends BaseDto
- {
- /**
- * @var int 达人等级ID
- */
- public int $id;
- /**
- * @var int URS用户ID
- */
- public int $ursUserId;
- /**
- * @var int 达人等级
- */
- public int $talentLevel;
- /**
- * @var string 等级名称
- */
- public string $talentName;
- /**
- * @var int 直推人数
- */
- public int $directCount;
- /**
- * @var int 间推人数
- */
- public int $indirectCount;
- /**
- * @var int 三推人数
- */
- public int $thirdCount;
- /**
- * @var int 团队总人数
- */
- public int $promotionCount;
- /**
- * @var string|null 最后等级更新时间
- */
- public ?string $lastLevelUpdateTime;
- /**
- * @var string 创建时间
- */
- public string $createdAt;
- /**
- * @var string 更新时间
- */
- public string $updatedAt;
- /**
- * @var array|null 当前等级配置
- */
- public ?array $currentConfig = null;
- /**
- * @var array|null 下一等级配置
- */
- public ?array $nextConfig = null;
- /**
- * @var int 活跃直推人数
- */
- public int $activeDirectCount = 0;
- /**
- * @var int 活跃团队总人数
- */
- public int $activeTotalCount = 0;
- /**
- * 从模型创建DTO
- *
- * @param UrsUserTalent $model URS用户达人等级模型
- * @param array|null $currentConfig 当前等级配置(可选)
- * @param array|null $nextConfig 下一等级配置(可选)
- * @param int $activeDirectCount 活跃直推人数(可选)
- * @param int $activeTotalCount 活跃团队总人数(可选)
- * @return self
- */
- public static function fromModel(UrsUserTalent $model, ?array $currentConfig = null, ?array $nextConfig = null, int $activeDirectCount = 0, int $activeTotalCount = 0): self
- {
- $dto = new self();
- $dto->id = $model->id;
- $dto->ursUserId = $model->user_id;
- $dto->talentLevel = $model->talent_level;
- $dto->talentName = $currentConfig['name'] ?? '普通用户';
- $dto->directCount = $model->direct_count;
- $dto->indirectCount = $model->indirect_count;
- $dto->thirdCount = $model->third_count;
- $dto->promotionCount = $model->promotion_count;
- $dto->lastLevelUpdateTime = $model->last_level_update_time ? $model->last_level_update_time->toDateTimeString() : null;
- $dto->createdAt = $model->created_at ? $model->created_at->toDateTimeString() : '';
- $dto->updatedAt = $model->updated_at ? $model->updated_at->toDateTimeString() : '';
- $dto->currentConfig = $currentConfig;
- $dto->nextConfig = $nextConfig;
- $dto->activeDirectCount = $activeDirectCount;
- $dto->activeTotalCount = $activeTotalCount;
- return $dto;
- }
- }
|