// 推广奖励功能管理类 class RewardManager { constructor() { this.promotionData = []; this.userStats = null; this.init(); } // 初始化方法 init() { this.loadPromotionData(); this.loadUserStats(); this.bindEvents(); AOS.init({ duration: 1000, once: true }); } // 绑定事件 bindEvents() { // 表单提交事件 const promotionForm = document.getElementById('promotionForm'); if (promotionForm) { promotionForm.addEventListener('submit', (e) => { e.preventDefault(); this.handlePromotionApplication(e.target); }); } // 协议链接点击事件 const agreeTerms = document.getElementById('agreeTerms'); if (agreeTerms) { agreeTerms.addEventListener('change', (e) => { this.toggleAgreement(e.target.checked); }); } // 页面加载完成后显示数据 document.addEventListener('DOMContentLoaded', () => { this.displayPromotionStats(); }); } // 加载推广数据(模拟数据) loadPromotionData() { this.promotionData = [ { id: 1, name: '旅行结伴推广', commissionRate: 15, totalEarnings: 12500, successfulReferrals: 84, conversionRate: 12.5 }, { id: 2, name: '动物认领推广', commissionRate: 20, totalEarnings: 8900, successfulReferrals: 45, conversionRate: 18.2 }, { id: 3, name: '送花服务推广', commissionRate: 12, totalEarnings: 6700, successfulReferrals: 56, conversionRate: 9.8 }, { id: 4, name: '新用户注册', commissionRate: 10, totalEarnings: 3200, successfulReferrals: 320, conversionRate: 25.4 } ]; } // 加载用户统计数据(模拟数据) loadUserStats() { this.userStats = { totalEarnings: 31300, availableBalance: 5200, totalReferrals: 505, monthlyEarnings: 4200, joinDate: '2024-01-15', nextPayoutDate: '2024-03-15', performanceLevel: 'Gold', topPromotion: '旅行结伴推广' }; } // 显示推广统计数据 displayPromotionStats() { // 这里可以添加实时统计数据显示逻辑 console.log('推广数据加载完成:', this.promotionData); console.log('用户统计数据:', this.userStats); } // 处理推广申请 handlePromotionApplication(form) { if (!form.checkValidity()) { form.reportValidity(); return; } const formData = new FormData(form); const applicationData = { name: formData.get('name'), phone: formData.get('phone'), email: formData.get('email'), channel: formData.get('channel'), volume: formData.get('volume'), message: formData.get('message'), applicationDate: new Date().toISOString(), status: 'pending' }; // 模拟提交申请 this.submitPromotionApplication(applicationData); } // 提交推广申请 submitPromotionApplication(data) { // 模拟API调用 console.log('提交推广申请:', data); // 显示成功提示 this.showApplicationSuccess(data); // 重置表单 document.getElementById('promotionForm').reset(); } // 显示申请成功 showApplicationSuccess(data) { // 使用SweetAlert或自定义模态框显示成功信息 if (typeof Swal !== 'undefined') { Swal.fire({ icon: 'success', title: '申请提交成功!', html: `

申请详情:

姓名:${data.name}

电话:${data.phone}

邮箱:${data.email}

推广渠道:${this.getChannelName(data.channel)}

我们会在1-3个工作日内审核您的申请,并通过邮件和短信通知您结果。

`, confirmButtonText: '确定', confirmButtonColor: '#6c5ce7' }); } else { alert('推广申请提交成功!我们会在1-3个工作日内联系您。'); } } // 获取渠道名称 getChannelName(channel) { const channelNames = { 'wechat': '微信/朋友圈', 'weibo': '微博', 'douyin': '抖音', 'website': '个人网站/博客', 'other': '其他渠道' }; return channelNames[channel] || channel; } // 切换协议同意状态 toggleAgreement(checked) { const submitButton = document.querySelector('#promotionForm button[type="submit"]'); if (submitButton) { submitButton.disabled = !checked; } } // 生成推广链接 generatePromotionLink(userId, campaignType = 'general') { const baseUrl = window.location.origin; const affiliateId = this.generateAffiliateId(userId); const campaignParams = { 'travel': 'ref=travel_affiliate', 'animal': 'ref=animal_affiliate', 'flower': 'ref=flower_affiliate', 'general': 'ref=general_affiliate' }; return `${baseUrl}/?${campaignParams[campaignType]}&affiliate=${affiliateId}`; } // 生成推广ID generateAffiliateId(userId) { // 简单的ID生成逻辑,实际应用中应该更复杂 return `aff_${userId}_${Date.now().toString(36)}`; } // 生成推广二维码 generatePromotionQRCode(link, elementId) { // 这里可以集成QRCode生成库 console.log('生成二维码:', link); // 实际实现需要使用QRCode库 } // 复制推广链接 copyPromotionLink(link) { navigator.clipboard.writeText(link).then(() => { this.showCopySuccess(); }).catch(err => { console.error('复制失败:', err); this.showCopyError(); }); } // 显示复制成功 showCopySuccess() { if (typeof Swal !== 'undefined') { Swal.fire({ icon: 'success', title: '复制成功!', text: '推广链接已复制到剪贴板', timer: 2000, showConfirmButton: false }); } else { alert('推广链接已复制!'); } } // 显示复制错误 showCopyError() { if (typeof Swal !== 'undefined') { Swal.fire({ icon: 'error', title: '复制失败', text: '请手动复制链接', timer: 2000, showConfirmButton: false }); } } // 分享到社交媒体 shareToSocialMedia(platform, link, title = '结伴客推广') { const shareUrls = { 'wechat': `https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=${encodeURIComponent(link)}`, 'weibo': `http://service.weibo.com/share/share.php?url=${encodeURIComponent(link)}&title=${encodeURIComponent(title)}`, 'qq': `http://connect.qq.com/widget/shareqq/index.html?url=${encodeURIComponent(link)}&title=${encodeURIComponent(title)}` }; if (shareUrls[platform]) { window.open(shareUrls[platform], '_blank'); } } // 计算预计收益 calculateEstimatedEarnings(referrals, averageOrderValue, commissionRate) { return referrals * averageOrderValue * (commissionRate / 100); } // 格式化金额 formatCurrency(amount) { return new Intl.NumberFormat('zh-CN', { style: 'currency', currency: 'CNY' }).format(amount); } // 获取性能等级 getPerformanceLevel(conversionRate) { if (conversionRate >= 20) return 'Platinum'; if (conversionRate >= 15) return 'Gold'; if (conversionRate >= 10) return 'Silver'; return 'Bronze'; } // 获取等级颜色 getLevelColor(level) { const colors = { 'Platinum': '#e5e4e2', 'Gold': '#ffd700', 'Silver': '#c0c0c0', 'Bronze': '#cd7f32' }; return colors[level] || '#6c757d'; } } // 页面加载完成后初始化 let rewardManager; document.addEventListener('DOMContentLoaded', function() { rewardManager = new RewardManager(); // 添加实时统计显示(如果需要) addRealTimeStats(); }); // 添加实时统计显示 function addRealTimeStats() { const statsContainer = document.createElement('div'); statsContainer.className = 'container mt-4'; statsContainer.innerHTML = `
¥31,300
总收益
505
总推荐数
¥5,200
可提现余额
Gold
性能等级
`; const joinSection = document.getElementById('join'); if (joinSection) { joinSection.parentNode.insertBefore(statsContainer, joinSection); } } // 工具函数:显示加载状态 function showRewardLoading() { const container = document.getElementById('promotion-stats'); if (container) { container.innerHTML = `
加载中...
`; } } // 工具函数:显示错误信息 function showRewardError(message) { const container = document.getElementById('promotion-stats'); if (container) { container.innerHTML = ` `; } } // 工具函数:格式化日期 function formatDate(dateString) { return new Date(dateString).toLocaleDateString('zh-CN', { year: 'numeric', month: 'long', day: 'numeric' }); } // 工具函数:生成进度条HTML function createProgressBar(value, max = 100, type = 'primary') { const percentage = (value / max) * 100; return `
${percentage.toFixed(1)}%
`; } // 推广链接生成器(示例) function setupPromotionLinkGenerator() { const generatorHtml = `
推广链接生成器
`; const joinSection = document.getElementById('join'); if (joinSection) { joinSection.insertAdjacentHTML('beforebegin', generatorHtml); } } // 全局函数供HTML调用 function generatePromotionLink() { const type = document.getElementById('promotionType').value; const userId = document.getElementById('userId').value || 'demo_user'; const link = rewardManager.generatePromotionLink(userId, type); document.getElementById('generatedLink').value = link; } function copyGeneratedLink() { const linkInput = document.getElementById('generatedLink'); if (linkInput.value) { rewardManager.copyPromotionLink(linkInput.value); } }