// pages/profile/index/index.js import request from '../../../utils/request' Page({ data: { userInfo: null, isLogin: false, navbarHeight: 0, stats: { total_games: 0, total_win: 0, total_loss: 0, win_rate: 0, net_profit: 0 }, recentSessions: [], achievements: [] }, onLoad() { // 计算导航栏高度 const windowInfo = wx.getWindowInfo() const menuButtonInfo = wx.getMenuButtonBoundingClientRect() const statusBarHeight = windowInfo.statusBarHeight const menuButtonTop = menuButtonInfo.top const navbarHeight = menuButtonInfo.bottom + (menuButtonTop - statusBarHeight) this.setData({ navbarHeight }) this.loadUserData() }, onShow() { // 每次显示时刷新数据 this.loadUserData() }, // 加载用户数据 async loadUserData() { const app = getApp() const userInfo = app.getUserInfo() if (userInfo) { this.setData({ userInfo, isLogin: true }) await this.loadUserStats() await this.loadRecentSessions() this.calculateAchievements() } else { this.setData({ isLogin: false }) } }, // 加载用户统计 async loadUserStats() { try { const stats = await request.get('/auth/profile') // 计算净盈利 const netProfit = (stats.total_win || 0) - (stats.total_loss || 0) this.setData({ stats: { total_games: stats.total_games || 0, total_win: stats.total_win || 0, total_loss: stats.total_loss || 0, win_rate: stats.win_rate || 0, net_profit: netProfit } }) } catch (error) { console.error('加载统计失败:', error) } }, // 加载最近牌局 async loadRecentSessions() { try { const data = await request.get('/rooms/my-sessions', { page: 1, pageSize: 5 }) this.setData({ recentSessions: data.list || [] }) } catch (error) { console.error('加载牌局失败:', error) } }, // 计算成就 calculateAchievements() { const { stats } = this.data const achievements = [] // 根据游戏场次 if (stats.total_games >= 100) { achievements.push({ icon: '🏆', name: '百战老将', desc: '参与100场游戏' }) } else if (stats.total_games >= 50) { achievements.push({ icon: '🎖️', name: '资深玩家', desc: '参与50场游戏' }) } else if (stats.total_games >= 10) { achievements.push({ icon: '🌟', name: '初出茅庐', desc: '参与10场游戏' }) } // 根据胜率 if (stats.win_rate >= 70) { achievements.push({ icon: '👑', name: '牌桌霸主', desc: '胜率超过70%' }) } else if (stats.win_rate >= 60) { achievements.push({ icon: '💎', name: '高手', desc: '胜率超过60%' }) } // 根据盈利 if (stats.net_profit > 10000) { achievements.push({ icon: '💰', name: '财运亨通', desc: '累计盈利过万' }) } else if (stats.net_profit > 5000) { achievements.push({ icon: '💵', name: '小有盈余', desc: '累计盈利5000+' }) } this.setData({ achievements }) }, // 处理登录 handleLogin() { wx.navigateTo({ url: '/pages/login/login' }) }, // 编辑资料 editProfile() { wx.navigateTo({ url: '/pages/login/login' }) }, // 查看个人统计 viewStats() { wx.navigateTo({ url: '/pages/stats/personal/personal' }) }, // 查看全部牌局 viewAllSessions() { wx.navigateTo({ url: '/pages/record/list/list' }) }, // 进入牌局 goToSession(e) { const id = e.currentTarget.dataset.id wx.navigateTo({ url: `/pages/game/detail/detail?id=${id}` }) }, // 关于 showAbout() { wx.showModal({ title: '关于打牌记账', content: '版本:v1.0.0\n\n一款专业的打牌记账小程序\n支持麻将、扑克等多种游戏类型\n实时记录、智能统计、便捷结算', showCancel: false }) }, // 联系客服 contactService() { wx.showModal({ title: '联系客服', content: '客服微信:请添加公众号\n客服电话:暂未开通', showCancel: false }) }, // 下拉刷新 onPullDownRefresh() { this.loadUserData().then(() => { wx.stopPullDownRefresh() }) } })