import { request } from '@/utils/request'

/**
 * 通用文件上传
 *
 * @param file   要上传的文件
 * @param bizType 业务类型：avatar / admin-avatar / product / sku / banner / notice / chat / common
 * @returns 上传结果（含 url/path/id）
 */
export interface FileUploadResult {
  id: number
  name: string
  url: string
  path: string
  size: number
  contentType: string
  bizType: string
  createTime: string
}

export function uploadFileApi(file: File, bizType = 'common') {
  const formData = new FormData()
  formData.append('file', file)
  return request<FileUploadResult>({
    url: '/api/file/upload',
    method: 'POST',
    params: { bizType },
    data: formData
    // 注意：axios 上传文件时**不要**手动设 Content-Type（含 boundary 会由浏览器自动加）
  })
}

/** 管理员头像上传（带登录态） */
export function uploadAdminAvatarApi(file: File) {
  return uploadFileApi(file, 'admin-avatar')
}

/** 商品图片上传 */
export function uploadProductImageApi(file: File) {
  return uploadFileApi(file, 'product')
}

/** 分类图标上传 */
export function uploadCategoryIconApi(file: File) {
  return uploadFileApi(file, 'category')
}

/** 轮播图上传 */
export function uploadBannerImageApi(file: File) {
  return uploadFileApi(file, 'banner')
}

/** 删除文件 */
export function deleteFileApi(id: number) {
  return request<void>({
    url: `/api/file/${id}`,
    method: 'DELETE'
  })
}
