| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- <?php
- namespace App\Module\Activity\Dtos;
- use App\Module\Activity\Models\ActivityParticipation;
- use UCore\Dto\BaseDto;
- /**
- * 活动参与记录数据传输对象
- */
- class ActivityParticipationDto extends BaseDto
- {
- /**
- * 记录ID
- *
- * @var int
- */
- public int $id;
- /**
- * 用户ID
- *
- * @var int
- */
- public int $userId;
- /**
- * 活动ID
- *
- * @var int
- */
- public int $activityId;
- /**
- * 参与时间
- *
- * @var string
- */
- public string $participateTime;
- /**
- * 奖励状态
- *
- * @var int
- */
- public int $rewardStatus;
- /**
- * 奖励状态名称
- *
- * @var string
- */
- public string $rewardStatusName;
- /**
- * 完成状态
- *
- * @var int
- */
- public int $completionStatus;
- /**
- * 完成状态名称
- *
- * @var string
- */
- public string $completionStatusName;
- /**
- * 完成时间
- *
- * @var string|null
- */
- public ?string $completionTime;
- /**
- * 用户活动数据
- *
- * @var UserActivityDataDto|null
- */
- public ?UserActivityDataDto $userData = null;
- /**
- * 从模型创建DTO
- *
- * @param ActivityParticipation $model 活动参与记录模型
- * @param bool $withUserData 是否包含用户数据
- * @return self
- */
- public static function fromModel(ActivityParticipation $model, bool $withUserData = false): self
- {
- $dto = new self();
- $dto->id = $model->id;
- $dto->userId = $model->user_id;
- $dto->activityId = $model->activity_id;
- $dto->participateTime = $model->participate_time ? $model->participate_time->format('Y-m-d H:i:s') : '';
- $dto->rewardStatus = $model->reward_status;
- $dto->rewardStatusName = $model->getRewardStatusName();
- $dto->completionStatus = $model->completion_status;
- $dto->completionStatusName = $model->getCompletionStatusName();
- $dto->completionTime = $model->completion_time ? $model->completion_time->format('Y-m-d H:i:s') : null;
- // 加载用户数据
- if ($withUserData && $model->relationLoaded('userData')) {
- $dto->userData = UserActivityDataDto::fromModel($model->userData);
- }
- return $dto;
- }
- /**
- * 转换为模型数据数组
- *
- * @return array
- */
- public function toModelArray(): array
- {
- return [
- 'id' => $this->id ?? null,
- 'user_id' => $this->userId,
- 'activity_id' => $this->activityId,
- 'participate_time' => $this->participateTime,
- 'reward_status' => $this->rewardStatus,
- 'completion_status' => $this->completionStatus,
- 'completion_time' => $this->completionTime,
- ];
- }
- }
|