AppStatusValidator.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. namespace App\Module\OpenAPI\Validators;
  3. use App\Module\OpenAPI\Models\OpenApiApp;
  4. use UCore\Validator;
  5. /**
  6. * 应用状态验证器
  7. */
  8. class AppStatusValidator extends Validator
  9. {
  10. /**
  11. * 验证应用状态是否有效
  12. *
  13. * @param mixed $value 应用ID(实际不使用,主要验证app对象)
  14. * @param array $data 验证数据
  15. * @return bool 验证是否通过
  16. */
  17. public function validate(mixed $value, array $data): bool
  18. {
  19. // 从 args 获取参数
  20. $appKey = $this->args[0] ?? 'app';
  21. /** @var OpenApiApp|null $app */
  22. $app = $this->validation->$appKey ?? null;
  23. if (!$app) {
  24. $this->addError('应用信息不存在,请先验证应用');
  25. return false;
  26. }
  27. // 验证应用是否激活
  28. if (!$app->isActive()) {
  29. $this->addError('应用未激活或已被禁用');
  30. return false;
  31. }
  32. // 验证应用是否过期
  33. if ($app->isExpired()) {
  34. $this->addError('应用已过期,请联系管理员');
  35. return false;
  36. }
  37. // 验证应用是否被暂停
  38. if ($app->isSuspended()) {
  39. $this->addError('应用已被暂停,请联系管理员');
  40. return false;
  41. }
  42. // 验证应用是否可以调用API
  43. if (!$app->can_call_api) {
  44. $this->addError('应用当前无法调用API');
  45. return false;
  46. }
  47. return true;
  48. }
  49. }