# 活动分享推广与创建活动权限 **日期**: 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