import { request, type ApiResponse } from '@/utils/request'

// ==================== 单页管理类型定义 ====================

/** 单页列表响应 */
export interface DanyeResponse {
  /** 单页ID */
  id: number
  /** 标题 */
  title: string
  /** 是否启用图片优化 */
  isImageOptimizer: boolean
  /** 更新时间 */
  updateTime: string
}

/** 单页详情响应 */
export interface DanyeDetailResponse {
  /** 单页ID */
  id: number
  /** 标题 */
  title: string
  /** 内容（富文本HTML） */
  content: string
  /** 是否启用图片优化 */
  isImageOptimizer: boolean
  /** 标题是否可编辑（ID 2-20 不可编辑） */
  isTitleEditable: boolean
}

/** 单页更新请求 */
export interface DanyeUpdateRequest {
  /** 标题（可选，ID 2-20 的单页标题不可编辑） */
  title?: string
  /** 内容（富文本HTML） */
  content: string
}

/** 图片优化切换请求 */
export interface ImageOptimizerRequest {
  /** 是否启用图片优化 */
  isImageOptimizer: boolean
}

// ==================== API 基础路径 ====================

const DANYE_BASE_URL = '/admin/business/danye'

// ==================== 单页管理 API ====================

/**
 * 获取单页列表
 * @returns 单页列表
 */
export function getDanyeList(): Promise<ApiResponse<DanyeResponse[]>> {
  return request({
    url: DANYE_BASE_URL,
    method: 'get'
  })
}

/**
 * 获取单页详情
 * @param id 单页ID
 * @returns 单页详情
 */
export function getDanyeById(id: number): Promise<ApiResponse<DanyeDetailResponse>> {
  return request({
    url: `${DANYE_BASE_URL}/${id}`,
    method: 'get'
  })
}

/**
 * 更新单页内容
 * @param id 单页ID
 * @param data 更新请求数据
 * @returns 操作结果
 */
export function updateDanye(id: number, data: DanyeUpdateRequest): Promise<ApiResponse<string>> {
  return request({
    url: `${DANYE_BASE_URL}/${id}`,
    method: 'put',
    data
  })
}

/**
 * 切换图片优化状态
 * @param id 单页ID
 * @param data 图片优化请求数据
 * @returns 操作结果
 */
export function toggleImageOptimizer(id: number, data: ImageOptimizerRequest): Promise<ApiResponse<string>> {
  return request({
    url: `${DANYE_BASE_URL}/${id}/image-optimizer`,
    method: 'put',
    data
  })
}

/**
 * 清空单页内容
 * @param id 单页ID
 * @returns 操作结果
 */
export function clearDanyeContent(id: number): Promise<ApiResponse<string>> {
  return request({
    url: `${DANYE_BASE_URL}/${id}/clear-content`,
    method: 'put'
  })
}

/**
 * 删除单页
 * @param id 单页ID
 * @returns 操作结果
 */
export function deleteDanye(id: number): Promise<ApiResponse<string>> {
  return request({
    url: `${DANYE_BASE_URL}/${id}`,
    method: 'delete'
  })
}
