Bläddra i källkod

chore: auto bump version and changelog [skip ci]

iwt 1 månad sedan
förälder
incheckning
5bf218fe3c

+ 6 - 1
cfc-backend/src/main/java/com/etotem/cfc/service/CouponService.java

@@ -195,9 +195,14 @@ public class CouponService {
                 new LambdaQueryWrapper<Coupon>()
                         .eq(Coupon::getGrantType, "JOIN")
                         .eq(Coupon::getGrantLevelCode, levelCode));
+        if (coupons.isEmpty()) {
+            log.warn("未找到 JOIN 赠券模板: userId={}, levelCode={}", userId, levelCode);
+            return;
+        }
         for (Coupon c : coupons) {
-            grant(userId, c.getId(), "JOIN", null, source);
+            grant(userId, c.getId(), "JOIN", "JOIN", source);
         }
+        log.info("发放 JOIN 赠券完成: userId={}, levelCode={}, count={}", userId, levelCode, coupons.size());
     }
 
     /** POPULATION: 新增家庭成员时发放(目标账户由调用方决定) */

+ 1 - 1
cfc-web/.last_build_commit

@@ -1 +1 @@
-adc0c733da0f0cdacd9e71b84745a72693a42c6f
+175cd934143466cf49aea990ad1239dfaeb86f5f

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

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

+ 1 - 1
cfc-web/package.json

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

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

@@ -4,6 +4,12 @@
 
 ---
 
+## v1.0.916 (2026-08-09)
+
+### Bug 修复
+- 健康报告页修复 - memberId兜底、移除自定义导航、指标状态标签、文案优化
+
+
 ## v1.0.915 (2026-08-09)
 
 ### 新功能

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

@@ -1,6 +1,6 @@
 # 更新日志
 
-> 当前版本: v1.0.915
+> 当前版本: v1.0.916
 
 ## 历史版本
 
@@ -8,6 +8,12 @@
 
 ---
 
+## v1.0.916 (2026-08-09)
+
+### Bug 修复
+- 健康报告页修复 - memberId兜底、移除自定义导航、指标状态标签、文案优化
+
+
 ## v1.0.915 (2026-08-09)
 
 ### 新功能

+ 59 - 0
docs/superpowers/specs/2026-08-09-coupon-fix-plan.md

@@ -0,0 +1,59 @@
+# 优惠券系统修复计划
+
+**日期**: 2026-08-09
+**问题**: 开通会员赠券未收到 + 缺少"我的优惠券"管理入口
+
+---
+
+## 任务清单(按优先级)
+
+### T1: 修复 JOIN 赠券发放逻辑(后端)
+- 文件: `cfc-backend/src/main/java/com/etotem/cfc/service/CouponService.java`
+- 改动:
+  1. `grantJoinCoupons()` 增加日志(查出模板数量,发券失败时详细日志)
+  2. `grant()` 中 period=null 改为写入固定 period="JOIN",使 uk_grant 生效防重
+  3. 新增 `resendUnreceivedJoinCoupons(userId, levelCode)` 补偿方法
+
+### T2: 修复会员支付回调补发逻辑(后端)
+- 文件: `cfc-backend/src/main/java/com/etotem/cfc/service/MembershipService.java`
+- 改动:
+  1. `activateMembership()` 中记录是否成功发券(新增字段标记到 order 或 Membership)
+  2. `processPaymentCallback()` 中 membershipCount>0 时检查发券记录,未发则补发
+
+### T3: 新增"我的优惠券"接口(后端)
+- 文件: `cfc-backend/src/main/java/com/etotem/cfc/controller/CouponController.java`
+- 文件: `cfc-backend/src/main/java/com/etotem/cfc/service/CouponService.java`
+- 改动:
+  1. `CouponService` 新增 `listMyCoupons(Long userId)` — user_coupon LEFT JOIN coupon,返回含 status/receivedAt/usedAt/userCouponId
+  2. `CouponController` 新增 `GET /api/coupon/my` 端点
+
+### T4: 修复前端 coupons.vue
+- 文件: `cfc-frontend/pages/profile-extra/coupons.vue`
+- 改动:
+  1. 改调新接口 `/api/coupon/my`(而非 `/api/coupon/list`)
+  2. 数据结构适配(coupon.status 来自 user_coupon.status,不是 Coupon 模板)
+  3. 每个 tab 正确过滤(AVAILABLE/USED/EXPIRED)
+
+### T5: 新增前端 API 函数
+- 文件: `cfc-frontend/utils/api.js`
+- 改动: 新增 `getMyCoupons()` 函数
+
+### T6: 修复用券链路(pay.vue 传 userCouponId)
+- 文件: `cfc-frontend/pages/membership/pay.vue`
+- 改动: 选券后传 userCouponId 而非模板 id
+
+### T7: 数据库种子 — 添加 JOIN 券模板
+- 文件: `cfc-backend/src/main/resources/schema.sql`
+- 改动: 在 coupon 表定义后追加 JOIN 券种子数据
+- 文件: `cfc-backend/src/main/java/com/etotem/cfc/config/DatabaseInitializer.java`
+- 改动: 新增迁移 204 插入 JOIN 券模板(如不存在)
+
+---
+
+## 验收标准
+
+1. 数据库中 coupon 表存在 grant_type='JOIN' 的模板(至少 3 条:FREE/FAMILY/PREMIUM)
+2. 开通会员支付成功后,CouponGrantLog 表出现对应记录
+3. 小程序"我的"→"我的优惠券"页显示正确数量(可使用/已使用/已过期)
+4. 重复支付回调不会重复发券
+5. `mvn clean compile` 通过后无编译错误