FarmInfoDto.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace App\Module\Farm\Dtos;
  3. use App\Module\Farm\Models\FarmUser;
  4. /**
  5. * 农场信息数据传输对象
  6. */
  7. class FarmInfoDto
  8. {
  9. /**
  10. * 用户ID
  11. *
  12. * @var int
  13. */
  14. public $userId;
  15. /**
  16. * 房屋等级
  17. *
  18. * @var int
  19. */
  20. public $houseLevel;
  21. /**
  22. * 最后升级时间
  23. *
  24. * @var string|null
  25. */
  26. public $lastUpgradeTime;
  27. /**
  28. * 创建时间
  29. *
  30. * @var string
  31. */
  32. public $createdAt;
  33. /**
  34. * 从模型创建DTO
  35. *
  36. * @param FarmUser $farmUser
  37. * @return self
  38. */
  39. public static function fromModel(FarmUser $farmUser): self
  40. {
  41. $dto = new self();
  42. $dto->userId = $farmUser->user_id;
  43. $dto->houseLevel = $farmUser->house_level;
  44. $dto->lastUpgradeTime = $farmUser->last_upgrade_time ? (is_string($farmUser->last_upgrade_time) ? $farmUser->last_upgrade_time : $farmUser->last_upgrade_time->toDateTimeString()) : null;
  45. $dto->createdAt = is_string($farmUser->created_at) ? $farmUser->created_at : $farmUser->created_at->toDateTimeString();
  46. return $dto;
  47. }
  48. /**
  49. * 转换为数组
  50. *
  51. * @return array
  52. */
  53. public function toArray(): array
  54. {
  55. return [
  56. 'user_id' => $this->userId,
  57. 'house_level' => $this->houseLevel,
  58. 'last_upgrade_time' => $this->lastUpgradeTime,
  59. 'created_at' => $this->createdAt,
  60. ];
  61. }
  62. }