// 新闻管理 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 : '更新新闻状态失败')
|
}
|
}
|