/** * Soul创业派对 - 首页 * 开发: 卡若 * 技术支持: 存客宝 */ const app = getApp() Page({ data: { // 系统信息 statusBarHeight: 44, navBarHeight: 88, // 用户信息 isLoggedIn: false, hasFullBook: false, purchasedCount: 0, // 书籍数据 totalSections: 62, bookData: [], // 推荐章节 featuredSections: [ { id: '1.1', title: '荷包:电动车出租的被动收入模式', tag: '免费', tagClass: 'tag-free', part: '真实的人' }, { id: '3.1', title: '3000万流水如何跑出来', tag: '热门', tagClass: 'tag-pink', part: '真实的行业' }, { id: '8.1', title: '流量杠杆:抖音、Soul、飞书', tag: '推荐', tagClass: 'tag-purple', part: '真实的赚钱' } ], // 最新章节(动态计算) latestSection: null, latestLabel: '最新更新', // 内容概览 partsList: [ { id: 'part-1', number: '一', title: '真实的人', subtitle: '人与人之间的底层逻辑' }, { id: 'part-2', number: '二', title: '真实的行业', subtitle: '电商、内容、传统行业解析' }, { id: 'part-3', number: '三', title: '真实的错误', subtitle: '我和别人犯过的错' }, { id: 'part-4', number: '四', title: '真实的赚钱', subtitle: '底层结构与真实案例' }, { id: 'part-5', number: '五', title: '真实的社会', subtitle: '未来职业与商业生态' } ], // 加载状态 loading: true }, onLoad(options) { // 获取系统信息 this.setData({ statusBarHeight: app.globalData.statusBarHeight, navBarHeight: app.globalData.navBarHeight }) // 处理分享参数(推荐码绑定) if (options && options.ref) { console.log('[Index] 检测到推荐码:', options.ref) app.handleReferralCode({ query: options }) } // 初始化数据 this.initData() }, onShow() { // 设置TabBar选中状态 if (typeof this.getTabBar === 'function' && this.getTabBar()) { this.getTabBar().setData({ selected: 0 }) } // 更新用户状态 this.updateUserStatus() }, // 初始化数据 async initData() { this.setData({ loading: true }) try { // 获取书籍数据 await this.loadBookData() // 计算推荐章节 this.computeLatestSection() } catch (e) { console.error('初始化失败:', e) } finally { this.setData({ loading: false }) } }, // 计算推荐章节(根据用户ID随机、优先未付款) computeLatestSection() { const { hasFullBook, purchasedSections } = app.globalData const userId = app.globalData.userInfo?.id || wx.getStorageSync('userId') || 'guest' // 所有章节列表 const allSections = [ { id: '9.14', title: '大健康私域:一个月150万的70后', part: '真实的赚钱' }, { id: '9.13', title: 'AI工具推广:一个隐藏的高利润赛道', part: '真实的赚钱' }, { id: '9.12', title: '美业整合:一个人的公司如何月入十万', part: '真实的赚钱' }, { id: '8.6', title: '云阿米巴:分不属于自己的钱', part: '真实的赚钱' }, { id: '8.1', title: '流量杠杆:抖音、Soul、飞书', part: '真实的赚钱' }, { id: '3.1', title: '3000万流水如何跑出来', part: '真实的行业' }, { id: '5.1', title: '拍卖行抱朴:一天240万的摇号生意', part: '真实的行业' }, { id: '4.1', title: '旅游号:30天10万粉的真实逻辑', part: '真实的行业' } ] // 用户ID生成的随机种子(同一用户每天看到的不同) const today = new Date().toISOString().split('T')[0] const seed = (userId + today).split('').reduce((a, b) => a + b.charCodeAt(0), 0) // 筛选未付款章节 let candidates = allSections if (!hasFullBook) { const purchased = purchasedSections || [] const unpurchased = allSections.filter(s => !purchased.includes(s.id)) if (unpurchased.length > 0) { candidates = unpurchased } } // 根据种子选择章节 const index = seed % candidates.length const selected = candidates[index] // 设置标签(如果有新增章节显示"最新更新",否则显示"推荐阅读") const label = candidates === allSections ? '推荐阅读' : '为你推荐' this.setData({ latestSection: selected, latestLabel: label }) }, // 加载书籍数据 async loadBookData() { try { const res = await app.request('/api/book/all-chapters') if (res && res.data) { this.setData({ bookData: res.data, totalSections: res.totalSections || 62 }) } } catch (e) { console.error('加载书籍数据失败:', e) } }, // 更新用户状态 updateUserStatus() { const { isLoggedIn, hasFullBook, purchasedSections } = app.globalData this.setData({ isLoggedIn, hasFullBook, purchasedCount: hasFullBook ? this.data.totalSections : (purchasedSections?.length || 0) }) }, // 跳转到目录 goToChapters() { wx.switchTab({ url: '/pages/chapters/chapters' }) }, // 跳转到搜索页 goToSearch() { wx.navigateTo({ url: '/pages/search/search' }) }, // 跳转到阅读页 goToRead(e) { const id = e.currentTarget.dataset.id wx.navigateTo({ url: `/pages/read/read?id=${id}` }) }, // 跳转到匹配页 goToMatch() { wx.switchTab({ url: '/pages/match/match' }) }, // 跳转到我的页面 goToMy() { wx.switchTab({ url: '/pages/my/my' }) }, // 下拉刷新 async onPullDownRefresh() { await this.initData() this.updateUserStatus() wx.stopPullDownRefresh() } })