diff --git a/app/Anniversary.php b/app/Anniversary.php index fa29d48..02fd8e7 100644 --- a/app/Anniversary.php +++ b/app/Anniversary.php @@ -282,6 +282,9 @@ final class Anniversary 'is_leap' => 0, 'person_id' => $pid, 'person_name' => (string)($p['name'] ?? ''), + /* #87:头像给端上画"生日只读卡"用(key,端上拼 URL) */ + 'avatar' => (string)($p['avatar'] ?? ''), + 'avatar_color' => (string)($p['avatar_color'] ?? ''), 'source' => 'birthday_solar', 'born' => $solar, ]; @@ -299,6 +302,8 @@ final class Anniversary 'is_leap' => (int)($p['birthday_lunar_leap'] ?? 0), 'person_id' => $pid, 'person_name' => (string)($p['name'] ?? ''), + 'avatar' => (string)($p['avatar'] ?? ''), + 'avatar_color' => (string)($p['avatar_color'] ?? ''), 'source' => 'birthday_lunar', 'born' => $lunar, ]; @@ -644,6 +649,29 @@ final class Anniversary 在这里一次性算好,别让每个渲染点各自去查一遍配置。 */ 'icon' => self::iconOf($familyId, (string)($a['kind'] ?? '')), 'person_id' => (int)($a['person_id'] ?? 0), + /* 🔴 #87(用户 2026-11-05):「如果这个纪念日来自生日… + 点击之后,显示这个人的头像、姓名,以及生日的『日』和日期就可以了。」 + + ⇒ 端上要画头像,所以这里必须带出来。 + 原来 `birthdays()` 算出来的 `person_name` 在这里**被丢掉了** + —— `occurrences()` 逐个字段挑着抄,漏了它。 + ⇒ 一并补 `person_name` + `avatar` + `avatar_color`。 + `avatar` 是 key(如 `avatars/2026xxx.jpg`), + 端上自己拼完整 URL(与任务负责人头像同一口径)。 + ⚠️ `all()` 里自建纪念日那批的 `person_name` 是 `''` + (自建纪念日可能关联多人、也可能不关联人), + 这里原样透传即可,端上"名字为空就不画头像"。 */ + 'person_name' => (string)($a['person_name'] ?? ''), + 'avatar' => (string)($a['avatar'] ?? ''), + 'avatar_color' => (string)($a['avatar_color'] ?? ''), + /* 「日」—— 用户明确要"生日的『日』"。 + 直接给整数,端上做"大字显示"(如「17」)。 + ⚠️ 用 `$a['day']` 而不是从 `$date` 里截: + `$a['day']` 是**用户填的那一天**(农历生日时是农历日), + `$date` 是换算出来的公历日期 —— 两者在农历生日上不同, + 用户要看的是"生日那天"(农历初五就该显示 5)。 */ + 'day' => (int)($a['day'] ?? 0), + 'month' => (int)($a['month'] ?? 0), 'source' => (string)($a['source'] ?? 'custom'), 'note' => (string)($a['note'] ?? ''), 'id' => (int)($a['id'] ?? 0),