package com.gyt.shr.util;

import com.gyt.shr.config.settingConfig.AppValidationConfig;
import com.gyt.shr.result.Result;

import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**
 * @author GYY
 * @date 2024/12/10 10:53
 * @description 校验前端传来的账户信息的基础规范
 */
@Component
public class AccountCheck {
    @Resource
    private AppValidationConfig appValidationConfig;

    public Result<String> loginTextCheck(String phone, String code ) {
        // 1. 是否为空字符串。
        if (StringUtils.isAllBlank(phone, code)) {
            return Result.error(-1, "手机号或验证码存在空值");
        }

        if (!phone.matches(appValidationConfig.getPhone().getRegex())) {
            return Result.error(-1, "手机号格式不正确！");
        }

        if (code.length() < appValidationConfig.getCode().getLength() ){
            return Result.error(-1, "验证码长度不符合要求");
        }
        return Result.success("校验通过");
    }

    public Result<String> phoneCheck(String phone ) {
        // 1. 是否为空字符串。
        if (StringUtils.isAllBlank(phone )) {
            return Result.error(-1, "手机号存在空值");
        }
        if (!phone.matches(appValidationConfig.getPhone().getRegex())) {
            return Result.error(-1, "手机号格式不正确！");
        }
        return Result.success("校验通过");
    }


    //1.账户信息校验；
    public Result<String> baseCheck(String username, String password, String email) {
        // 1. 是否为空字符串。
        if (StringUtils.isAllBlank(username, password)) {
            return Result.error(-1, "用户名密码存在空值");
        }
        // 2. 检验用户名和密码是否满足注册的要求。
        if (username.length() < appValidationConfig.getUsername().getMinLength() ||
                username.length() > appValidationConfig.getUsername().getMaxLength() ||
                password.length() != appValidationConfig.getPassword().getLength()) {
            return Result.error(-1, "用户名或密码长度不符合要求");
        }
        // 3. 判断用户名是否存在特殊字符。
        // 匹配中文、英文、数字
        if (!username.matches(appValidationConfig.getUsername().getRegex())) {
            return Result.error(-1, "账户名存在不允许的特殊字符");
        }

        return Result.success("校验通过");
    }





}
