import request from '@/utils/request';

// 获取帮助中心列表
export async function getHelpList(params: API.HelpSearchParams) {
  return request('/portals/helpqanda/getPage', {
    method: 'POST',
    data: {
      basePageRequest: {
        pageNo: params.pageNo || 1,
        pageSize: params.pageSize || 10,
      },
      title: params.title,
      type: params.type,
      status: params.status,
    },
  });
}

// 获取帮助详情
export async function getHelpDetail(id: string) {
  return request(`/portals/helpqanda/${id}`, {
    method: 'GET',
  });
}

// 添加帮助
export async function addHelp(params: API.HelpRequest) {
  return request('/portals/helpqanda', {
    method: 'POST',
    data: params,
  });
}

// 更新帮助
export async function updateHelp(id: string, params: API.HelpRequest) {
  return request('/portals/helpqanda', {
    method: 'PUT',
    data: {
      ...params,
      id,
    },
  });
}

// 删除帮助
export async function deleteHelp(id: string) {
  return request(`/portals/helpqanda/${id}`, {
    method: 'DELETE',
  });
}

// 批量删除帮助
export async function batchDeleteHelp(ids: string[]) {
  // 由于没有提供批量删除接口，使用Promise.all进行多次单独删除
  return Promise.all(ids.map(id => deleteHelp(id))).then(results => {
    // 检查是否所有删除操作都成功
    const allSuccess = results.every(res => res.success);
    return {
      success: allSuccess,
      message: allSuccess ? '批量删除成功' : '部分删除失败',
    };
  });
}

// 更新帮助状态（发布/下架）
export async function updateHelpStatus(id: string, status: string) {
  // 根据状态决定调用上架还是下架接口
  if (status === '1') {
    // 上架
    return request('/portals/helpqanda/up', {
      method: 'POST',
      data: { id },
    });
  } else {
    // 下架
    return request('/portals/helpqanda/down', {
      method: 'POST',
      data: { id },
    });
  }
}

// 更新帮助置顶状态
export async function updateHelpTopStatus(id: string, isTop: string) {
  // 根据接口规范，置顶状态的更新应包含在常规更新中
  // 由于没有专门的置顶接口，这里需要先获取详情，然后更新
  return getHelpDetail(id).then(res => {
    if (res.success) {
      const detail = res.data;
      return updateHelp(id, {
        ...detail,
        isTop,
      });
    }
    return {
      success: false,
      message: '获取详情失败，无法更新置顶状态',
    };
  });
}
