feat: 10.10线上最新代码提交
This commit is contained in:
186
src/services/eventService.js
Normal file → Executable file
186
src/services/eventService.js
Normal file → Executable file
@@ -10,11 +10,12 @@ const apiRequest = async (url, options = {}) => {
|
||||
console.log(`Making API request to: ${API_BASE_URL}${url}`);
|
||||
|
||||
const response = await fetch(`${API_BASE_URL}${url}`, {
|
||||
...options,
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
...options.headers,
|
||||
},
|
||||
...options,
|
||||
credentials: 'include', // 包含 cookies,以便后端识别登录状态
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
@@ -77,6 +78,25 @@ export const eventService = {
|
||||
getEventDetail: (eventId) => {
|
||||
return apiRequest(`/api/v1/calendar/events/${eventId}`);
|
||||
},
|
||||
|
||||
/**
|
||||
* 切换未来事件的关注状态
|
||||
* @param {number} eventId - 未来事件ID
|
||||
* @returns {Promise<object>} 返回关注状态
|
||||
*/
|
||||
toggleFollow: async (eventId) => {
|
||||
return await apiRequest(`/api/v1/calendar/events/${eventId}/follow`, {
|
||||
method: 'POST'
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取用户关注的所有未来事件
|
||||
* @returns {Promise<object>} 返回关注的未来事件列表
|
||||
*/
|
||||
getFollowingEvents: async () => {
|
||||
return await apiRequest(`/api/account/future-events/following`);
|
||||
},
|
||||
},
|
||||
getEventDetail: async (eventId) => {
|
||||
return await apiRequest(`/api/events/${eventId}`);
|
||||
@@ -139,6 +159,120 @@ export const eventService = {
|
||||
body: JSON.stringify({ is_following: isFollowing }),
|
||||
});
|
||||
},
|
||||
|
||||
// 帖子相关API
|
||||
getPosts: async (eventId, sortType = 'latest', page = 1, perPage = 20) => {
|
||||
try {
|
||||
return await apiRequest(`/api/events/${eventId}/posts?sort=${sortType}&page=${page}&per_page=${perPage}`);
|
||||
} catch (error) {
|
||||
console.error('获取帖子失败:', error);
|
||||
return { success: false, data: [], pagination: {} };
|
||||
}
|
||||
},
|
||||
|
||||
createPost: async (eventId, postData) => {
|
||||
try {
|
||||
return await apiRequest(`/api/events/${eventId}/posts`, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify(postData)
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('创建帖子失败:', error);
|
||||
return { success: false, message: '创建帖子失败' };
|
||||
}
|
||||
},
|
||||
|
||||
deletePost: async (postId) => {
|
||||
try {
|
||||
return await apiRequest(`/api/posts/${postId}`, {
|
||||
method: 'DELETE'
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('删除帖子失败:', error);
|
||||
return { success: false, message: '删除帖子失败' };
|
||||
}
|
||||
},
|
||||
|
||||
likePost: async (postId) => {
|
||||
try {
|
||||
return await apiRequest(`/api/posts/${postId}/like`, {
|
||||
method: 'POST'
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('点赞失败:', error);
|
||||
return { success: false, message: '点赞失败' };
|
||||
}
|
||||
},
|
||||
|
||||
// 评论相关API
|
||||
getPostComments: async (postId, sortType = 'latest') => {
|
||||
try {
|
||||
return await apiRequest(`/api/posts/${postId}/comments?sort=${sortType}`);
|
||||
} catch (error) {
|
||||
console.error('获取评论失败:', error);
|
||||
return { success: false, data: [] };
|
||||
}
|
||||
},
|
||||
|
||||
addPostComment: async (postId, commentData) => {
|
||||
try {
|
||||
return await apiRequest(`/api/posts/${postId}/comments`, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify(commentData)
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('添加评论失败:', error);
|
||||
return { success: false, message: '添加评论失败' };
|
||||
}
|
||||
},
|
||||
|
||||
deleteComment: async (commentId) => {
|
||||
try {
|
||||
return await apiRequest(`/api/comments/${commentId}`, {
|
||||
method: 'DELETE'
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('删除评论失败:', error);
|
||||
return { success: false, message: '删除评论失败' };
|
||||
}
|
||||
},
|
||||
|
||||
likeComment: async (commentId) => {
|
||||
try {
|
||||
return await apiRequest(`/api/comments/${commentId}/like`, {
|
||||
method: 'POST'
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('点赞失败:', error);
|
||||
return { success: false, message: '点赞失败' };
|
||||
}
|
||||
},
|
||||
|
||||
// 兼容旧版本的评论API
|
||||
getComments: async (eventId, sortType = 'latest') => {
|
||||
console.warn('getComments 已废弃,请使用 getPosts');
|
||||
// 直接调用 getPosts 的实现,避免循环引用
|
||||
try {
|
||||
return await apiRequest(`/api/events/${eventId}/posts?sort=${sortType}&page=1&per_page=20`);
|
||||
} catch (error) {
|
||||
console.error('获取帖子失败:', error);
|
||||
return { success: false, data: [], pagination: {} };
|
||||
}
|
||||
},
|
||||
|
||||
addComment: async (eventId, commentData) => {
|
||||
console.warn('addComment 已废弃,请使用 createPost');
|
||||
// 直接调用 createPost 的实现,避免循环引用
|
||||
try {
|
||||
return await apiRequest(`/api/events/${eventId}/posts`, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify(commentData)
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('创建帖子失败:', error);
|
||||
return { success: false, message: '创建帖子失败' };
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
export const stockService = {
|
||||
@@ -158,11 +292,11 @@ export const stockService = {
|
||||
method: 'POST',
|
||||
body: JSON.stringify(requestBody)
|
||||
});
|
||||
|
||||
|
||||
console.log('股票报价原始响应:', response);
|
||||
console.log('response.success:', response.success);
|
||||
console.log('response.data:', response.data);
|
||||
|
||||
|
||||
if (response.success && response.data) {
|
||||
console.log('返回股票报价数据:', response.data);
|
||||
return response.data;
|
||||
@@ -237,42 +371,34 @@ export const stockService = {
|
||||
return await apiRequest(`/api/events/${eventId}/transmission/node/${nodeId}`);
|
||||
},
|
||||
|
||||
// 评论相关API
|
||||
getComments: async (eventId, sortType = 'latest') => {
|
||||
try {
|
||||
return await apiRequest(`/api/events/${eventId}/comments?sort=${sortType}`);
|
||||
} catch (error) {
|
||||
console.error('获取评论失败:', error);
|
||||
return { success: false, data: [] };
|
||||
}
|
||||
getHistoricalEventStocks: async (eventId) => {
|
||||
return await apiRequest(`/api/historical-events/${eventId}/stocks`);
|
||||
},
|
||||
|
||||
addComment: async (eventId, commentData) => {
|
||||
};
|
||||
|
||||
export const indexService = {
|
||||
getKlineData: async (indexCode, chartType = 'timeline', eventTime = null) => {
|
||||
try {
|
||||
return await apiRequest(`/api/events/${eventId}/comments`, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify(commentData)
|
||||
});
|
||||
const params = new URLSearchParams();
|
||||
params.append('type', chartType);
|
||||
if (eventTime) {
|
||||
params.append('event_time', eventTime);
|
||||
}
|
||||
|
||||
const url = `/api/index/${indexCode}/kline?${params.toString()}`;
|
||||
console.log(`获取指数K线数据: ${API_BASE_URL}${url}`);
|
||||
const response = await apiRequest(url);
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error('添加评论失败:', error);
|
||||
return { success: false, message: '添加评论失败' };
|
||||
console.error('获取指数K线数据失败:', error);
|
||||
throw error;
|
||||
}
|
||||
},
|
||||
|
||||
likeComment: async (commentId) => {
|
||||
try {
|
||||
return await apiRequest(`/api/comments/${commentId}/like`, {
|
||||
method: 'POST'
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('点赞失败:', error);
|
||||
return { success: false, message: '点赞失败' };
|
||||
}
|
||||
},
|
||||
|
||||
};
|
||||
|
||||
export default {
|
||||
eventService,
|
||||
stockService,
|
||||
indexService,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user