Просмотр исходного кода

chore: auto bump version and changelog [skip ci]

iwt 3 месяцев назад
Родитель
Сommit
c4167e735e

+ 4 - 0
cfc-backend/src/main/java/com/etotem/cfc/entity/ActivityRegistration.java

@@ -15,6 +15,10 @@ public class ActivityRegistration implements Serializable {
     private Long activityId;
     private Long activityId;
     private Long childId;
     private Long childId;
     private Long userId;
     private Long userId;
+    /** 报名人姓名(手动输入时必填,从家庭成员选择时自动填入) */
+    private String registrantName;
+    /** 报名人联系方式 */
+    private String registrantPhone;
     private String status;
     private String status;
     private LocalDateTime registeredAt;
     private LocalDateTime registeredAt;
     private LocalDateTime approvedAt;
     private LocalDateTime approvedAt;

+ 1 - 0
cfc-backend/src/main/java/com/etotem/cfc/service/ActivityRegistrationService.java

@@ -12,6 +12,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;

+ 1 - 1
cfc-web/.last_build_commit

@@ -1 +1 @@
-71156ec4aa81b34875c14341650eed4c844fb4b2
+a7b5f49146e93c601a4b966bacdd1fac28570e56

+ 2 - 2
cfc-web/package-lock.json

@@ -1,12 +1,12 @@
 {
 {
   "name": "cfc-web",
   "name": "cfc-web",
-  "version": "1.0.670",
+  "version": "1.0.671",
   "lockfileVersion": 3,
   "lockfileVersion": 3,
   "requires": true,
   "requires": true,
   "packages": {
   "packages": {
     "": {
     "": {
       "name": "cfc-web",
       "name": "cfc-web",
-      "version": "1.0.670",
+      "version": "1.0.671",
       "dependencies": {
       "dependencies": {
         "@wangeditor/editor": "^5.1.23",
         "@wangeditor/editor": "^5.1.23",
         "@wangeditor/editor-for-vue": "^1.0.2",
         "@wangeditor/editor-for-vue": "^1.0.2",

+ 1 - 1
cfc-web/package.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "cfc-web",
   "name": "cfc-web",
-  "version": "1.0.671",
+  "version": "1.0.672",
   "private": true,
   "private": true,
   "scripts": {
   "scripts": {
     "dev": "vue-cli-service serve",
     "dev": "vue-cli-service serve",

+ 12 - 0
cfc-web/public/CHANGELOG-v1.0.md

@@ -4,6 +4,18 @@
 
 
 ---
 ---
 
 
+## v1.0.672 (2026-07-30)
+
+### 重构
+- 统一活动详情和商品详情页
+
+### 其他
+- 商品详情: 保留 discover-detail/product-detail(已含 mp-html),删除 discover/product-detail(死代码,641行)
+- 更新 15+ 个文件的引用路径
+- 清理 pages.json 移除 discover-detail 子包中的 activity-detail 注册
+- 
+
+
 ## v1.0.671 (2026-07-30)
 ## v1.0.671 (2026-07-30)
 
 
 ### 新功能
 ### 新功能

+ 13 - 1
cfc-web/public/CHANGELOG.md

@@ -1,6 +1,6 @@
 # 更新日志
 # 更新日志
 
 
-> 当前版本: v1.0.671
+> 当前版本: v1.0.672
 
 
 ## 历史版本
 ## 历史版本
 
 
@@ -8,6 +8,18 @@
 
 
 ---
 ---
 
 
+## v1.0.672 (2026-07-30)
+
+### 重构
+- 统一活动详情和商品详情页
+
+### 其他
+- 商品详情: 保留 discover-detail/product-detail(已含 mp-html),删除 discover/product-detail(死代码,641行)
+- 更新 15+ 个文件的引用路径
+- 清理 pages.json 移除 discover-detail 子包中的 activity-detail 注册
+- 
+
+
 ## v1.0.671 (2026-07-30)
 ## v1.0.671 (2026-07-30)
 
 
 ### 新功能
 ### 新功能

+ 80 - 0
docs/superpowers/specs/2026-07-31-activity-registration-form-design.md

@@ -0,0 +1,80 @@
+# 活动报名表单设计
+
+**日期:** 2026-07-31
+**状态:** 设计稿 v1
+
+---
+
+## 1. 概述
+
+在活动报名流程中增加报名表单,支持选择家庭成员和手动输入报名人信息,支持多人同时报名。
+
+## 2. 流程
+
+```
+活动详情页 → 点击"立即报名" → 弹出报名表单 Modal
+  → 加载家庭成员列表(/api/family/user/family-members)
+  → 勾选成员 / 添加手动输入
+  → 确认 → POST /api/activity/register(批量)→ 成功返回详情页
+```
+
+## 3. 后端改动
+
+### 3.1 表结构
+
+`activity_registrations` 表新增列:
+
+| 列名 | 类型 | 说明 |
+|------|------|------|
+| `registrant_name` | VARCHAR(100) | 报名人姓名 |
+| `registrant_phone` | VARCHAR(20) | 联系方式 |
+
+### 3.2 API 变更
+
+**`POST /api/activity/register`** 请求体改为:
+
+```json
+{
+  "id": 123,
+  "registrants": [
+    { "name": "张三", "phone": "13800138000", "childId": null },
+    { "name": "李四", "phone": "", "childId": 456 }
+  ]
+}
+```
+
+- `childId` 可选,从家庭成员中选择时传入,手动输入时为 null
+- `name` 必填
+- 校验:已报名的 childId 不能重复提交
+- 返回:`{ "registrationIds": [1,2], "count": 2 }`
+
+### 3.3 响应变化
+
+`my-registrations` 和活动报名列表增加返回 `registrantName`、`registrantPhone`。
+
+### 3.4 迁移
+
+`DatabaseInitializer.runMigrations()` 通过 `ensureColumn` 添加两列。
+
+## 4. 前端改动
+
+### 4.1 报名表单 Modal
+
+在 `activity-detail.vue` 中新增报名弹窗:
+
+- 加载家庭成员(`getFamilyMembers()`),区分孩子和家长
+- 每个成员显示复选框 + 姓名 + 手机号(可编辑)
+- "添加手动输入" 按钮 → 新增空白行
+- 底部显示:共 N 人,合计 ¥price × N
+- 确认按钮 → 调 API
+- 不允许重复选择同一个 childId
+
+### 4.2 报名流程
+
+- 点击"立即报名" → 打开报名弹窗
+- 填写完毕后确认 → 调用 `registerActivity()`
+- 成功后刷新报名状态回到详情页
+
+## 5. 付费活动
+
+报名弹窗底部显示总价 = 单价 × 人数。确认弹窗内容更新为:"共 N 人,需支付 ¥XXX,报名成功后不支持退费。是否继续?"