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

// ==================== 旅游系统配置管理 ====================

/**
 * 查询配置列表
 * @param query 查询参数
 * @returns Promise
 */
export function listConfig(query: any): AxiosPromise<any> {
  return request({
    url: '/system/tourismConfig/list',
    method: 'get',
    params: query
  })
}

/**
 * 查询配置详情
 * @param id 配置ID
 * @returns Promise
 */
export function getConfig(id: string | number): AxiosPromise<any> {
  return request({
    url: '/system/tourismConfig/' + id,
    method: 'get'
  })
}

/**
 * 新增配置
 * @param data 配置数据
 * @returns Promise
 */
export function addConfig(data: any): AxiosPromise<any> {
  return request({
    url: '/system/tourismConfig',
    method: 'post',
    data: data
  })
}

/**
 * 修改配置
 * @param data 配置数据
 * @returns Promise
 */
export function updateConfig(data: any): AxiosPromise<any> {
  return request({
    url: '/system/tourismConfig',
    method: 'put',
    data: data
  })
}

/**
 * 删除配置
 * @param id 配置ID
 * @returns Promise
 */
export function delConfig(id: string | number): AxiosPromise<any> {
  return request({
    url: '/system/tourismConfig/' + id,
    method: 'delete'
  })
}

/**
 * 批量删除配置
 * @param ids 配置ID数组
 * @returns Promise
 */
export function delConfigBatch(ids: string | number[]): AxiosPromise<any> {
  return request({
    url: '/system/tourismConfig/batch/' + ids,
    method: 'delete'
  })
}

/**
 * 根据分组查询配置
 * @param group 配置分组
 * @returns Promise
 */
export function getConfigByGroup(group: string): AxiosPromise<any> {
  return request({
    url: '/system/tourismConfig/getConfigsByGroup/' + group,
    method: 'get'
  })
}

/**
 * 批量更新配置值
 * @param data 配置数据列表
 * @returns Promise
 */
export function updateConfigValue(data: any): AxiosPromise<any> {
  return request({
    url: '/system/tourismConfig/updateConfigBatch',
    method: 'post',
    data: data
  })
}

/**
 * 刷新配置缓存
 * @returns Promise
 */
export function refreshConfigCache(): AxiosPromise<any> {
  return request({
    url: '/system/tourismConfig/cache/refresh',
    method: 'post'
  })
}

// ==================== 配置分类管理 ====================

/**
 * 查询配置分类列表
 * @param query 查询参数
 * @returns Promise
 */
export function listConfigCategory(query: any): AxiosPromise<any> {
  return request({
    url: '/system/tourismConfigCategory/enabled',
    method: 'get'
  })
}

/**
 * 查询配置分类详情
 * @param id 分类ID
 * @returns Promise
 */
export function getConfigCategory(id: string | number): AxiosPromise<any> {
  return request({
    url: '/system/tourismConfigCategory/' + id,
    method: 'get'
  })
}

/**
 * 新增配置分类
 * @param data 分类数据
 * @returns Promise
 */
export function addConfigCategory(data: any): AxiosPromise<any> {
  return request({
    url: '/system/tourismConfigCategory',
    method: 'post',
    data: data
  })
}

/**
 * 修改配置分类
 * @param data 分类数据
 * @returns Promise
 */
export function updateConfigCategory(data: any): AxiosPromise<any> {
  return request({
    url: '/system/tourismConfigCategory',
    method: 'put',
    data: data
  })
}

/**
 * 删除配置分类
 * @param id 分类ID
 * @returns Promise
 */
export function delConfigCategory(id: string | number): AxiosPromise<any> {
  return request({
    url: '/system/tourismConfigCategory/' + id,
    method: 'delete'
  })
} 