import httpClient from '@/utils/http';

import {
  ControllerResponse,
  ModelLoginRequest,
  ModelLoginResponse,
  ModelRegisterRequest,
  ModelUserProfileResponse
} from './data-contracts';
export default {
  /**
   * @description 发送验证码到指定手机号
   */
  getCodeList: (query: {
    /** 手机号 */
    phone: string;
  }) => {
    return httpClient.get<ControllerResponse>(`/auth/get-code`, { query: query });
  },
  /**
   * @description 用户登录并返回JWT令牌
   */
  loginCreate: (login: ModelLoginRequest) => {
    return httpClient.post<
      ControllerResponse & {
        data?: ModelLoginResponse;
      }
    >(`/auth/login`, { params: login });
  },
  /**
   * @description 获取当前登录用户的详细信息，包含教师信息（如果是教师）
   */
  profileList: () => {
    return httpClient.get<
      ControllerResponse & {
        /** 用户个人信息响应，包含系统用户信息和教师信息（如果是教师） */
        data?: ModelUserProfileResponse;
      }
    >(`/auth/profile`);
  },
  /**
   * @description 使用当前token验证身份，如果验证成功，将之前的token失效，重新生成新的token，有效期24小时。24小时内只能刷新3次
   */
  refreshCreate: () => {
    return httpClient.post<
      ControllerResponse & {
        data?: ModelLoginResponse;
      }
    >(`/auth/refresh`);
  },
  /**
   * @description 用户注册
   */
  registerCreate: (register: ModelRegisterRequest) => {
    return httpClient.post<
      ControllerResponse & {
        message?: string;
      }
    >(`/auth/register`, { params: register });
  }
};
