Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: 공지 알람 발송 및 조회 API 구현 #324

Merged
merged 4 commits into from
Nov 11, 2024
Merged

feat: 공지 알람 발송 및 조회 API 구현 #324

merged 4 commits into from
Nov 11, 2024

Conversation

kdkdhoho
Copy link
Collaborator

@kdkdhoho kdkdhoho commented Oct 31, 2024

Description

공지 알람 발송 API를 구현했습니다.
알람 조회 시 공지 알람도 포함되도록 구현했습니다.

테스트 코드를 NoticeServiceTest에 배치시킬지 AlarmServiceTest에 배치할지 고민됐는데
이전에 다른 도메인에 해당하는 알람도 모두 AlarmServiceTest에 작성해둬서 통일했슴다.

비즈니스 로직 그대로 ListyWave 라는 닉네임을 가진 유저를 저장하고 전체 플로우를 테스트하고 싶었지만, Nickname 객체에서의 검증 때문에 다른 유저로 대체했습니다.
원래는 ListyWave 닉네임을 가진 공식 계정이 publisher로 저장됩니다!

Relation Issues

@kdkdhoho kdkdhoho self-assigned this Oct 31, 2024
@kdkdhoho kdkdhoho requested a review from pparkjs as a code owner October 31, 2024 05:19
@kdkdhoho kdkdhoho linked an issue Oct 31, 2024 that may be closed by this pull request
Copy link
Collaborator

@pparkjs pparkjs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

공지에 대한 알람 구현하느라 수고하셨습니다 ㅎㅎ

다만 그 공지 알람에 대한 읽음 처리는 어떻게 처리가 되는건지 한 번 검토해주시면 감사하겠습니다!!

@@ -24,7 +24,7 @@ public class Nickname {
private static final int LENGTH_LIMIT = 10;
private static final Set<String> BLACK_LIST = Set.of(
"운영자", "관리자", "admin", "listy", "L1sty", "에잇", "eight", "리스티", "관리인", "운영인", "관ㄹi자", "관ㄹl자",
"관ㄹI자", "관리ㅈr", "운영ㅈr", "관ㄹ1자", "adm1n", "관리요원"
"관ㄹI자", "관리ㅈr", "운영ㅈr", "관ㄹ1자", "adm1n", "관리요원", "공식계정", "official", "Official"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍🏻

@@ -49,14 +50,13 @@ select case when count(*) > 0 then false else true end
left join ListEntity l on a.list = l
left join Comment c on a.comment = c
left join Reply r on a.reply = r
where a.receiveUserId = :receiveUserId and a.createdDate >= :thirtyDaysAgo
left join Notice n on a.notice = n
where a.createdDate >= :thirtyDaysAgo and (a.receiveUserId = :receiveUserId or a.type = :type)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

알람 받는 대상은 지정이 안돼어 있으니 or 로 NOTICE를 고정으로 뺀거네요 그럼 여기서 궁금한점은 기존 알람들은 개개인들이 설정되어 있어서 읽음처리가 되는데 그럼 공지에 대한 알림의 읽음 처리는 어떤식으로 개개인별로 처리하나요??

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

공지 알람의 경우 현지님과 논의가 필요한 상황이긴 합니다.
현지님 바쁨 이슈로 아직 논의를 하지 못해서 일단 구현 마감 기간 맞추려고 혼자 생각해 봤을 때 최적의 방식을 적용해 놓은 상태입니다.

공지 알람에 대한 동작은, 알람은 단 1개만 만들고 받는 유저는 없고 타입으로 구분합니다. 이에 따라 읽음 처리는 별도로 하지 않는 것으로 할 생각입니다.

처음엔 모든 유저에게 알람을 생성하는 방식을 생각해 봤지만, N명의 유저에게 모두 알람을 생성하는 것은 큰 부하가 될 것 같아서 위와 같은 방안을 적용해 봤습니다.

일단 머지 안하고 있을테니, 혹시 더 나은 방안이 있을까요?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

흠 일단 공지 알람을 개개인별로 읽는 거에 대해서는 N명의 유저에게 모두 알람을 생성하는것은 말그대로 큰 부하가 올 거 같아서 저도 일단 생각이 나지 않네요 공지는 그냥 30일 지나면 다른 알림과 똑같이 삭제 처리가 되도록 하는 방법으로 납두고 괜찮은 방법이 있는지 아니면 이게 가장 괜찮은 방법인지는 다같이 논의 해봐야할 거 같아요! merge 일단 하셔도 될 거 같아요!

@kdkdhoho kdkdhoho merged commit 4c5c154 into dev Nov 11, 2024
1 check passed
@kdkdhoho kdkdhoho deleted the feat/316 branch November 11, 2024 08:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

공지 알람 API 구현
2 participants