import { request } from '@/api';
import type {
  LoginParams,
  LoginResponse,
  RegisterParams,
  ForgotPasswordParams,
  ChangePasswordParams,
  SendCodeParams
} from '@/api/types/user';

/**
 * 登录接口
 * @param params 登录参数（邮箱/密码/登录类型等）
 * @returns Promise<LoginResponse> 登录成功返回token+用户信息
 */
export async function loginApi(params: LoginParams): Promise<LoginResponse> {
  return request.post<LoginResponse>('/login', params);
}

/**
 * 注册接口
 * @param params 注册参数（邮箱/密码/验证码等）
 * @returns Promise<boolean> 注册成功返回true，失败抛错
 */
export async function registerApi(params: RegisterParams) {
  // 泛型指定为 boolean，匹配后端返回的注册成功标识
  return request.post<boolean>('/reg', params);
}

/**
 * 忘记密码
 * @param params 忘记密码参数（邮箱/手机号等）
 * @returns Promise<string> 返回验证码ID（用于验证）
 */
export async function forgotPasswordApi(params: ForgotPasswordParams) {
  return request.post<string>('/resetPassword', params);
}

/**
 * 修改密码
 * @param params 改密参数（验证码/新密码/邮箱等）
 * @returns Promise<boolean> 改密成功返回true
 */
export async function changePasswordApi(params: ChangePasswordParams) {
  return request.post<boolean>('/user/editLoginPass', params);
}

/**
 * 退出登录
 * @returns Promise<void> 无返回值
 */
export async function logoutApi(params: { device_no: string }) {
  return request.post<void>('/logout', params);
}

/**
 * 发送验证码
 * @param params 发送验证码参数（邮箱/手机号等）
 * @returns Promise<string> 返回验证码ID（用于验证）
 */
export async function sendCodeApi(params: SendCodeParams) {
  return request.post<string>('/sendCode', params);
}

/**
 * 调整用户金额
 * @param params 调整金额参数（目标用户ID/调整金额）
 * @returns Promise<boolean> 调整成功返回true
 */
export async function updateCapitalApi(params: { target_user_id: number; amount: string }) {
  return request.post<boolean>('/user/updateCapital', params);
}

/**
 * 修改用户信息
 * @param params 修改用户参数（用户ID/风控模板ID/手续费模板ID/用户名/是否升级/状态）
 * @returns Promise<boolean> 修改成功返回true
 */
export async function editUserApi(params: {
  user_id: number;
  risk_control_id?: string | number | null;
  fee_setting_id?: string | number | null;
  username?: string | null;
  is_levelup?: number | null;
  status?: number | null;
}) {
  return request.post<boolean>('/user/editUser', params);
}

/**
 * 检查账号是否为子账号的交易账户
 */
export async function checkAccountIdIsSonForUser(params: { account_id: string }) {
  return request.get<boolean>('/user/checkAccountIdIsSonForUser', params)
}
/**
 * 获取用户信息
 */
export async function getUserBaseInfo(params: { account_id: string }) {
  return request.get<boolean>('/user/getUserBaseInfo', params, { showMessage: false })
}

/**
 * 初始化 MQTT Key
 * @param params 请求参数（设备号）
 * @returns Promise<string> 返回 MQTT key
 */
export async function initMqttKeyApi(params: { device_no: string }) {
  return request.post<string>('/initMqttKey', params, { showMessage: false })
}
