Files
soul-yongping/开发文档/8、部署/小程序调整说明.md
2026-02-09 15:09:29 +08:00

5.5 KiB
Raw Blame History

小程序调整说明 - 新分销逻辑

已完成的调整

1. UI修改

文件: miniprogram/pages/referral/referral.wxml 修改: 删除"我的邀请码"卡片

<!-- ✅ 已删除 -->
<!-- <view class="invite-card">
  <text class="invite-title">我的邀请码</text>
  <text class="invite-code">{{referralCode}}</text>
</view> -->

无需调整的部分

1. 绑定逻辑app.js

文件: miniprogram/app.js 当前逻辑: 完全兼容新逻辑

// 点击推荐链接时
handleReferralCode(options) {
  // 1. 记录访问
  this.recordReferralVisit(refCode)
  
  // 2. 保存推荐码
  wx.setStorageSync('referral_code', refCode)
  
  // 3. 如果已登录,立即绑定
  if (this.globalData.isLoggedIn) {
    this.bindReferralCode(refCode) // 调用 /api/referral/bind
  }
}

为什么无需调整

  • 小程序只负责调用 /api/referral/bind
  • 后端API已实现"立即切换"逻辑
  • 无论是新绑定、续期还是切换,小程序无需感知

2. 支付逻辑pages/read/read.js

文件: miniprogram/pages/read/read.js 当前逻辑: 完全兼容新逻辑

// 支付时
const referralCode = wx.getStorageSync('referral_code') || ''
await app.request('/api/miniprogram/pay', {
  data: {
    amount,  // 原价(如 1.00
    referralCode: referralCode || undefined
  }
})

为什么无需调整

  • 小程序传递原价和推荐码
  • 后端自动计算折扣(如 5% off
  • 微信支付弹窗会显示折后价(无需小程序干预)

3. 分销中心数据展示pages/referral/referral.js

文件: miniprogram/pages/referral/referral.js 当前逻辑: 完全兼容新逻辑

// 数据来源
const res = await app.request('/api/referral/data?userId=' + userInfo.id)

// 展示数据
setData({
  bindingCount,      // 绑定中的人数
  paidCount,         // 已付款的人数
  activeBindings,    // 绑定中的用户列表
  convertedBindings, // 已付款的用户列表
  expiredBindings    // 已过期的用户列表
})

为什么无需调整

  • 后端API /api/referral/data 已适配新逻辑
  • convertedBindings 现在返回 status = 'active' AND purchase_count > 0
  • 小程序只是展示后端数据,无需改代码

🆕 可选增强功能

建议1: 显示购买次数

当前显示

用户A  +¥0.90
已付款

增强后显示

用户A  +¥1.80
已购2次

实现方式(可选):

修改 WXML

<!-- 在 pages/referral/referral.wxml 的用户状态区域 -->
<view class="user-status">
  <block wx:if="{{item.status === 'converted'}}">
    <text class="status-amount">+¥{{item.commission}}</text>
    <!-- 新增:显示购买次数 -->
    <text class="status-order">已购{{item.purchaseCount || 1}}次</text>
  </block>
</view>

修改 JS

// 在 pages/referral/referral.js 的 formatUser 函数中
const formatUser = (user, type) => {
  return {
    id: user.id,
    nickname: user.nickname,
    commission: (user.commission || 0).toFixed(2),
    purchaseCount: user.purchaseCount || 0,  // 新增
    // ...
  }
}

是否需要:根据产品需求决定


建议2: 显示"切换提示"

当用户点击新的推荐链接时,弹窗提示:

// 在 app.js 的 bindReferralCode 函数中
async bindReferralCode(refCode) {
  const res = await this.request('/api/referral/bind', {
    method: 'POST',
    data: { userId, referralCode: refCode }
  })
  
  // 新增:切换提示
  if (res.success && res.action === 'switch') {
    wx.showToast({
      title: '已切换推荐人',
      icon: 'success'
    })
  }
}

是否需要:可以让用户明确知道绑定关系已切换


建议3: 价格显示优化

当前:章节价格固定显示 1.00 元

优化:根据是否有推荐码,显示折后价

// 在 pages/read/read.js 的 onLoad 或 onShow 中
async loadPriceWithDiscount() {
  const referralCode = wx.getStorageSync('referral_code')
  let displayPrice = this.data.section.price // 原价 1.00
  
  if (referralCode) {
    // 从配置获取折扣
    const res = await app.request('/api/db/config?key=referral_config')
    if (res.success && res.config?.userDiscount) {
      const discount = res.config.userDiscount / 100
      displayPrice = this.data.section.price * (1 - discount)
    }
  }
  
  this.setData({ 
    displayPrice: displayPrice.toFixed(2),
    hasDiscount: referralCode ? true : false
  })
}

WXML显示

<view class="price">
  <text wx:if="{{hasDiscount}}" class="original-price">¥1.00</text>
  <text class="current-price">¥{{displayPrice}}</text>
  <text wx:if="{{hasDiscount}}" class="discount-tag">推荐优惠</text>
</view>

是否需要:可以让用户看到优惠,提升转化率


📋 小程序调整总结

必须调整(已完成)

  • 删除"我的邀请码"卡片

无需调整(后端已兼容)

  • 绑定逻辑app.js
  • 支付逻辑pages/read/read.js
  • 分销中心展示pages/referral/referral.js

可选增强(看产品需求)

  • ⏸️ 显示购买次数
  • ⏸️ 显示切换提示
  • ⏸️ 显示折后价格

结论

小程序端只需要已完成的1处修改删除邀请码卡片其他功能都通过后端API自动适配新逻辑无需额外调整

如果你想要可选增强功能,告诉我具体要加哪个,我来帮你实现。