// pages/index/index.js const app = getApp() Page({ data: { bookStats: { chapters: 64, words: '15万', readers: '1.5万' }, allChapters: [], loading: true }, onLoad() { this.loadAllChapters() }, onShow() { // 每次显示时刷新数据 this.refreshData() }, // 加载所有章节 loadAllChapters() { wx.showLoading({ title: '加载中...', mask: true }) // 先尝试读取本地生成的章节数据 wx.request({ url: `${app.globalData.apiBase}/book/all-chapters`, method: 'GET', success: (res) => { if (res.statusCode === 200 && res.data.chapters) { this.setData({ allChapters: res.data.chapters, bookStats: { chapters: res.data.total || res.data.chapters.length, words: '15万', readers: '1.5万' }, loading: false }) // 缓存到本地 wx.setStorageSync('allChapters', res.data.chapters) } else { this.loadLocalChapters() } }, fail: () => { // 使用本地缓存数据 this.loadLocalChapters() }, complete: () => { wx.hideLoading() } }) }, // 加载本地章节数据(离线模式) loadLocalChapters() { // 尝试从缓存读取 const cached = wx.getStorageSync('allChapters') if (cached && cached.length > 0) { this.setData({ allChapters: cached, bookStats: { chapters: cached.length, words: '15万', readers: '1.5万' }, loading: false }) return } // 如果没有缓存,使用模拟数据 const mockChapters = [ { index: 1, id: 'preface', title: '序言|为什么我每天早上6点在Soul开播?', updateTime: '今天', words: 3200, partTitle: '序言' }, { index: 2, id: 'ch1-1', title: '1.1 荷包:电动车出租的被动收入模式', updateTime: '今天', words: 4500, partTitle: '第一篇|真实的人' }, { index: 3, id: 'ch1-2', title: '1.2 老墨:资源整合高手的社交方法', updateTime: '今天', words: 3800, partTitle: '第一篇|真实的人' }, ] this.setData({ allChapters: mockChapters, bookStats: { chapters: mockChapters.length, words: '15万', readers: '1.5万' }, loading: false }) }, // 刷新数据 refreshData() { const bookData = app.globalData.bookData if (bookData) { this.setData({ bookStats: { chapters: bookData.totalChapters || 65, words: bookData.totalWords || '12万', readers: bookData.totalReaders || '1.2万' } }) } }, // 立即阅读(跳转到第一章) readNow() { if (this.data.allChapters.length > 0) { const firstChapter = this.data.allChapters[0] wx.navigateTo({ url: `/pages/read/read?id=${firstChapter.id}` }) } else { wx.showToast({ title: '章节加载中...', icon: 'none' }) } }, // 阅读章节 readChapter(e) { const chapterId = e.currentTarget.dataset.id wx.navigateTo({ url: `/pages/read/read?id=${chapterId}` }) }, // 查看全部章节 goToChapters() { wx.navigateTo({ url: '/pages/chapters/chapters' }) }, // 购买处理 handlePurchase() { // 检查登录状态 const userInfo = app.getUserInfo() if (!userInfo) { // 未登录,先登录 this.showLoginModal() return } // 跳转到购买页面 wx.navigateTo({ url: '/pages/purchase/purchase' }) }, // 显示登录弹窗 showLoginModal() { wx.showModal({ title: '需要登录', content: '购买前需要先登录账号', confirmText: '立即登录', success: (res) => { if (res.confirm) { this.doLogin() } } }) }, // 执行登录 doLogin() { wx.showLoading({ title: '登录中...', mask: true }) app.wxLogin((success, user) => { wx.hideLoading() if (success) { wx.showToast({ title: '登录成功', icon: 'success' }) // 登录成功后自动跳转购买 setTimeout(() => { this.handlePurchase() }, 1500) } else { wx.showToast({ title: '登录失败', icon: 'none' }) } }) }, // 跳转推广页 goToReferral() { wx.switchTab({ url: '/pages/my/my?tab=referral' }) }, // 下拉刷新 onPullDownRefresh() { this.loadAllChapters() setTimeout(() => { wx.stopPullDownRefresh() }, 1000) }, // 分享到微信 onShareAppMessage() { const userInfo = app.getUserInfo() const inviteCode = userInfo ? userInfo.inviteCode : '' return { title: 'Soul派对·创业实验 - 一场真实的商业探索', path: `/pages/index/index?invite=${inviteCode}`, imageUrl: '/assets/images/share-cover.png' } }, // 分享到朋友圈 onShareTimeline() { const userInfo = app.getUserInfo() const inviteCode = userInfo ? userInfo.inviteCode : '' return { title: 'Soul派对·创业实验', query: `invite=${inviteCode}`, imageUrl: '/assets/images/share-cover.png' } } })