新增订单推荐人和邀请码功能,优化支付流程中的订单插入逻辑,确保订单记录准确。更新小程序支付请求,支持传递邀请码以便于分销归属和对账。同时,调整数据库结构以支持新字段,提升系统的稳定性和用户体验。

This commit is contained in:
乘风
2026-02-06 18:34:02 +08:00
parent f8fac00c85
commit 2e65d68e1e
34 changed files with 3288 additions and 1255 deletions

View File

@@ -32,6 +32,7 @@ Page({
pendingEarnings: 0, // 待结算收益(保留兼容)
shareRate: 90, // 分成比例90%
minWithdrawAmount: 10, // 最低提现金额(从后端获取)
hasWechatId: false, // 是否已绑定微信号(未绑定时需引导去设置)
// === 统计数据 ===
referralCount: 0, // 总推荐人数
@@ -68,6 +69,9 @@ Page({
},
onShow() {
// 从设置页返回时同步微信号绑定状态,便于提现按钮立即更新
const hasWechatId = !!(app.globalData.userInfo?.wechat || app.globalData.userInfo?.wechatId || wx.getStorageSync('user_wechat'))
this.setData({ hasWechatId })
this.initData()
},
@@ -152,11 +156,11 @@ Page({
return typeof num === 'number' ? num.toFixed(2) : '0.00'
}
// ✅ 修正:可提现金额 = 累计佣金 - 已提现金额 - 待审核金额
// ✅ 可提现金额 = 累计佣金 - 已提现金额 - 待审核金额,且不低于 0防止数据不同步时出现负数
const totalCommissionNum = realData?.totalCommission || 0
const withdrawnNum = realData?.withdrawnEarnings || 0
const pendingWithdrawNum = realData?.pendingWithdrawAmount || 0
const availableEarningsNum = totalCommissionNum - withdrawnNum - pendingWithdrawNum
const availableEarningsNum = Math.max(0, totalCommissionNum - withdrawnNum - pendingWithdrawNum)
const minWithdrawAmount = realData?.minWithdrawAmount || 10
console.log('=== [Referral] 收益计算(完整版)===')
@@ -168,9 +172,11 @@ Page({
console.log('按钮判断:', availableEarningsNum, '>=', minWithdrawAmount, '=', availableEarningsNum >= minWithdrawAmount)
console.log('✅ 按钮应该:', availableEarningsNum >= minWithdrawAmount ? '🟢 启用(绿色)' : '⚫ 禁用(灰色)')
const hasWechatId = !!(userInfo?.wechat || userInfo?.wechatId || wx.getStorageSync('user_wechat'))
this.setData({
isLoggedIn: true,
userInfo,
hasWechatId,
// 核心可见数据
bindingCount,
@@ -610,31 +616,33 @@ Page({
// 提现 - 直接到微信零钱
async handleWithdraw() {
// 使用数字版本直接进行判断,避免重复转换
const availableEarnings = this.data.availableEarningsNum || 0
const minWithdrawAmount = this.data.minWithdrawAmount || 10
console.log('[Withdraw] 提现检查:', {
availableEarnings,
minWithdrawAmount,
shouldEnable: availableEarnings >= minWithdrawAmount
})
const hasWechatId = this.data.hasWechatId
if (availableEarnings <= 0) {
wx.showToast({ title: '暂无可提现收益', icon: 'none' })
return
}
// 检查是否达到最低提现金额
if (availableEarnings < minWithdrawAmount) {
wx.showToast({
title: `${minWithdrawAmount}元可提现`,
icon: 'none'
wx.showToast({ title: `${minWithdrawAmount}元可提现`, icon: 'none' })
return
}
// 未绑定微信号时引导去设置
if (!hasWechatId) {
wx.showModal({
title: '请先绑定微信号',
content: '提现需先绑定微信号,便于到账核对。请到「设置」中绑定后再提现。',
confirmText: '去绑定',
cancelText: '取消',
success: (res) => {
if (res.confirm) wx.navigateTo({ url: '/pages/settings/settings' })
}
})
return
}
// 确认提现
wx.showModal({
title: '确认提现',
content: `将提现 ¥${availableEarnings.toFixed(2)} 到您的微信零钱`,
@@ -677,15 +685,13 @@ Page({
// 刷新数据(此时待审核金额会增加,可提现金额会减少)
this.initData()
} else {
if (res.needBind) {
if (res.needBind || res.needBindWechat) {
wx.showModal({
title: '需要绑定微信',
content: '请先在设置中绑定微信账号后再提现',
title: res.needBindWechat ? '请先绑定微信号' : '需要绑定微信',
content: res.needBindWechat ? '请到「设置」中绑定微信号后再提现,便于到账核对。' : '请先在设置中绑定微信账号后再提现',
confirmText: '去绑定',
success: (modalRes) => {
if (modalRes.confirm) {
wx.navigateTo({ url: '/pages/settings/settings' })
}
if (modalRes.confirm) wx.navigateTo({ url: '/pages/settings/settings' })
}
})
} else {