| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- <?php
- namespace App\Module\OpenAPI\Validators;
- use App\Module\User\Models\User;
- use UCore\Validator;
- /**
- * 用户存在性验证器
- *
- * 验证用户是否存在且状态正常
- */
- class UserExistenceValidator extends Validator
- {
- /**
- * 验证用户存在性
- *
- * @param mixed $value 要验证的用户ID
- * @param array $data 完整的数据数组
- * @return bool
- */
- public function validate(mixed $value, array $data): bool
- {
- // 检查用户ID是否为有效的整数
- if (!is_numeric($value) || (int)$value <= 0) {
- $this->addError('用户ID必须为正整数');
- return false;
- }
- $userId = (int)$value;
- // 查找用户
- $user = User::find($userId);
- if (!$user) {
- $this->addError('用户不存在');
- return false;
- }
- // 检查用户状态
- if (!$this->isUserActive($user)) {
- $this->addError('用户状态异常,无法进行操作');
- return false;
- }
- // 将用户对象设置到验证对象中
- if (isset($this->args['user'])) {
- $this->validation->user = $user;
- }
- return true;
- }
- /**
- * 检查用户是否为活跃状态
- *
- * @param User $user 用户对象
- * @return bool
- */
- private function isUserActive(User $user): bool
- {
- // 检查用户状态字段
- // 假设 status = 1 表示正常状态
- if (isset($user->status) && $user->status != 1) {
- return false;
- }
- // 检查用户是否被删除
- if (isset($user->deleted_at) && $user->deleted_at !== null) {
- return false;
- }
- // 可以添加更多的状态检查逻辑
- // 例如:检查用户是否被封禁、是否需要验证等
- return true;
- }
- /**
- * 获取验证器描述
- *
- * @return string
- */
- public function getDescription(): string
- {
- return '验证用户是否存在且状态正常,确保可以进行资金操作';
- }
- }
|