更新小程序开发文档,新增2026-03-03的最佳实践记录,优化个人中心类页面的卡片区边距规范,确保一致性与可用性。调整相关页面以反映最新设计稿,提升用户体验与功能一致性。

This commit is contained in:
Alex-larget
2026-03-04 19:06:06 +08:00
parent 7064f82126
commit 5a5f0087d2
66 changed files with 2555 additions and 1059 deletions

View File

@@ -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
}