AppNameUniqueValidator.php 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <?php
  2. namespace App\Module\OpenAPI\Validators;
  3. use App\Module\OpenAPI\Models\OpenApiApp;
  4. use UCore\Validator;
  5. /**
  6. * 应用名称唯一性验证器
  7. */
  8. class AppNameUniqueValidator extends Validator
  9. {
  10. /**
  11. * 验证应用名称是否唯一
  12. *
  13. * @param mixed $value 应用名称
  14. * @param array $data 验证数据
  15. * @return bool 验证是否通过
  16. */
  17. public function validate(mixed $value, array $data): bool
  18. {
  19. if (empty($value)) {
  20. $this->addError('应用名称不能为空');
  21. return false;
  22. }
  23. // 检查名称是否已存在
  24. $existingApp = OpenApiApp::where('name', $value)->first();
  25. if ($existingApp) {
  26. // 如果是更新操作,需要排除当前应用
  27. $currentAppId = $data['id'] ?? null;
  28. if ($currentAppId && $existingApp->id == $currentAppId) {
  29. return true;
  30. }
  31. $this->addError('应用名称已存在,请使用其他名称');
  32. return false;
  33. }
  34. return true;
  35. }
  36. }