|
|
@@ -81,13 +81,12 @@ public class EnergyController {
|
|
|
return Result.success(result);
|
|
|
}
|
|
|
|
|
|
- // 个人沙盘(默认):需通过 SELF_CHECK 关卡
|
|
|
- boolean personalPassed = unlockGateService.isPersonalSelfCheckPassed(userId);
|
|
|
- if (!personalPassed) {
|
|
|
- UnlockGate gate = unlockGateService.getGateByType("SELF_CHECK");
|
|
|
+ // 个人沙盘(默认):家庭级判据 —— 任一成员做过五维自检(书稿"测量先行")
|
|
|
+ boolean familySelfCheckPassed = unlockGateService.hasFamilySelfCheck(user.getFamilyId());
|
|
|
+ if (!familySelfCheckPassed) {
|
|
|
result.put("locked", true);
|
|
|
result.put("view", "personal");
|
|
|
- result.put("gate", gate != null ? gateToMap(gate) : null);
|
|
|
+ result.put("gate", selfCheckGateOrFallback());
|
|
|
return Result.success(result);
|
|
|
}
|
|
|
|
|
|
@@ -116,6 +115,24 @@ public class EnergyController {
|
|
|
return m;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 返回 SELF_CHECK 关卡信息:优先取配置的 unlock_gates,无种子配置时返回内置默认
|
|
|
+ * (保证前端 GateLock 始终能渲染引导按钮,不依赖管理端种子数据)
|
|
|
+ */
|
|
|
+ private Map<String, Object> selfCheckGateOrFallback() {
|
|
|
+ UnlockGate gate = unlockGateService.getGateByType("SELF_CHECK");
|
|
|
+ if (gate != null) {
|
|
|
+ return gateToMap(gate);
|
|
|
+ }
|
|
|
+ Map<String, Object> m = new HashMap<>();
|
|
|
+ m.put("id", null);
|
|
|
+ m.put("gateType", "SELF_CHECK");
|
|
|
+ m.put("name", "五维基础能量检测");
|
|
|
+ m.put("description", "检查家庭的能量维度值,解锁能量沙盘");
|
|
|
+ m.put("icon", "📊");
|
|
|
+ return m;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 获取孩子五维能量概览
|
|
|
*/
|