PickCooldownValidator.php 784 B

1234567891011121314151617181920212223242526272829303132
  1. <?php
  2. namespace App\Module\Farm\Validators;
  3. use App\Module\Farm\Models\FarmCrop;
  4. use UCore\Validation\BaseValidator;
  5. use Carbon\Carbon;
  6. /**
  7. * 摘取冷却验证器
  8. * 验证摘取冷却时间
  9. */
  10. class PickCooldownValidator extends BaseValidator
  11. {
  12. /**
  13. * 验证摘取冷却时间
  14. *
  15. * @param FarmCrop $crop 作物模型
  16. * @return bool
  17. */
  18. public function validate(FarmCrop $crop): bool
  19. {
  20. // 检查作物是否在摘取冷却期内
  21. if ($crop->pick_cooldown_end && now() < $crop->pick_cooldown_end) {
  22. $remainingTime = now()->diffInSeconds($crop->pick_cooldown_end);
  23. $this->addError("作物正在冷却中,还需等待{$remainingTime}秒");
  24. return false;
  25. }
  26. return true;
  27. }
  28. }