ConditionGroupDto.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. namespace App\Module\Game\Dtos;
  3. /**
  4. * 条件组DTO
  5. */
  6. class ConditionGroupDto
  7. {
  8. /**
  9. * 条件组ID
  10. *
  11. * @var int
  12. */
  13. public int $id;
  14. /**
  15. * 条件组名称
  16. *
  17. * @var string
  18. */
  19. public string $name;
  20. /**
  21. * 条件组编码
  22. *
  23. * @var string
  24. */
  25. public string $code;
  26. /**
  27. * 条件组描述
  28. *
  29. * @var string|null
  30. */
  31. public ?string $description;
  32. /**
  33. * 逻辑类型(1:全部满足, 2:任一满足)
  34. *
  35. * @var int
  36. */
  37. public int $logicType;
  38. /**
  39. * 条件项列表
  40. *
  41. * @var ConditionItemDto[]
  42. */
  43. public array $items = [];
  44. /**
  45. * 从模型创建DTO
  46. *
  47. * @param \App\Module\Game\Models\GameConditionGroup $model
  48. * @param bool $withItems 是否包含条件项
  49. * @return self
  50. */
  51. public static function fromModel($model, bool $withItems = false): self
  52. {
  53. $dto = new self();
  54. $dto->id = $model->id;
  55. $dto->name = $model->name;
  56. $dto->code = $model->code;
  57. $dto->description = $model->description;
  58. $dto->logicType = $model->logic_type;
  59. if ($withItems && $model->relationLoaded('conditionItems')) {
  60. foreach ($model->conditionItems as $item) {
  61. $dto->items[] = ConditionItemDto::fromModel($item);
  62. }
  63. }
  64. return $dto;
  65. }
  66. }