/**
 * 认证模块 API
 */
import { get, post, put } from '@/utils/request'

/**
 * 登录请求参数
 */
export interface LoginParams {
  username: string
  password: string
  device?: 'h5'
}

/**
 * 登录响应
 */
export interface LoginResponse {
  access_token: string
  refresh_token: string
  expires_in: number
  buttons?: string[]
  user: {
    id: number
    username: string
    user_type: 1 | 2 | 3 | 4 // 1=超级管理员 2=平台 3=代理 4=企业
    enterprise_id?: number
    shop_id?: number
  }
}

/**
 * 用户信息
 */
export interface UserInfo {
  id: number
  username: string
  phone: string
  user_type: 1 | 2 | 3 | 4
  user_type_name: string
  shop_id?: number
  enterprise_id?: number
  // 以下字段为可选扩展字段（根据实际接口返回）
  nickname?: string
  shop_name?: string
  enterprise_name?: string
  email?: string
  avatar?: string
  status?: 'active' | 'inactive'
  create_time?: string
  last_login_time?: string
  buttons?: string[]
}

/**
 * 修改密码参数
 */
export interface ChangePasswordParams {
  old_password: string
  new_password: string
}

/**
 * 登录
 * POST /api/auth/login
 */
export function login(data: LoginParams) {
  return post<LoginResponse>('/api/auth/login', {
    data: {
      ...data,
      device: data.device ?? 'h5',
    },
  })
}

/**
 * 登出
 * POST /api/auth/logout
 */
export function logout() {
  return post<void>('/api/auth/logout')
}

/**
 * 获取当前用户信息响应
 */
export interface GetUserInfoResponse {
  user: UserInfo
  permissions: string[]
}

/**
 * 获取当前用户信息
 * GET /api/auth/me
 */
export function getUserInfo() {
  return get<GetUserInfoResponse>('/api/auth/me').then(res => res.user)
}

/**
 * 刷新Token
 * POST /api/auth/refresh
 */
export function refreshToken(refresh_token: string) {
  return post<LoginResponse>('/api/auth/refresh', {
    data: { refresh_token },
  })
}

/**
 * 修改密码
 * PUT /api/auth/password
 */
export function changePassword(data: ChangePasswordParams) {
  return put<void>('/api/auth/password', { data })
}
