feat: 10.10线上最新代码提交

This commit is contained in:
zdl
2025-10-11 16:16:02 +08:00
parent 4d0dc109bc
commit 495ad758ea
3338 changed files with 460147 additions and 152745 deletions

186
src/services/eventService.js Normal file → Executable file
View 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,
};