feat: 小程序阅读记录与资料链路、管理端用户规则、API/VIP/推荐与运营脚本
- miniprogram: reading-records、imageUrl/mpNavigate、多页资料与 VIP 展示调整 - soul-admin: Users/Settings/UserDetailModal、dist 构建产物更新 - soul-api: user/vip/referral/ckb/db、MBTI 头像管理、user_rule_completion、迁移 SQL - .cursor: karuo-party 与飞书文档;.gitignore 忽略 .tmp_skill_bundle Made-with: Cursor
This commit is contained in:
@@ -12,16 +12,16 @@ Page({
|
||||
originalPrice: 6980,
|
||||
/* 按 premium_membership_landing_v1 设计稿 */
|
||||
contentRights: [
|
||||
{ title: '匹配伙伴', desc: '精准匹配创业伙伴', icon: 'users' },
|
||||
{ title: '派对专属', desc: '创业派对房专享', icon: 'star' },
|
||||
{ title: '老板排行', desc: '创业老板排行榜', icon: 'bar-chart' },
|
||||
{ title: '轮流置顶', desc: '首页获客曝光位', icon: 'arrow-up' }
|
||||
{ key: 'match', title: '匹配伙伴', desc: '精准匹配创业伙伴', icon: 'users' },
|
||||
{ key: 'party', title: '派对专属', desc: '创业派对房专享', icon: 'star' },
|
||||
{ key: 'rank', title: '老板排行', desc: '创业老板排行榜', icon: 'bar-chart' },
|
||||
{ key: 'top', title: '轮流置顶', desc: '首页获客曝光位', icon: 'chevron-up' }
|
||||
],
|
||||
socialRights: [
|
||||
{ title: '案例宝库', desc: '100+赚钱案例库', icon: 'book-open' },
|
||||
{ title: '全书解锁', desc: '365天全案精读', icon: 'folder' },
|
||||
{ title: '每日总结', desc: 'AI每日精华推送', icon: 'lightbulb' },
|
||||
{ title: '获取客资', desc: '文章@你即可获客', icon: 'link' }
|
||||
{ key: 'cases', title: '案例宝库', desc: '100+赚钱案例库', icon: 'book-open' },
|
||||
{ key: 'fullbook', title: '全书解锁', desc: '365天全案精读', icon: 'folder' },
|
||||
{ key: 'daily', title: '每日总结', desc: 'AI每日精华推送', icon: 'lightbulb' },
|
||||
{ key: 'leads', title: '获取客资', desc: '文章@你即可获客', icon: 'link' }
|
||||
],
|
||||
purchasing: false
|
||||
},
|
||||
@@ -85,7 +85,7 @@ Page({
|
||||
return
|
||||
}
|
||||
}
|
||||
// VIP 购买后才引导完善资料:购买前不拦截,购买成功后跳转 profile-edit
|
||||
// VIP 购买成功后再跳转资料页:购买前不拦截
|
||||
this.setData({ purchasing: true })
|
||||
const amount = this.data.price
|
||||
try {
|
||||
@@ -163,9 +163,9 @@ Page({
|
||||
// 超级个体购买后:弹窗提示,强制跳转资料编辑页
|
||||
wx.hideLoading()
|
||||
wx.showModal({
|
||||
title: '完善资料',
|
||||
content: '为了更好为您服务,请填写好资料',
|
||||
confirmText: '去完善',
|
||||
title: '补全 VIP 资料',
|
||||
content: '补全资料后,找伙伴、提现与 VIP 群对接会更顺畅;手机号等为必填项。',
|
||||
confirmText: '去填写',
|
||||
showCancel: false,
|
||||
success: () => {
|
||||
wx.redirectTo({ url: '/pages/profile-edit/profile-edit?from=vip' })
|
||||
@@ -179,6 +179,33 @@ Page({
|
||||
|
||||
goBack() { getApp().goBackOrToHome() },
|
||||
|
||||
/**
|
||||
* 权益卡片跳转:会员权利 / 派对权利 统一点击进对应能力页
|
||||
*/
|
||||
onBenefitTap(e) {
|
||||
const key = e.currentTarget.dataset.key
|
||||
if (!key) return
|
||||
trackClick('vip', 'benefit_tap', key)
|
||||
const tab = (path) => {
|
||||
wx.switchTab({ url: path })
|
||||
}
|
||||
const nav = (path) => {
|
||||
wx.navigateTo({ url: path })
|
||||
}
|
||||
const routes = {
|
||||
match: () => tab('/pages/match/match'),
|
||||
party: () => nav('/pages/mentors/mentors'),
|
||||
rank: () => tab('/pages/index/index'),
|
||||
top: () => tab('/pages/index/index'),
|
||||
cases: () => tab('/pages/chapters/chapters'),
|
||||
fullbook: () => tab('/pages/chapters/chapters'),
|
||||
daily: () => tab('/pages/chapters/chapters'),
|
||||
leads: () => nav('/pages/profile-edit/profile-edit')
|
||||
}
|
||||
const fn = routes[key]
|
||||
if (typeof fn === 'function') fn()
|
||||
},
|
||||
|
||||
onShareAppMessage() {
|
||||
const ref = app.getMyReferralCode()
|
||||
return {
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
<text class="rights-dot rights-dot-teal"></text>
|
||||
<text class="rights-col-title">会员权利</text>
|
||||
</view>
|
||||
<view class="benefit-card" wx:for="{{contentRights}}" wx:key="title">
|
||||
<view class="benefit-card benefit-card-tap" wx:for="{{contentRights}}" wx:key="key" bindtap="onBenefitTap" data-key="{{item.key}}" hover-class="benefit-card-hover">
|
||||
<icon name="{{item.icon || 'check'}}" size="40" color="#00CED1" customClass="benefit-icon"></icon>
|
||||
<view class="benefit-info">
|
||||
<text class="benefit-title">{{item.title}}</text>
|
||||
@@ -34,7 +34,7 @@
|
||||
<text class="rights-dot rights-dot-gold"></text>
|
||||
<text class="rights-col-title rights-col-title-gold">派对权利</text>
|
||||
</view>
|
||||
<view class="benefit-card" wx:for="{{socialRights}}" wx:key="title">
|
||||
<view class="benefit-card benefit-card-tap" wx:for="{{socialRights}}" wx:key="key" bindtap="onBenefitTap" data-key="{{item.key}}" hover-class="benefit-card-hover">
|
||||
<icon name="{{item.icon || 'check'}}" size="40" color="#FFD700" customClass="benefit-icon benefit-icon-gold"></icon>
|
||||
<view class="benefit-info">
|
||||
<text class="benefit-title">{{item.title}}</text>
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
.rights-col-title { font-size: 24rpx; font-weight: bold; color: #4FD1C5; letter-spacing: 2rpx; }
|
||||
.rights-col-title-gold { color: #FFBD2E; }
|
||||
.benefit-card { display: flex; flex-direction: column; gap: 16rpx; padding: 24rpx; margin-bottom: 16rpx; background: #141414; border: 1rpx solid rgba(255,255,255,0.05); border-radius: 24rpx; }
|
||||
.benefit-card-tap { transition: opacity 0.15s; }
|
||||
.benefit-card-hover { opacity: 0.88; background: #1a1a1a; }
|
||||
.benefit-icon { font-size: 36rpx; color: #4FD1C5; }
|
||||
.benefit-icon-gold { color: #FFBD2E; }
|
||||
.benefit-info { display: flex; flex-direction: column; }
|
||||
|
||||
Reference in New Issue
Block a user