| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- <?php
- namespace App\Module\Farm\Dtos;
- use UCore\Dto\BaseDto;
- use Carbon\Carbon;
- /**
- * 摘取结果DTO
- *
- * @property int $cropId 作物ID
- * @property int $itemId 摘取的物品ID
- * @property int $pickAmount 摘取数量
- * @property int $remainingAmount 剩余可摘取数量
- * @property float $pickRatio 摘取比例
- * @property Carbon $pickTime 摘取时间
- * @property string $pickSource 摘取来源
- * @property int|null $sourceId 来源ID
- * @property int $pickLogId 摘取记录ID(作物日志ID)
- * @property bool $canPickAgain 是否可以再次摘取
- * @property Carbon|null $nextPickTime 下次可摘取时间
- */
- class PickResultDto extends BaseDto
- {
- public int $cropId;
- public int $itemId;
- public int $pickAmount;
- public int $remainingAmount;
- public float $pickRatio;
- public Carbon $pickTime;
- public string $pickSource;
- public ?int $sourceId;
- public int $pickLogId;
- public bool $canPickAgain;
- public ?Carbon $nextPickTime;
- /**
- * 从摘取操作创建DTO
- *
- * @param array $pickData 摘取操作数据
- * @return static
- */
- public static function fromPickOperation(array $pickData): static
- {
- $dto = new static();
-
- $dto->cropId = $pickData['crop_id'];
- $dto->itemId = $pickData['item_id'];
- $dto->pickAmount = $pickData['pick_amount'];
- $dto->remainingAmount = $pickData['remaining_amount'];
- $dto->pickRatio = $pickData['pick_ratio'];
- $dto->pickTime = $pickData['pick_time'] instanceof Carbon
- ? $pickData['pick_time']
- : Carbon::parse($pickData['pick_time']);
- $dto->pickSource = $pickData['pick_source'];
- $dto->sourceId = $pickData['source_id'] ?? null;
- $dto->pickLogId = $pickData['pick_log_id'];
- $dto->canPickAgain = $pickData['can_pick_again'];
- $dto->nextPickTime = isset($pickData['next_pick_time'])
- ? ($pickData['next_pick_time'] instanceof Carbon
- ? $pickData['next_pick_time']
- : Carbon::parse($pickData['next_pick_time']))
- : null;
- return $dto;
- }
- }
|