diff --git a/app/Http/Controllers/DailySignInController.php b/app/Http/Controllers/DailySignInController.php index 32074a3..85b7a13 100644 --- a/app/Http/Controllers/DailySignInController.php +++ b/app/Http/Controllers/DailySignInController.php @@ -121,6 +121,10 @@ class DailySignInController extends Controller $presencePayload = $this->presenceService->build($freshUser); $this->refreshOnlinePresence($freshUser, $presencePayload); + if ($roomId !== null && $this->chatState->isUserInRoom($roomId, $freshUser->username)) { + $this->broadcastSignInNotice($freshUser, $refreshedSignIn, $roomId, $currentStreakDays); + } + return response()->json([ 'status' => 'success', 'message' => '补签成功,'.$refreshedSignIn?->sign_in_date?->format('Y-m-d').' 已补签,当前连续签到 '.$currentStreakDays.' 天。', @@ -145,14 +149,14 @@ class DailySignInController extends Controller /** * 方法功能:向当前聊天室广播签到成功通知。 */ - private function broadcastSignInNotice(User $user, DailySignIn $dailySignIn, int $roomId): void + private function broadcastSignInNotice(User $user, DailySignIn $dailySignIn, int $roomId, ?int $currentStreakDays = null): void { $message = [ 'id' => $this->chatState->nextMessageId($roomId), 'room_id' => $roomId, 'from_user' => '签到播报', 'to_user' => '大家', - 'content' => $this->buildNoticeContent($user, $dailySignIn), + 'content' => $this->buildNoticeContent($user, $dailySignIn, $currentStreakDays), 'is_secret' => false, 'font_color' => '#0f766e', 'action' => '', @@ -166,13 +170,21 @@ class DailySignInController extends Controller /** * 方法功能:生成聊天室内的签到播报内容。 */ - private function buildNoticeContent(User $user, DailySignIn $dailySignIn): string + private function buildNoticeContent(User $user, DailySignIn $dailySignIn, ?int $currentStreakDays = null): string { $rewardText = $this->buildRewardText($dailySignIn); $identityText = $dailySignIn->identity_badge_name ? ',获得身份 '.e($dailySignIn->identity_badge_name) : ''; + if ($dailySignIn->is_makeup) { + $signInDate = $dailySignIn->sign_in_date?->format('Y-m-d') ?? '漏签日期'; + $streakDays = $currentStreakDays ?? (int) $dailySignIn->streak_days; + + return '【'.e($user->username).'】使用补签卡补签 '.$signInDate + .',当前连续签到 '.$streakDays.' 天,获得 '.$rewardText.$identityText.'。'; + } + $quickButton = '