# 用户使用流程图 — 活动管理 ```mermaid flowchart TD %% ============ 颜色定义 ============ classDef actor fill:#e1f5fe,stroke:#0288d1,stroke-width:2px classDef action fill:#fff3e0,stroke:#f57c00,stroke-width:1px classDef system fill:#e8f5e9,stroke:#388e3c,stroke-width:1px classDef decision fill:#fce4ec,stroke:#d32f2f,stroke-width:1px classDef role fill:#f3e5f5,stroke:#7b1fa2,stroke-width:1px classDef endpoint fill:#f5f5f5,stroke:#616161,stroke-width:1px subgraph 活动创建(活动管理员) A1(("活动管理员")) --> A2[创建活动 /create] A2 --> A3[设置基本信息:标题/描述/封面/维度] A3 --> A4[设置活动类型 offline/online/campaign] A4 --> A5[设置时间地点:开始/结束/位置] A5 --> A6[设置报名规则] A6 --> A7{是否限制人数?} A7 -->|是| A8[设置最大人数 maxParticipants] A7 -->|否| A9[不限制人数] A8 --> A10[设置价格体系] A9 --> A10 A10 --> A11[普通价 price] A11 --> A12[会员价 memberPrice] A12 --> A13[签到积分 checkinPoints] A13 --> A14[设置可见范围 public/restricted/member] A14 --> A15[保存草稿] end subgraph 活动审核流程 A15 --> B1[提交审核 /submit-review] B1 --> B2{管理员审核 /audit} B2 -->|通过| B3[活动发布] B2 -->|驳回| B4[查看驳回原因] B4 --> B5[编辑后重新提交] B5 --> B1 end subgraph 发布与下架 B3 --> C1[发布活动 /publish] C1 --> C2[活动上线] C2 --> C3{活动到期或结束操作} C3 -->|手动结束| C4[结束活动 /end] C3 -->|截止时间到| C4 C4 --> C5[活动结束
不可再报名] end subgraph 用户浏览与报名 C2 --> D1(("家长")) --> D2[浏览活动列表 /list] D2 --> D3[查看详情 /detail] D3 --> D4{报名条件检查} D4 -->|人数已满| D5[提示已满员] D4 -->|已截止| D6[提示报名结束] D4 -->|可报名| D7[选择参加的孩子 childId] D7 --> D8[填写参加人身份信息] D8 --> D9{用户会员等级} D9 -->|普通用户| D10[普通价 price] D9 -->|会员用户| D11[会员价 memberPrice] D10 --> D12[提交报名 /register] D11 --> D12 D12 --> D13{报名需审核?} D13 -->|是| D14[等待管理员审批] D13 -->|否| D15[报名成功] D14 --> D16{管理员操作} D16 -->|通过| D15 D16 -->|拒绝| D17[报名被驳回] end subgraph 报名管理 D15 --> E1[我的报名 /my-registrations] E1 --> E2{活动开始前?} E2 -->|是| E3[取消报名 /cancel-registration] E2 -->|否| E4[等待签到] end subgraph 签到 E4 --> F1[签到 /checkin] F1 --> F2{需审核签到?} F2 -->|是| F3[等待审核] F2 -->|否| F4[签到成功
发放积分] end subgraph 活动反馈(活动结束后) C5 --> G1[已签到参与者] G1 --> G2[提交活动反馈] end subgraph 管理员报名管理 D14 --> H1[报名列表 /admin/activity/registration/list] H1 --> H2[审批 /approve] H2 --> H3[拒绝 /reject] end subgraph 管理后台 B2 --> I1[活动列表 /admin/activity/list] I1 --> I2[活动审核 /review] I2 --> I3[撤回 /withdraw] I3 --> I4[转草稿 /re-draft] end R1(("🔧 活动管理员
role=activity_admin")):::actor R2(("👤 家长")):::actor R3(("👶 孩子")):::role R4(("🔧 管理员")):::role A1 -.- R1 D1 -.- R2 D7 -.- R3 B2 -.- R4 ``` ## 业务规则 | 规则 | 说明 | |------|------| | **角色** | 活动由 `activity_admin`(活动管理员)管理,非规划师。`admin` 也可管理。 | | **替他人报名** | 家长可替多个孩子报名,每个报名需指定 childId | | **身份信息** | 报名时需填写参加人的信息(孩子信息) | | **价格分层** | `price` 普通价 vs `memberPrice` 会员价,不同级别用户不同价格 | | **人数限制** | `maxParticipants`=0/null 表示不限制人数 | | **报名截止** | `endTime` 即报名截止时间 | | **自动截止** | 达到 `maxParticipants` 或超过 `endTime` 自动停止报名 | | **签到** | 活动签到 `checkin`,可设置签到审核和签到积分 `checkinPoints` | | **反馈** | 活动结束后,已签到的参与者可提交反馈 | ## 端点明细 | 端点 | 控制器 | 说明 | |------|--------|------| | `/api/activity/list` | ActivityController | 活动列表(支持维度过滤+分页) | | `/api/activity/detail` | ActivityController | 活动详情 | | `/api/activity/create` | ActivityController | 创建活动(需admin/activity_admin) | | `/api/activity/update` | ActivityController | 修改活动(需admin/activity_admin) | | `/api/activity/publish` | ActivityController | 发布活动 | | `/api/activity/end` | ActivityController | 结束活动 | | `/api/activity/register` | ActivityController | 报名(activityId + childId) | | `/api/activity/cancel-registration` | ActivityController | 取消报名 | | `/api/activity/my-registrations` | ActivityController | 我的报名列表 | | `/api/activity/checkin` | ActivityController | 签到 | | `/api/admin/activity/list` | AdminActivityController | 管理员活动列表 | | `/api/admin/activity/detail` | AdminActivityController | 活动详情 | | `/api/admin/activity/review` | AdminActivityController | 审核 | | `/api/admin/activity/submit-review` | AdminActivityController | 提交审核 | | `/api/admin/activity/audit` | AdminActivityController | 审批(通过/驳回) | | `/api/admin/activity/withdraw` | AdminActivityController | 撤回审核 | | `/api/admin/activity/re-draft` | AdminActivityController | 转草稿 | | `/api/admin/activity/registration/list` | AdminActivityRegistrationController | 报名列表 | | `/api/admin/activity/registration/approve` | AdminActivityRegistrationController | 审批报名通过 | | `/api/admin/activity/registration/reject` | AdminActivityRegistrationController | 拒绝报名 |