优化小程序阅读页面,新增好友优惠展示逻辑,支持通过推荐人获取折扣。调整价格计算方式,确保用户在购买章节时能看到实际优惠。更新相关样式以提升用户体验。
This commit is contained in:
@@ -56,6 +56,12 @@ Page({
|
||||
sectionPrice: 1,
|
||||
fullBookPrice: 9.9,
|
||||
totalSections: 62,
|
||||
// 好友优惠展示
|
||||
userDiscount: 5,
|
||||
hasReferralDiscount: false,
|
||||
showDiscountHint: false,
|
||||
displaySectionPrice: 1,
|
||||
displayFullBookPrice: 9.9,
|
||||
|
||||
// 弹窗
|
||||
showShareModal: false,
|
||||
@@ -131,11 +137,34 @@ Page({
|
||||
}
|
||||
|
||||
try {
|
||||
const config = await accessManager.fetchLatestConfig()
|
||||
const userId = app.globalData.userInfo?.id
|
||||
const [config, purchaseRes] = await Promise.all([
|
||||
accessManager.fetchLatestConfig(),
|
||||
userId ? app.request(`/api/miniprogram/user/purchase-status?userId=${userId}`) : Promise.resolve(null)
|
||||
])
|
||||
const sectionPrice = config.prices?.section ?? 1
|
||||
const fullBookPrice = config.prices?.fullbook ?? 9.9
|
||||
const userDiscount = config.userDiscount ?? 5
|
||||
// 有推荐人 = ref/ referral_code 或 用户信息中有推荐人绑定
|
||||
const hasReferral = !!(wx.getStorageSync('referral_code') || ref || purchaseRes?.data?.hasReferrer)
|
||||
const hasReferralDiscount = hasReferral && userDiscount > 0
|
||||
const showDiscountHint = userDiscount > 0
|
||||
const displaySectionPrice = hasReferralDiscount
|
||||
? Math.round(sectionPrice * (1 - userDiscount / 100) * 100) / 100
|
||||
: sectionPrice
|
||||
const displayFullBookPrice = hasReferralDiscount
|
||||
? Math.round(fullBookPrice * (1 - userDiscount / 100) * 100) / 100
|
||||
: fullBookPrice
|
||||
this.setData({
|
||||
freeIds: config.freeChapters,
|
||||
sectionPrice: config.prices?.section ?? 1,
|
||||
fullBookPrice: config.prices?.fullbook ?? 9.9
|
||||
sectionPrice,
|
||||
fullBookPrice,
|
||||
userDiscount,
|
||||
hasReferralDiscount,
|
||||
showDiscountHint: userDiscount > 0,
|
||||
displaySectionPrice,
|
||||
displayFullBookPrice,
|
||||
purchasedCount: purchaseRes?.data?.purchasedSections?.length ?? this.data.purchasedCount ?? 0
|
||||
})
|
||||
|
||||
// 先拉取章节获取 id(mid 时必需;id 时可直接用)
|
||||
@@ -157,7 +186,8 @@ Page({
|
||||
accessState,
|
||||
canAccess,
|
||||
isLoggedIn: !!app.globalData.userInfo?.id,
|
||||
showPaywall: !canAccess
|
||||
showPaywall: !canAccess,
|
||||
purchasedCount: purchaseRes?.data?.purchasedSections?.length ?? 0
|
||||
})
|
||||
|
||||
await this.loadContent(mid, resolvedId, accessState, prefetchedChapter)
|
||||
@@ -621,9 +651,34 @@ Page({
|
||||
// 1. 刷新用户购买状态(从 orders 表拉取最新)
|
||||
await accessManager.refreshUserPurchaseStatus()
|
||||
|
||||
// 2. 重新拉取免费列表(极端情况:刚登录时当前章节可能改免费了)
|
||||
const config = await accessManager.fetchLatestConfig()
|
||||
this.setData({ freeIds: config.freeChapters })
|
||||
// 2. 重新拉取免费列表、价格与用户推荐人状态
|
||||
const userId = app.globalData.userInfo?.id
|
||||
const [config, purchaseRes] = await Promise.all([
|
||||
accessManager.fetchLatestConfig(),
|
||||
userId ? app.request(`/api/miniprogram/user/purchase-status?userId=${userId}`) : Promise.resolve(null)
|
||||
])
|
||||
const sectionPrice = config.prices?.section ?? this.data.sectionPrice ?? 1
|
||||
const fullBookPrice = config.prices?.fullbook ?? this.data.fullBookPrice ?? 9.9
|
||||
const userDiscount = config.userDiscount ?? 5
|
||||
const hasReferral = !!(wx.getStorageSync('referral_code') || purchaseRes?.data?.hasReferrer)
|
||||
const hasReferralDiscount = hasReferral && userDiscount > 0
|
||||
const displaySectionPrice = hasReferralDiscount
|
||||
? Math.round(sectionPrice * (1 - userDiscount / 100) * 100) / 100
|
||||
: sectionPrice
|
||||
const displayFullBookPrice = hasReferralDiscount
|
||||
? Math.round(fullBookPrice * (1 - userDiscount / 100) * 100) / 100
|
||||
: fullBookPrice
|
||||
this.setData({
|
||||
freeIds: config.freeChapters,
|
||||
sectionPrice,
|
||||
fullBookPrice,
|
||||
userDiscount,
|
||||
hasReferralDiscount,
|
||||
showDiscountHint: userDiscount > 0,
|
||||
displaySectionPrice,
|
||||
displayFullBookPrice,
|
||||
purchasedCount: purchaseRes?.data?.purchasedSections?.length ?? this.data.purchasedCount ?? 0
|
||||
})
|
||||
|
||||
// 3. 重新判断当前章节权限
|
||||
const newAccessState = await accessManager.determineAccessState(
|
||||
@@ -1235,9 +1290,33 @@ Page({
|
||||
wx.showLoading({ title: '重试中...', mask: true })
|
||||
|
||||
try {
|
||||
// 重新拉取配置
|
||||
const config = await accessManager.fetchLatestConfig()
|
||||
this.setData({ freeIds: config.freeChapters })
|
||||
const userId = app.globalData.userInfo?.id
|
||||
const [config, purchaseRes] = await Promise.all([
|
||||
accessManager.fetchLatestConfig(),
|
||||
userId ? app.request(`/api/miniprogram/user/purchase-status?userId=${userId}`) : Promise.resolve(null)
|
||||
])
|
||||
const sectionPrice = config.prices?.section ?? this.data.sectionPrice ?? 1
|
||||
const fullBookPrice = config.prices?.fullbook ?? this.data.fullBookPrice ?? 9.9
|
||||
const userDiscount = config.userDiscount ?? 5
|
||||
const hasReferral = !!(wx.getStorageSync('referral_code') || purchaseRes?.data?.hasReferrer)
|
||||
const hasReferralDiscount = hasReferral && userDiscount > 0
|
||||
const displaySectionPrice = hasReferralDiscount
|
||||
? Math.round(sectionPrice * (1 - userDiscount / 100) * 100) / 100
|
||||
: sectionPrice
|
||||
const displayFullBookPrice = hasReferralDiscount
|
||||
? Math.round(fullBookPrice * (1 - userDiscount / 100) * 100) / 100
|
||||
: fullBookPrice
|
||||
this.setData({
|
||||
freeIds: config.freeChapters,
|
||||
sectionPrice,
|
||||
fullBookPrice,
|
||||
userDiscount,
|
||||
hasReferralDiscount,
|
||||
showDiscountHint: userDiscount > 0,
|
||||
displaySectionPrice,
|
||||
displayFullBookPrice,
|
||||
purchasedCount: purchaseRes?.data?.purchasedSections?.length ?? this.data.purchasedCount ?? 0
|
||||
})
|
||||
|
||||
// 重新判断权限
|
||||
const newAccessState = await accessManager.determineAccessState(
|
||||
|
||||
Reference in New Issue
Block a user