// 新闻管理 API import { graphqlRequest } from '@/config/api' // GraphQL 查询语句 const GET_NEWS_LIST_QUERY = ` query GetNewsList($page: Int!, $size: Int!, $title: String, $state: Int) { newsList(page: $page, size: $size, title: $title, state: $state) { content { id title summary coverImage author viewCount state stateName createTime updateTime } totalElements page size } } ` const GET_NEWS_QUERY = ` query GetNews($id: ID!) { news(id: $id) { id title content summary coverImage author viewCount state stateName createTime updateTime } } ` const GET_PUBLISHED_NEWS_QUERY = ` query GetPublishedNews($id: ID!) { publishedNews(id: $id) { id title content summary coverImage author viewCount state stateName createTime updateTime } } ` const GET_PUBLISHED_NEWS_LIST_QUERY = ` query GetPublishedNewsList($page: Int!, $size: Int!) { publishedNewsList(page: $page, size: $size) { content { id title summary coverImage author viewCount state stateName createTime updateTime } totalElements page size } } ` const SAVE_NEWS_MUTATION = ` mutation SaveNews($input: NewsInput!) { saveNews(input: $input) { id title content summary coverImage author viewCount state stateName createTime updateTime } } ` const DELETE_NEWS_MUTATION = ` mutation DeleteNews($id: ID!) { deleteNews(id: $id) } ` const UPDATE_NEWS_STATE_MUTATION = ` mutation UpdateNewsState($id: ID!, $state: Int!) { updateNewsState(id: $id, state: $state) } ` // API 函数 export const getNewsList = async (page = 0, size = 10, title = '', state) => { try { const variables = { page, size, title } if (state !== undefined && state !== null && state !== '') { variables.state = Number(state) } const result = await graphqlRequest(GET_NEWS_LIST_QUERY, variables) return result.data.newsList } catch (error) { console.error('获取新闻列表失败:', error) throw new Error(error && error.message ? error.message : '获取新闻列表失败') } } export const getNews = async (id) => { try { const result = await graphqlRequest(GET_NEWS_QUERY, { id }) return result.data.news } catch (error) { throw new Error(error && error.message ? error.message : '获取新闻详情失败') } } export const getPublishedNews = async (id) => { try { const result = await graphqlRequest(GET_PUBLISHED_NEWS_QUERY, { id }) return result.data.publishedNews } catch (error) { throw new Error(error && error.message ? error.message : '获取新闻详情失败') } } export const getPublishedNewsList = async (page = 0, size = 10) => { try { const variables = { page, size } const result = await graphqlRequest(GET_PUBLISHED_NEWS_LIST_QUERY, variables) return result.data.publishedNewsList } catch (error) { console.error('获取新闻列表失败:', error) throw new Error(error && error.message ? error.message : '获取新闻列表失败') } } export const saveNews = async (newsData) => { try { const data = await graphqlRequest(SAVE_NEWS_MUTATION, { input: newsData }) return data.data.saveNews } catch (error) { console.error('保存新闻失败:', error) throw new Error(error && error.message ? error.message : '保存新闻失败') } } export const deleteNews = async (id) => { try { const data = await graphqlRequest(DELETE_NEWS_MUTATION, { id }) return data.data.deleteNews } catch (error) { throw new Error(error && error.message ? error.message : '删除新闻失败') } } export const updateNewsState = async (id, state) => { try { const data = await graphqlRequest(UPDATE_NEWS_STATE_MUTATION, { id, state }) return data.data.updateNewsState } catch (error) { throw new Error(error && error.message ? error.message : '更新新闻状态失败') } }