From 7844f5af457ff3b7d3f8eeac8799e8d281e635a1 Mon Sep 17 00:00:00 2001
From: shinnosuke <tantao@1hoper.com>
Date: 星期一, 21 九月 2026 11:04:46 +0800
Subject: [PATCH] 更新....

---
 talent-card-server/src/main/java/com/talentcard/server/service/DependentCardApplyAdminService.java |   26 +++++++++++++++++++++++---
 1 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/talent-card-server/src/main/java/com/talentcard/server/service/DependentCardApplyAdminService.java b/talent-card-server/src/main/java/com/talentcard/server/service/DependentCardApplyAdminService.java
index bca18a0..795c5c3 100644
--- a/talent-card-server/src/main/java/com/talentcard/server/service/DependentCardApplyAdminService.java
+++ b/talent-card-server/src/main/java/com/talentcard/server/service/DependentCardApplyAdminService.java
@@ -2,6 +2,7 @@
 
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -230,7 +231,7 @@
 				       c.valid_start as validStart,
 				       c.valid_end as validEnd,
 				       c.issue_time as issueTime,
-				       c.family_card_limit as familyCardLimit,
+				       c.card_level as cardLevel,
 				       (select count(*) from dependent_card_apply approved
 				          where approved.deleted = 0
 				            and approved.talent_card_id = a.talent_card_id
@@ -242,7 +243,26 @@
 				where a.id = ? and a.deleted = 0
 				limit 1
 				""", apply.getId());
-		return rows.isEmpty() ? Map.of() : rows.get(0);
+		if (rows.isEmpty()) {
+			return Map.of();
+		}
+		Map<String, Object> extra = new LinkedHashMap<>(rows.get(0));
+		// 名额按真正生效的规则算:审核/申请侧也是这个口径。之前直接读 talent_card.family_card_limit,
+		// 那一列在库里基本是 0(按卡配置那条路没启用),页面就成了「1/0」。
+		extra.put("familyCardLimit", familyCardLimit(string(extra.get("cardLevel"))));
+		return extra;
+	}
+
+	/**
+	 * 家属附属卡名额:卓越人才卡 2 个({@link #MAX_FAMILY_CARD_COUNT}),其它等级没有名额。
+	 * 展示与限流都用这一个口径,避免「页面显示 0、实际能绑 2 个」。
+	 */
+	private int familyCardLimit(String cardLevel) {
+		return cardLevel != null && ELITE_CARD_LEVEL.equals(cardLevel.trim()) ? MAX_FAMILY_CARD_COUNT : 0;
+	}
+
+	private String string(Object value) {
+		return value == null ? "" : String.valueOf(value).trim();
 	}
 
 	private void ensureApprovalSlot(DependentCardApply apply) {
@@ -257,7 +277,7 @@
 //		if (configuredLimit == null || configuredLimit <= 0) {
 //			throw new BusinessException(ErrorCode.CONFLICT, "该主卡未配置家属附属卡名额");
 //		}
-		int familyCardLimit = Math.min(2, MAX_FAMILY_CARD_COUNT);
+		int familyCardLimit = familyCardLimit(ownerCard.getCardLevel());
 		long approvedCount = mapper.selectCount(
 				Wrappers.<DependentCardApply>lambdaQuery()
 						.eq(DependentCardApply::getTalentCardId, apply.getTalentCardId())

--
Gitblit v1.7.1