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

// ==================== 福利屋入口类型定义 ====================

/** 福利屋入口列表查询请求 */
export interface WelfareHouseListRequest {
  /** 页码 */
  page: number
  /** 每页数量 */
  pageSize: number
}

/** 福利屋入口响应 */
export interface WelfareHouseResponse {
  /** 主键ID */
  id: number
  /** 名称 */
  name: string
  /** 图片URL */
  image: string
  /** 跳转链接 */
  url: string
  /** 排序值 */
  sort: number
  /** 状态: 0禁用 1启用 */
  status: number
  /** 创建时间 */
  createTime?: string
}

/** 福利屋入口创建请求 */
export interface WelfareHouseCreateRequest {
  /** 名称（必填） */
  name: string
  /** 图片URL（必填） */
  image: string
  /** 跳转链接（必填） */
  url: string
  /** 排序值（必填） */
  sort: number
  /** 状态: 0禁用 1启用，默认启用 */
  status?: number
}

/** 福利屋入口更新请求 */
export interface WelfareHouseUpdateRequest {
  /** 名称（必填） */
  name: string
  /** 图片URL（必填） */
  image: string
  /** 跳转链接（必填） */
  url: string
  /** 排序值（必填） */
  sort: number
  /** 状态: 0禁用 1启用 */
  status: number
}

/** 福利屋入口状态切换请求 */
export interface WelfareHouseStatusRequest {
  /** 状态: 0禁用 1启用 */
  status: number
}

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

const WELFAREHOUSE_BASE_URL = '/admin/business/welfarehouse'

// ==================== 福利屋入口 API ====================

/**
 * 获取福利屋入口列表（分页）
 * @param params 查询参数
 * @returns 分页福利屋入口列表
 */
export function getWelfareHouses(params: WelfareHouseListRequest): Promise<ApiResponse<PagedResult<WelfareHouseResponse>>> {
  return request({
    url: WELFAREHOUSE_BASE_URL,
    method: 'get',
    params
  })
}

/**
 * 获取福利屋入口详情
 * @param id 福利屋入口ID
 * @returns 福利屋入口详情
 */
export function getWelfareHouseById(id: number): Promise<ApiResponse<WelfareHouseResponse>> {
  return request({
    url: `${WELFAREHOUSE_BASE_URL}/${id}`,
    method: 'get'
  })
}

/**
 * 创建福利屋入口
 * @param data 创建请求数据
 * @returns 新福利屋入口ID
 */
export function createWelfareHouse(data: WelfareHouseCreateRequest): Promise<ApiResponse<{ id: number }>> {
  return request({
    url: WELFAREHOUSE_BASE_URL,
    method: 'post',
    data
  })
}

/**
 * 更新福利屋入口
 * @param id 福利屋入口ID
 * @param data 更新请求数据
 * @returns 操作结果
 */
export function updateWelfareHouse(id: number, data: WelfareHouseUpdateRequest): Promise<ApiResponse<string>> {
  return request({
    url: `${WELFAREHOUSE_BASE_URL}/${id}`,
    method: 'put',
    data
  })
}

/**
 * 删除福利屋入口
 * @param id 福利屋入口ID
 * @returns 操作结果
 */
export function deleteWelfareHouse(id: number): Promise<ApiResponse<string>> {
  return request({
    url: `${WELFAREHOUSE_BASE_URL}/${id}`,
    method: 'delete'
  })
}

/**
 * 切换福利屋入口状态
 * @param id 福利屋入口ID
 * @param data 状态请求数据
 * @returns 操作结果
 */
export function updateWelfareHouseStatus(id: number, data: WelfareHouseStatusRequest): Promise<ApiResponse<string>> {
  return request({
    url: `${WELFAREHOUSE_BASE_URL}/${id}/status`,
    method: 'put',
    data
  })
}
