UrsUserTalentDto.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <?php
  2. namespace App\Module\UrsPromotion\Dtos;
  3. use App\Module\UrsPromotion\Models\UrsUserTalent;
  4. use UCore\Dto\BaseDto;
  5. /**
  6. * URS用户达人等级数据传输对象
  7. *
  8. * 用于在服务层返回URS用户达人等级信息,避免直接暴露模型对象
  9. */
  10. class UrsUserTalentDto extends BaseDto
  11. {
  12. /**
  13. * @var int 达人等级ID
  14. */
  15. public int $id;
  16. /**
  17. * @var int URS用户ID
  18. */
  19. public int $ursUserId;
  20. /**
  21. * @var int 达人等级
  22. */
  23. public int $talentLevel;
  24. /**
  25. * @var string 等级名称
  26. */
  27. public string $talentName;
  28. /**
  29. * @var int 直推人数
  30. */
  31. public int $directCount;
  32. /**
  33. * @var int 间推人数
  34. */
  35. public int $indirectCount;
  36. /**
  37. * @var int 三推人数
  38. */
  39. public int $thirdCount;
  40. /**
  41. * @var int 团队总人数
  42. */
  43. public int $promotionCount;
  44. /**
  45. * @var string|null 最后等级更新时间
  46. */
  47. public ?string $lastLevelUpdateTime;
  48. /**
  49. * @var string 创建时间
  50. */
  51. public string $createdAt;
  52. /**
  53. * @var string 更新时间
  54. */
  55. public string $updatedAt;
  56. /**
  57. * @var array|null 当前等级配置
  58. */
  59. public ?array $currentConfig = null;
  60. /**
  61. * @var array|null 下一等级配置
  62. */
  63. public ?array $nextConfig = null;
  64. /**
  65. * @var int 活跃直推人数
  66. */
  67. public int $activeDirectCount = 0;
  68. /**
  69. * @var int 活跃团队总人数
  70. */
  71. public int $activeTotalCount = 0;
  72. /**
  73. * 从模型创建DTO
  74. *
  75. * @param UrsUserTalent $model URS用户达人等级模型
  76. * @param array|null $currentConfig 当前等级配置(可选)
  77. * @param array|null $nextConfig 下一等级配置(可选)
  78. * @param int $activeDirectCount 活跃直推人数(可选)
  79. * @param int $activeTotalCount 活跃团队总人数(可选)
  80. * @return self
  81. */
  82. public static function fromModel(UrsUserTalent $model, ?array $currentConfig = null, ?array $nextConfig = null, int $activeDirectCount = 0, int $activeTotalCount = 0): self
  83. {
  84. $dto = new self();
  85. $dto->id = $model->id;
  86. $dto->ursUserId = $model->user_id;
  87. $dto->talentLevel = $model->talent_level;
  88. $dto->talentName = $currentConfig['name'] ?? '普通用户';
  89. $dto->directCount = $model->direct_count;
  90. $dto->indirectCount = $model->indirect_count;
  91. $dto->thirdCount = $model->third_count;
  92. $dto->promotionCount = $model->promotion_count;
  93. $dto->lastLevelUpdateTime = $model->last_level_update_time ? $model->last_level_update_time->toDateTimeString() : null;
  94. $dto->createdAt = $model->created_at ? $model->created_at->toDateTimeString() : '';
  95. $dto->updatedAt = $model->updated_at ? $model->updated_at->toDateTimeString() : '';
  96. $dto->currentConfig = $currentConfig;
  97. $dto->nextConfig = $nextConfig;
  98. $dto->activeDirectCount = $activeDirectCount;
  99. $dto->activeTotalCount = $activeTotalCount;
  100. return $dto;
  101. }
  102. }