Procházet zdrojové kódy

docs: add activity share referral design spec

iwt před 5 dny
rodič
revize
e11d5c9698

+ 71 - 0
docs/superpowers/specs/2026-10-07-activity-share-referral-design.md

@@ -0,0 +1,71 @@
+# 活动分享推广与创建活动权限
+
+**日期**: 2026-10-07
+**状态**: 设计完成,待实现
+
+---
+
+## 需求概述
+
+小程序端支持:
+1. 规划师(activity_provider,审核通过)可创建活动
+2. 分享活动带推荐人(海报 + 分享卡均携带 refCode)
+3. 新用户通过分享链接/小程序码进入时自动绑定推荐人
+
+---
+
+## 现有基础
+
+| 功能 | 现有状态 |
+|------|----------|
+| 活动详情页"生成海报"按钮 | ✅ 已实现,调用 `getShareQrCode`,scene=`id=X&ref=code` |
+| `share-mixin.js` 获取/绑定推荐码 | ✅ 已实现,`onLoad` 捕获 `refCode`/`inviteCode` |
+| App.vue 捕获 `?refCode=` 参数 | ✅ 已实现,`captureReferralParams` |
+| App.vue 解析小程序码 scene | ⚠️ 仅跳转邀请页,未绑定推荐人 |
+| 活动创建权限 | ⚠️ 仅 admin/activity_admin,未包含 activity_provider |
+| activity/index manage Tab 创建按钮 | ⚠️ 仅对 `isAdmin` 显示 |
+
+---
+
+## 变更清单
+
+### 后端(cfc-backend)
+
+**文件**: `controller/ActivityController.java`
+
+修改以下 5 个接口,新增 `activity_provider`(审核通过)判断:
+- `create` — 允许 activity_provider 创建活动
+- `update` — 允许 activity_provider 编辑自己的活动
+- `publish` — 允许 activity_provider 发布活动
+- `end` — 允许 activity_provider 结束自己的活动
+- `submit-review` — 允许 activity_provider 提交审核
+
+权限判断方式:查询 User 实体,检查 `vendorType == 'activity_provider'` 且 `activityProviderStatus == 'approved'`
+
+### 前端(cfc-frontend)
+
+**文件 1**: `App.vue` — `handleScene()`
+- 当 scene 中有 `ref=XXX` 时,已登录直接绑定推荐人,未登录存 storage 待登录后绑定
+- 不再仅跳转 `/pages/invite/join`
+
+**文件 2**: `pages/activity/index.vue` — `isAdmin` computed
+- 新增 `isActivityProvider` 计算属性,查询用户 vendorType/activityProviderStatus
+- 创建活动按钮改为 `v-if="isAdmin || isActivityProvider"`
+
+---
+
+## 方案选型
+
+采用**方案A(复用现有推广体系)**:
+- 分享码 = 用户个人 referralCode(已有字段)
+- 绑定机制 = `bindReferralIfNotSelf`(已有方法,幂等)
+- 海报生成 = 复用 `getShareQrCode`(已有接口)
+
+---
+
+## 不变更的内容
+
+- 活动详情页海报生成逻辑(已完整)
+- 活动列表页(无需分享入口)
+- 数据库迁移(activity_provider_status 列已存在)
+- 后端其他 Controller/Service