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

// ==================== 页面轮播图配置管理 ====================

/**
 * 查询页面轮播图配置列表
 * @param query 查询参数
 * @returns Promise
 */
export function listPageConfig(query: any): AxiosPromise<any> {
  return request({
    url: '/system/web/pageConfig/list',
    method: 'get',
    params: query
  })
}

/**
 * 获取页面轮播图配置详细信息
 * @param configId 配置ID
 * @returns Promise
 */
export function getPageConfig(configId: string | number): AxiosPromise<any> {
  return request({
    url: '/system/web/pageConfig/' + configId,
    method: 'get'
  })
}

/**
 * 新增页面轮播图配置
 * @param data 配置数据
 * @returns Promise
 */
export function addPageConfig(data: any): AxiosPromise<any> {
  return request({
    url: '/system/web/pageConfig',
    method: 'post',
    data: data
  })
}

/**
 * 修改页面轮播图配置
 * @param data 配置数据
 * @returns Promise
 */
export function updatePageConfig(data: any): AxiosPromise<any> {
  return request({
    url: '/system/web/pageConfig',
    method: 'put',
    data: data
  })
}

/**
 * 删除页面轮播图配置
 * @param configIds 配置ID串
 * @returns Promise
 */
export function delPageConfig(configIds: string | number | Array<string | number>): AxiosPromise<any> {
  return request({
    url: '/system/web/pageConfig/' + configIds,
    method: 'delete'
  })
}

/**
 * 导出页面轮播图配置
 * @param query 查询参数
 * @returns Promise
 */
export function exportPageConfig(query: any): AxiosPromise<any> {
  return request({
    url: '/system/web/pageConfig/export',
    method: 'post',
    data: query
  })
}

// ==================== 轮播图查询接口 ====================

/**
 * 根据页面类型获取轮播图配置
 * @param pageType 页面类型
 * @returns Promise
 */
export function getPageConfigByPageType(pageType: number): AxiosPromise<any> {
  return request({
    url: '/system/web/pageConfig/getByPageType/' + pageType,
    method: 'get'
  })
}

/**
 * 根据页面类型和位置获取轮播图配置
 * @param pageType 页面类型
 * @param imgPosition 轮播图位置
 * @returns Promise
 */
export function getPageConfigByPageTypeAndPosition(pageType: number, imgPosition: number): AxiosPromise<any> {
  return request({
    url: `/system/web/pageConfig/getByPageTypeAndPosition/${pageType}/${imgPosition}`,
    method: 'get'
  })
}

/**
 * 根据景区ID获取轮播图配置
 * @param scenicAreaId 景区ID
 * @returns Promise
 */
export function getPageConfigByScenicAreaId(scenicAreaId: string | number): AxiosPromise<any> {
  return request({
    url: '/system/web/pageConfig/getByScenicAreaId/' + scenicAreaId,
    method: 'get'
  })
}

/**
 * 根据景点ID获取轮播图配置
 * @param scenicSpotId 景点ID
 * @returns Promise
 */
export function getPageConfigByScenicSpotId(scenicSpotId: string | number): AxiosPromise<any> {
  return request({
    url: '/system/web/pageConfig/getByScenicSpotId/' + scenicSpotId,
    method: 'get'
  })
}

/**
 * 根据展品ID获取轮播图配置
 * @param exhibitId 展品ID
 * @returns Promise
 */
export function getPageConfigByExhibitId(exhibitId: string | number): AxiosPromise<any> {
  return request({
    url: '/system/web/pageConfig/getByExhibitId/' + exhibitId,
    method: 'get'
  })
}

// ==================== 便捷接口 ====================

/**
 * 获取首页轮播图配置
 * @returns Promise
 */
export function getHomeBanner(): AxiosPromise<any> {
  return request({
    url: '/system/web/pageConfig/home/banner',
    method: 'get'
  })
}

/**
 * 获取景区首页轮播图配置
 * @param scenicAreaId 景区ID
 * @returns Promise
 */
export function getScenicBanner(scenicAreaId: string | number): AxiosPromise<any> {
  return request({
    url: '/system/web/pageConfig/scenic/banner/' + scenicAreaId,
    method: 'get'
  })
}

/**
 * 获取景点首页轮播图配置
 * @param scenicSpotId 景点ID
 * @returns Promise
 */
export function getSpotBanner(scenicSpotId: string | number): AxiosPromise<any> {
  return request({
    url: '/system/web/pageConfig/spot/banner/' + scenicSpotId,
    method: 'get'
  })
}

/**
 * 获取展品首页轮播图配置
 * @param exhibitId 展品ID
 * @returns Promise
 */
export function getExhibitBanner(exhibitId: string | number): AxiosPromise<any> {
  return request({
    url: '/system/web/pageConfig/exhibit/banner/' + exhibitId,
    method: 'get'
  })
}

// ==================== 批量操作接口 ====================

/**
 * 批量更新轮播图配置
 * @param data 配置数据列表
 * @returns Promise
 */
export function updatePageConfigBatch(data: any[]): AxiosPromise<any> {
  return request({
    url: '/system/web/pageConfig/updateBatch',
    method: 'post',
    data: data
  })
}

/**
 * 更新轮播图状态
 * @param configId 配置ID
 * @param status 状态
 * @returns Promise
 */
export function updatePageConfigStatus(configId: string | number, status: number): AxiosPromise<any> {
  return request({
    url: `/system/web/pageConfig/updateStatus/${configId}/${status}`,
    method: 'put'
  })
}

/**
 * 更新轮播图排序
 * @param configId 配置ID
 * @param orderNumber 排序号
 * @returns Promise
 */
export function updatePageConfigOrder(configId: string | number, orderNumber: number): AxiosPromise<any> {
  return request({
    url: `/system/web/pageConfig/updateOrder/${configId}/${orderNumber}`,
    method: 'put'
  })
} 