// services/api.js // API接口封装 const app = getApp() const BASE_URL = 'https://api.notmaker.com' const request = (options) => { return new Promise((resolve, reject) => { const token = wx.getStorageSync('token') wx.showLoading({ title: '加载中...', mask: true }) wx.request({ url: BASE_URL + options.url, method: options.method || 'GET', data: options.data || {}, header: { 'Content-Type': 'application/json', 'Authorization': token ? `Bearer ${token}` : '', ...options.header }, success: res => { wx.hideLoading() if (res.statusCode === 200) { resolve(res.data) } else if (res.statusCode === 401) { wx.removeStorageSync('token') wx.removeStorageSync('userInfo') wx.showToast({ title: '请先登录', icon: 'none' }) setTimeout(() => { wx.navigateTo({ url: '/pages/login/login' }) }, 1500) reject(res.data) } else { wx.showToast({ title: res.data.message || '请求失败', icon: 'none' }) reject(res.data) } }, fail: err => { wx.hideLoading() wx.showToast({ title: '网络请求失败', icon: 'none' }) reject(err) } }) }) } const api = { getBaseUrl: () => BASE_URL, // 用户相关 loginByPassword: (data) => request({ url: '/api/user/login/password', method: 'POST', data }), loginBySms: (data) => request({ url: '/api/user/login/sms', method: 'POST', data }), sendSmsCode: (data) => request({ url: '/api/user/sms/send', method: 'POST', data }), wxLogin: (data) => request({ url: '/api/user/login/wechat', method: 'POST', data }), register: (data) => request({ url: '/api/user/register', method: 'POST', data }), getUserInfo: () => request({ url: '/api/user/info' }), updateUserInfo: (data) => request({ url: '/api/user/info', method: 'PUT', data }), getUserList: (data) => request({ url: '/api/user/list', data }), deleteUser: (data) => request({ url: `/api/user/${data.id}`, method: 'DELETE' }), followUser: (data) => request({ url: '/api/user/follow', method: 'POST', data }), // 文章相关 getArticleList: (data) => request({ url: '/api/article/list', data }), getArticleDetail: (id) => request({ url: `/api/article/${id}` }), getMyArticleList: (data) => request({ url: '/api/article/my/list', data }), createArticle: (data) => request({ url: '/api/article', method: 'POST', data }), updateArticle: (data) => request({ url: `/api/article/${data.id}`, method: 'PUT', data }), deleteArticle: (data) => request({ url: `/api/article/${data.id}`, method: 'DELETE' }), addViewCount: (data) => request({ url: '/api/article/view', method: 'POST', data }), updateFavorite: (data) => request({ url: '/api/article/favorite', method: 'POST', data }), updateLike: (data) => request({ url: '/api/article/like', method: 'POST', data }), search: (data) => request({ url: '/api/article/search', data }), // 分类相关 getCategoryList: () => request({ url: '/api/category/list' }), getCategoryDetail: (id) => request({ url: `/api/category/${id}` }), // 标签相关 getTagList: () => request({ url: '/api/tag/list' }), // 评论相关 getCommentList: (data) => request({ url: '/api/comment/list', data }), addComment: (data) => request({ url: '/api/comment', method: 'POST', data }), deleteComment: (data) => request({ url: `/api/comment/${data.id}`, method: 'DELETE' }), getMyCommentList: (data) => request({ url: '/api/comment/my/list', data }), // 收藏相关 getMyFavoriteList: (data) => request({ url: '/api/favorite/my/list', data }), // 浏览历史 getBrowseHistory: (data) => request({ url: '/api/history/list', data }), clearBrowseHistory: () => request({ url: '/api/history/clear', method: 'DELETE' }), // 消息通知 getNotificationList: (data) => request({ url: '/api/notification/list', data }), markNotificationRead: (data) => request({ url: '/api/notification/read', method: 'POST', data }), markAllNotificationRead: () => request({ url: '/api/notification/read/all', method: 'POST' }), deleteNotification: (data) => request({ url: `/api/notification/${data.id}`, method: 'DELETE' }), // 反馈 submitFeedback: (data) => request({ url: '/api/feedback', method: 'POST', data }), getFeedbackList: (data) => request({ url: '/api/feedback/list', data }), // 热门搜索 getHotSearch: () => request({ url: '/api/search/hot' }), // 系统配置 getSystemConfig: () => request({ url: '/api/system/config' }) } module.exports = api /** * @联系作者:16768118056 * @描述:(此项目非免费分享)源码百分百可用,搞定毕设不发愁,支持远程调试安装、二次开发、定制、讲解、文档类。 * @访问:https://www.notmaker.com/detail/8326a897119d4542896c863a69d7bbe7/gtt20260415,查看完整运行演示。 */