// 正则

/** 手机号正则（中国大陆） */
export const PHONE_REGEX = /^1[3-9]\d{9}$/

/** 邮箱正则 */
const EMAIL_REGEX = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/

/** 身份证号（简化版） */
const ID_CARD_REGEX = /(^\d{15}$)|(^\d{18}$)|(^\d{17}[\dXx]$)/

/** 密码强度（至少8位，包含数字和字母） */
const PASSWORD_REGEX = /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d@$!%*#?&]{8,}$/

/** 交易密码（必须是6位数字） */
const TRANSACTION_PASSWORD_REGEX = /^\d{6}$/

/** 群号码（只能是数字，至少3位，最多11位）*/
const GROUP_NUMBER_REGEX = /^\d{3,11}$/

/**
 * 校验手机号
 * @param {string} phone - 待校验的手机号
 * @returns {{ valid: boolean, message: string }}
 */
export const validatePhone = phone => {
  if (!phone) return { valid: false, message: '手机号不能为空' }
  if (!PHONE_REGEX.test(phone)) {
    return { valid: false, message: '手机号格式不正确' }
  }
  return { valid: true, message: '' }
}

/**
 * 校验邮箱
 * @param {string} email - 待校验的邮箱
 * @returns {{ valid: boolean, message: string }}
 */
export const validateEmail = email => {
  if (!email) return { valid: false, message: '邮箱不能为空' }
  if (!EMAIL_REGEX.test(email)) {
    return { valid: false, message: '邮箱格式不正确' }
  }
  return { valid: true, message: '' }
}

/**
 * 校验密码强度
 * @param {string} password - 待校验的密码
 * @returns {{ valid: boolean, message: string }}
 */
export const validatePassword = password => {
  if (!password) return { valid: false, message: '密码不能为空' }
  if (password.length < 8) {
    return { valid: false, message: '密码长度不能少于8位' }
  }
  if (!PASSWORD_REGEX.test(password)) {
    return { valid: false, message: '密码需包含字母和数字' }
  }
  return { valid: true, message: '' }
}

/**
 * 校验确认密码是否与原密码一致
 * @param {string} password - 原始密码
 * @param {string} confirmPassword - 确认密码
 * @returns {{ valid: boolean, message: string }}
 */
export function validateConfirmPassword(password, confirmPassword) {
  if (!confirmPassword) {
    return { valid: false, message: '请再次输入密码' }
  }
  if (password !== confirmPassword) {
    return { valid: false, message: '两次输入的密码不一致' }
  }
  return { valid: true, message: '' }
}

/**
 * 校验身份证号（仅格式校验，不验证真实性）
 * @param {string} idCard - 待校验的身份证号
 * @returns {{ valid: boolean, message: string }}
 */
export const validateIdCard = idCard => {
  if (!idCard) return { valid: false, message: '身份证号不能为空' }
  if (!ID_CARD_REGEX.test(idCard)) {
    return { valid: false, message: '身份证号格式不正确' }
  }
  return { valid: true, message: '' }
}

/**
 * 校验交易密码
 * @param {string} password - 待校验的密码
 * @returns {{ valid: boolean, message: string }}
 */

export const validateTransactionPassword = (password, name = '密码') => {
  if (!password) return { valid: false, message: `${name}不能为空` }
  if (password.length < 6) {
    return { valid: false, message: `${name}长度不能少于6位` }
  }
  if (!TRANSACTION_PASSWORD_REGEX.test(password)) {
    return { valid: false, message: `${name}必须是6位数字` }
  }
  return { valid: true, message: '' }
}

/**
 * 校验群号码
 * @param {string} groupNumber - 待校验的群号码
 * @returns {{ valid: boolean, message: string }}
 */
export const validateGroupNumber = groupNumber => {
  if (!groupNumber) return { valid: false, message: '群号码不能为空' }
  if (groupNumber.length < 3) {
    return { valid: false, message: '群号码长度不能少于3位' }
  }
  if (groupNumber.length > 11) {
    return { valid: false, message: '群号码长度不能超过11位' }
  }
  if (!GROUP_NUMBER_REGEX.test(groupNumber)) {
    return { valid: false, message: '群号码只能是数字' }
  }
  return { valid: true, message: '' }
}
