This commit is contained in:
Alex-larget
2026-03-30 18:09:29 +08:00
parent fd0151813a
commit 07c26281ff
19 changed files with 1259 additions and 2767 deletions

View File

@@ -1,15 +1,51 @@
/**
* 从 mpConfig.mpUi.pagePopupItems 按 pagePath + key 取文案(管理端 CRUD
* 兼容旧版 mpUi.memberDetailPage / readPage 字段。
* 云端未配置或 content 为空时,使用本文件内写死兜底(与种子文案一致)。
*
* 当前代码显式引用的键(与 soul-admin 默认种子 / db.defaultMpUi 一致,勿改 key 除非双端同步):
* - MEMBER_PATH unlockIntroTitle, unlockIntroBody → member-detail.js _showUnlockIntroThenLogin
* - READ_PATH beforeLoginHint, singlePageTitle, singlePagePaywallHint → read.js onLoad
* - READ_PATH global* → app.js getGlobalPopupContent与 pagePopupItems 同页路径存全局键)
*/
const MEMBER_PATH = '/pages/member-detail/member-detail'
const READ_PATH = '/pages/read/read'
/** 阅读页 mpUi 兜底pagePopupItems / readPage 均无或为空时) */
const READ_PAGE_FALLBACK = {
beforeLoginHint: '试读进度与下方百分比以后台配置为准;登录后可购买解锁全文。',
singlePageTitle: '解锁完整内容',
singlePagePaywallHint:
'当前为朋友圈单页预览,无法在此登录或付款。请点击底部「前往小程序」进入完整版后再解锁本章。',
}
/** 成员详情解锁说明兜底 */
const MEMBER_DETAIL_FALLBACK = {
unlockIntroTitle: '解锁与链接说明',
unlockIntroBody:
'「链接」用于提交留资,由对方通过获客计划跟进;「解锁」用于复制手机/微信号后自行添加好友。\n\n请确认已了解后再登录。',
}
/**
* 全局弹窗键与 app.js showModal 兜底一致pagePath 仍为 READ_PATHkey 以 global 开头)
*/
const GLOBAL_POPUP_FALLBACK = {
globalSinglePageAuthTitle: '请打开完整小程序',
globalSinglePageAuthBody:
'当前是朋友圈预览,无法在这里登录或付款。请先点击屏幕底部「前往小程序」,进入完整版后再解锁本章。',
globalAvatarGuideTitle: '设置头像与昵称',
globalAvatarGuideBody: '头像与昵称会出现在名片与匹配卡片上,方便伙伴认出你。',
globalVipProfileHintTitle: '补全对外展示信息',
globalVipProfileHintBody: 'VIP 名片与派对场景会展示头像与昵称,补全后对方更容易认出你。',
globalVipPhoneTitle: '补全手机号',
globalVipPhoneBody: '手机号用于找伙伴、提现验证与重要通知,仅本人可见。',
globalVipWechatOptionalTitle: '补全微信号(可选)',
globalVipWechatOptionalBody: '填写微信号后,对方在允许的场景下能更快加到你;不填也可继续使用。',
globalAppUpdateTitle: '更新提示',
globalAppUpdateBody: '新版本已准备好,重启后即可使用',
}
function getList(app) {
const mpUi = app.globalData.configCache && app.globalData.configCache.mpConfig
? app.globalData.configCache.mpConfig.mpUi
@@ -42,9 +78,18 @@ function getReadPageContent(app, key) {
const rp = (app.globalData.configCache && app.globalData.configCache.mpConfig &&
app.globalData.configCache.mpConfig.mpUi &&
app.globalData.configCache.mpConfig.mpUi.readPage) || {}
if (key === 'beforeLoginHint') return String(rp.beforeLoginHint || '').trim()
if (key === 'singlePageTitle') return String(rp.singlePageTitle || '').trim()
if (key === 'singlePagePaywallHint') return String(rp.singlePagePaywallHint || '').trim()
if (key === 'beforeLoginHint') {
const s = String(rp.beforeLoginHint || '').trim()
return s || READ_PAGE_FALLBACK.beforeLoginHint
}
if (key === 'singlePageTitle') {
const s = String(rp.singlePageTitle || '').trim()
return s || READ_PAGE_FALLBACK.singlePageTitle
}
if (key === 'singlePagePaywallHint') {
const s = String(rp.singlePagePaywallHint || '').trim()
return s || READ_PAGE_FALLBACK.singlePagePaywallHint
}
return ''
}
@@ -54,15 +99,31 @@ function getMemberDetailContent(app, key) {
const md = (app.globalData.configCache && app.globalData.configCache.mpConfig &&
app.globalData.configCache.mpConfig.mpUi &&
app.globalData.configCache.mpConfig.mpUi.memberDetailPage) || {}
if (key === 'unlockIntroTitle') return String(md.unlockIntroTitle || '').trim()
if (key === 'unlockIntroBody') return String(md.unlockIntroBody || '').trim()
if (key === 'unlockIntroTitle') {
const s = String(md.unlockIntroTitle || '').trim()
return s || MEMBER_DETAIL_FALLBACK.unlockIntroTitle
}
if (key === 'unlockIntroBody') {
const s = String(md.unlockIntroBody || '').trim()
return s || MEMBER_DETAIL_FALLBACK.unlockIntroBody
}
return ''
}
/**
* 全局弹窗文案:与阅读页共用 pagePath后台种子挂在 /pages/read/readkey 为 global* 开头
*/
function getGlobalPopupContent(app, key) {
const v = getPagePopupContent(app, READ_PATH, key)
if (v) return v
return GLOBAL_POPUP_FALLBACK[key] || ''
}
module.exports = {
getPagePopupContent,
getReadPageContent,
getMemberDetailContent,
getGlobalPopupContent,
MEMBER_PATH,
READ_PATH,
}