更新小程序开发文档,新增2026-03-03的最佳实践记录,优化个人中心类页面的卡片区边距规范,确保一致性与可用性。调整相关页面以反映最新设计稿,提升用户体验与功能一致性。
This commit is contained in:
@@ -18,45 +18,44 @@ class ChapterAccessManager {
|
||||
}
|
||||
|
||||
/**
|
||||
* 拉取最新配置(免费章节列表、价格等)
|
||||
* 拉取最新配置(价格等,免费以章节数据为准)
|
||||
*/
|
||||
async fetchLatestConfig() {
|
||||
try {
|
||||
const res = await app.request({ url: '/api/miniprogram/config', silent: true, timeout: 3000 })
|
||||
if (res.success && res.freeChapters) {
|
||||
if (res.success && res.prices) {
|
||||
return {
|
||||
freeChapters: res.freeChapters,
|
||||
prices: res.prices || { section: 1, fullbook: 9.9 }
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
console.warn('[AccessManager] 获取配置失败,使用默认配置:', e)
|
||||
}
|
||||
|
||||
// 默认配置
|
||||
return {
|
||||
freeChapters: ['preface', 'epilogue', '1.1', 'appendix-1', 'appendix-2', 'appendix-3'],
|
||||
prices: { section: 1, fullbook: 9.9 }
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断章节是否免费
|
||||
* 判断章节是否免费(统一:章节 isFree 或 price===0)
|
||||
*/
|
||||
isFreeChapter(sectionId, freeList) {
|
||||
return freeList.includes(sectionId)
|
||||
isFreeFromChapterData(chapterData) {
|
||||
if (!chapterData) return false
|
||||
if (chapterData.isFree === true) return true
|
||||
if (chapterData.price !== undefined && chapterData.price === 0) return true
|
||||
return false
|
||||
}
|
||||
|
||||
/**
|
||||
* 【核心方法】确定章节权限状态
|
||||
* 【核心方法】确定章节权限状态(统一以章节数据 isFree/price 为准)
|
||||
* @param {string} sectionId - 章节ID
|
||||
* @param {Array} freeList - 免费章节列表
|
||||
* @param {object} chapterData - 章节接口返回 { isFree, price, ... },免费 = isFree 或 price===0
|
||||
* @returns {Promise<string>} accessState
|
||||
*/
|
||||
async determineAccessState(sectionId, freeList) {
|
||||
async determineAccessState(sectionId, chapterData) {
|
||||
try {
|
||||
// 1. 检查是否免费
|
||||
if (this.isFreeChapter(sectionId, freeList)) {
|
||||
// 1. 检查是否免费(统一:章节 isFree 或 price===0)
|
||||
if (this.isFreeFromChapterData(chapterData)) {
|
||||
console.log('[AccessManager] 免费章节:', sectionId)
|
||||
return this.accessStates.FREE
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user