const api = require('../../utils/api') const config = require('../../config/index') Page({ data: { statusBarHeight: 44, navBarHeight: 44, totalNavHeight: 88, lovePoints: 0, isLoggedIn: false, gifts: [], giftsLoading: false, giftsError: '', skeletonGifts: Array.from({ length: 6 }).map((_, idx) => ({ id: idx + 1 })) }, getGiftImageUrl(url) { if (!url) return '' if (url.startsWith('http://') || url.startsWith('https://') || url.startsWith('data:')) return url // 兼容所有相对路径 if (url.startsWith('/')) { const baseUrl = String(config.API_BASE_URL || '').replace(/\/api$/, '') return baseUrl + url } return url }, async onLoad() { // 计算导航栏高度 const systemInfo = wx.getSystemInfoSync() const statusBarHeight = systemInfo.statusBarHeight || 44 const menuButton = wx.getMenuButtonBoundingClientRect() const navBarHeight = menuButton.height + (menuButton.top - statusBarHeight) * 2 const totalNavHeight = statusBarHeight + navBarHeight this.setData({ statusBarHeight, navBarHeight, totalNavHeight }) // 礼物商城无需登录即可访问 this.loadGifts() // 检查登录状态并加载爱心值 const app = getApp() const isLoggedIn = app.globalData.isLoggedIn this.setData({ isLoggedIn }) if (isLoggedIn) { this.loadLovePoints() } }, onShow() { const app = getApp() this.setData({ isLoggedIn: app.globalData.isLoggedIn }) // 仅在登录状态下刷新爱心值 if (app.globalData.isLoggedIn) { this.loadLovePoints() } }, // 加载爱心值 async loadLovePoints() { try { const res = await api.loveExchange.getOptions() if (res.success) { this.setData({ lovePoints: res.data.current_love_points || 0 }) } } catch (error) { console.error('加载爱心值失败:', error) } }, async loadGifts() { if (this.data.giftsLoading) return this.setData({ giftsLoading: true, giftsError: '' }) try { // 使用 shop.getItems 获取 exchange_items 数据 const res = await api.shop.getItems() if (res.success) { const gifts = (res.data || []).map(gift => ({ id: gift.id, name: gift.name, // 兼容后端返回 image 或 image_url image: this.getGiftImageUrl(gift.image_url || gift.image), // 兼容后端返回 price 或 love_cost love_cost: gift.price || gift.love_cost, stock: gift.stock, sold_count: gift.sold_count, category: gift.category })) this.setData({ gifts }) } else { this.setData({ giftsError: res.error || '获取礼品失败' }) } } catch (error) { console.error('加载礼品失败:', error) this.setData({ giftsError: error.message || '获取礼品失败' }) } finally { this.setData({ giftsLoading: false }) } }, // 返回上一页 goBack() { wx.navigateBack() }, // 查看明细 onViewDetails() { wx.navigateTo({ url: '/pages/love-transactions/love-transactions' }) }, // 点击礼品卡片 onGiftTap() { wx.showModal({ title: '联系客服', content: '请添加客服:mmj20259999', confirmText: '复制', success: (res) => { if (res.confirm) { wx.setClipboardData({ data: 'mmj20259999', success: () => { wx.showToast({ title: '已复制', icon: 'success' }) } }) } } }) }, // 下拉刷新 onPullDownRefresh() { this.loadLovePoints() this.loadGifts() setTimeout(() => { wx.stopPullDownRefresh() }, 1000) } })