import request from '@/axios'
import type { isCaptcha, UserLoginCaptchaType } from './types'
import { REQUEST_BASE } from '@/constants'

/**
 * 登录API函数
 *
 * 该函数通过POST请求向服务器发送用户登录信息，以完成用户登录过程
 * 主要作用是与后端服务器进行交互，验证用户身份
 *
 * @param data 用户登录信息，包括用户名和密码等数据结构
 * @returns 返回一个Promise对象，包含服务器响应的用户数据，数据结构符合IResponse<UserType>
 */
export const loginApi = (data: UserLoginCaptchaType): Promise<IResponse> => {
  return request.post({ url: `${REQUEST_BASE}/login`, data })
}

/**
 * 登出API，用于用户退出登录
 *
 * 此函数通过发送GET请求到'/logout'端点，实现用户退出登录的功能
 * 它没有参数，并返回一个Promise对象，该对象解析为IResponse类型
 *
 * @returns {Promise<IResponse>} 返回一个Promise，表示异步操作的结果
 */
export const loginOutApi = (): Promise<IResponse> => {
  return request.get({ url: `${REQUEST_BASE}/logout` })
}

/**
 * 判断该用户登陆是否需要验证码
 *
 *
 * @param data 用户账号用于
 * @returns 返回一个Promise对象，包含服务器响应的结果
 */
export const isCaptchaImg = (data: isCaptcha): Promise<IResponse> => {
  return request.post({ url: `${REQUEST_BASE}/is_captcha`, data })
}
// 验证码结果验证
export const ajCaptchaCheck = (data: isCaptcha): Promise<IResponse> => {
  return request.post({ url: `${REQUEST_BASE}/ajcheck`, data })
}
export const ajCaptcha = (params: any): Promise<IResponse> => {
  return request.get({ url: `${REQUEST_BASE}/ajcaptcha`, params })
}

export const getLoginInfo = (): Promise<IResponse> => {
  return request.get({ url: `${REQUEST_BASE}/login/info` })
}
