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

develop 병합 #768

Merged
merged 677 commits into from
Oct 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
677 commits
Select commit Hold shift + click to select a range
c14ee0c
style: 컨벤션 수정
pricelees Oct 13, 2024
d05b65e
refactor: 댓글 작성시 알림 대상자 조회 로직 수정 및 테스트 추가
pricelees Oct 13, 2024
0324b84
Fix: 알림 재전송 처리에서의 오타 수정
pricelees Oct 13, 2024
649568e
comment: 댓글 알림 대상자 조회 메서드에 주석 추가
pricelees Oct 13, 2024
4ba49e0
refactor: 애플 api 경로 수정
hoyeonyy Oct 13, 2024
7a1dfd1
refactor: cors 허용 경로로 apple 서버 추가
hoyeonyy Oct 13, 2024
695cd96
refactor: 인터셉터 인증 허용 주소 추가
hoyeonyy Oct 13, 2024
bcd810b
refactor: 컨트롤러 수정
hoyeonyy Oct 13, 2024
796bf57
refactor: 컨트롤러 수정
hoyeonyy Oct 13, 2024
ce76347
refactor: 컨트롤러 수정
hoyeonyy Oct 13, 2024
6fab316
refactor: 컨트롤러 수정
hoyeonyy Oct 13, 2024
c85131d
refactor: 리다이랙션 설정
hoyeonyy Oct 13, 2024
464b295
feat: Json String을 객체로 파싱하고 code를 담아 보내도록 수정
hoyeonyy Oct 13, 2024
2704081
feat: 사용자 정보를 받을 객체 생성
hoyeonyy Oct 13, 2024
c920183
fix: Service 객체 빈 등록
hoyeonyy Oct 13, 2024
45be4e7
fix: apple oauth를 통해 accessToken 반환
hoyeonyy Oct 13, 2024
89e380d
Merge pull request #633 from woowacourse-teams/refactor/#632
hoyeonyy Oct 13, 2024
528911c
refactor: Loser 도메인을 Participant 도메인을 재사용하도록 변경
ksk0605 Oct 14, 2024
13aad20
refactor: readOnly 옵션 추가
ksk0605 Oct 14, 2024
c171766
refactor: 필드값이 널을 허용하지 않도록 수정
ksk0605 Oct 14, 2024
06c3cc1
merge: 변경사항 반영
ksk0605 Oct 14, 2024
26331a4
Merge pull request #636 from woowacourse-teams/feature/#626
ksk0605 Oct 14, 2024
0434896
Merge branch 'develop-backend' into feat/#629
ay-eonii Oct 14, 2024
8cb8504
fix: 멤버 이름 누락 예외 메시지 변경
ay-eonii Oct 14, 2024
d1d6c0a
refactor: 예외 처리 통일
ay-eonii Oct 14, 2024
a2a607f
test: 예외 리팩토링에 따른 테스트 수정
ay-eonii Oct 14, 2024
945ebe8
feat: 프리뷰 응답에 참가자 정보 추가
ksk0605 Oct 14, 2024
2f37a23
feat: 채팅 목록 응답에 채팅 작성자 정보 추가
ksk0605 Oct 14, 2024
dc593f0
feat: Chat 도메인 및 Chat 변환 메서드 추가
ay-eonii Oct 14, 2024
63b1e30
feat: chat 패키지의 ChatType 사용
ay-eonii Oct 14, 2024
20e5c9c
refactor: ChatEntity 대신 Chat 사용
ay-eonii Oct 14, 2024
b9f47b3
feat: 파일과 이미지 URL이 따로 넘어오도록 수정
Mingyum-Kim Oct 14, 2024
6765ded
feat: 파일과 이미지 URL이 따로 넘어오도록 수정
Mingyum-Kim Oct 14, 2024
b133a6c
feat: 새로 추가된 파일이 없을 때 S3업로드 하지 않도록 구현
Mingyum-Kim Oct 14, 2024
c31fa6d
feat: 기본 이미지로 변경 혹은 이미지 변경이 없는 경우 DB Profile 업데이트
Mingyum-Kim Oct 14, 2024
6c20aca
test: 채팅 알림 대상자 찾기 테스트 추가
pricelees Oct 15, 2024
55a9557
refactor: TODO 제거
pricelees Oct 15, 2024
9c55d8f
Merge branch 'develop-backend' into refactor/#564
pricelees Oct 15, 2024
f60d06d
refactor: 미사용 필드 제거
pricelees Oct 15, 2024
0c432a1
Merge pull request #621 from woowacourse-teams/refactor/#564
pricelees Oct 15, 2024
6485012
fix: 마이페이지 버그 수정
hoyeonyy Oct 15, 2024
a3196ac
Merge pull request #643 from woowacourse-teams/fix/#641
hoyeonyy Oct 15, 2024
6967d32
merge: 변경사항 반영
ksk0605 Oct 15, 2024
ccd9d7b
feat: 채팅방 오픈 기능에 채팅방 ID를 반환하도록 수정
ksk0605 Oct 15, 2024
5ca25b8
fix: null 가능성 있는 필드를 조회할 때 생기는 버그 수정
ksk0605 Oct 15, 2024
db42477
fix: 응답 형식 컨벤션이 맞지 않는 문제 수정
ksk0605 Oct 15, 2024
3ffc384
feat: 기존 이미지가 있다면 S3에서 삭제한다.
hoyeonyy Oct 15, 2024
c9baf2c
feat: 알림 예외 메시지 및 커스텀 예외 추가
pricelees Oct 15, 2024
f7d804d
refactor: 알림 이벤트 객체 생성시 채팅 / 채팅이 아닌 경우를 구분하기 위한 팩토리 메서드 추가
pricelees Oct 15, 2024
d0c9439
feat: 채팅 알림시 날짜 / 시간을 '~월 ~일 ~시 ~분' 형식으로 보내기 위한 유틸 클래스 추가
pricelees Oct 15, 2024
16fdc6f
refactor: 알림 메시지 생성 역할 변경에 따른 NotificationType의 메시지 제거
pricelees Oct 15, 2024
66b4e61
refactor: 변경된 사항을 채팅 서비스에 반영
pricelees Oct 15, 2024
f16653f
Merge branch 'develop-backend' into refactor/#642
pricelees Oct 15, 2024
5cc13db
fix: 배팅 어트리뷰트 조회시 프로필 널로 인해 발생하는 오류 수정
ksk0605 Oct 15, 2024
8aeb133
feat: 테스트 사용자를 두개로 늘린다.
hoyeonyy Oct 15, 2024
98395e0
refactor: 채팅 서비스에서의 타입에 따른 처리 수정
pricelees Oct 15, 2024
d226bde
test: 테스트 오류 수정
ksk0605 Oct 15, 2024
666aaaf
Merge pull request #650 from woowacourse-teams/feature/#649
hoyeonyy Oct 15, 2024
78c3cc7
fix: time null 로 인한 오류 수정
ksk0605 Oct 15, 2024
6576d6e
feat: 인터셉터 허용
hoyeonyy Oct 15, 2024
72f43c0
Merge pull request #634 from woowacourse-teams/feat/#629
ay-eonii Oct 16, 2024
7c0e72c
Merge pull request #640 from woowacourse-teams/refactor/#637
ay-eonii Oct 16, 2024
7580054
merge: 브랜치 병합
ksk0605 Oct 16, 2024
fff2e87
fix: ChatType 의존성 수정
ksk0605 Oct 16, 2024
2b15a3b
feat: betFindResponse 프로필 url 추가
ksk0605 Oct 16, 2024
d91a031
fix: participant 변경사항 반영
ksk0605 Oct 16, 2024
ef4f16c
refactor: AttributeManagerRegistry 예외메시지 수정
ksk0605 Oct 16, 2024
fe6e5e6
refactor: 예외 발생 로직 수정
ksk0605 Oct 16, 2024
968b8e8
refactor: 예외 발생 로직 수정
ksk0605 Oct 16, 2024
7b5946f
Merge pull request #639 from woowacourse-teams/feature/#638
ksk0605 Oct 16, 2024
749ebdb
refactor: 채팅 알림에서 새로 추가된 베팅 기능 지원
pricelees Oct 16, 2024
80341ee
Merge branch 'develop-backend' into refactor/#642
pricelees Oct 16, 2024
8198788
Merge pull request #651 from woowacourse-teams/refactor/#642
pricelees Oct 16, 2024
02aff69
Merge pull request #648 from woowacourse-teams/feature/#645
hoyeonyy Oct 16, 2024
76436c1
refactor: 애플 소셜 로그인 로직을 컨트롤러에서 서비스로 이동
Mingyum-Kim Oct 16, 2024
c37376e
fix: ChatRoom이 ChatRoomEntity으로 의존성 제거
ay-eonii Oct 16, 2024
9541c4b
fix: 추첨자 있는 안내면진다만 채팅방목록 조회 가능하도록 수정
ay-eonii Oct 16, 2024
cdcdb60
fix: targetid nullable 하지 않도록 변경
ay-eonii Oct 16, 2024
4a2d720
fix: 채팅에서 모두 자신의 프로필로 나오는 오류 수정
ay-eonii Oct 16, 2024
42f2fd6
test: 주석 제거하고 케이스별 테스트 코드 작성
Mingyum-Kim Oct 16, 2024
b020914
test: 마이페이지 수정 테스트 작성
Mingyum-Kim Oct 16, 2024
47d66c2
Merge branch 'fix/#641' of https://github.com/woowacourse-teams/2024-…
Mingyum-Kim Oct 16, 2024
d5f4f64
refactor: 참여에 사용자 목록이 보이도록 생성
hoyeonyy Oct 16, 2024
4c98633
refactor: 테스트용 사용자 만드는 기능 구현
hoyeonyy Oct 16, 2024
b345947
refactor: 테스트용 사용자가 prod 환경에 배포되지 않게 수정
hoyeonyy Oct 16, 2024
bc7cb42
Merge branch 'develop-backend' of https://github.com/woowacourse-team…
Mingyum-Kim Oct 16, 2024
7d6de1b
refactor: 닉네임 검증과정을 생성뿐 아니라 수정에도 사용
hoyeonyy Oct 16, 2024
f5bb86e
refactor: 최대 길이 12글자
hoyeonyy Oct 16, 2024
30a5ccc
refactor: 최대 길이 12글자로 변경
hoyeonyy Oct 16, 2024
8c32ae8
Merge branch 'feature/#660' of https://github.com/woowacourse-teams/2…
hoyeonyy Oct 16, 2024
c346dd8
feat: Author 추가
ay-eonii Oct 16, 2024
50dc5b7
fix: 기본 이미지로 변경하는 경우에도 S3에서 삭제하도록 구현
Mingyum-Kim Oct 16, 2024
e02e5b2
refactor: chat DarakbangMember를 Author로 변경
ay-eonii Oct 16, 2024
c00edbd
fix: 참여자 모이머인지 확인 오류 수정
ay-eonii Oct 16, 2024
0511d3b
Merge pull request #663 from woowacourse-teams/fix/#641
Mingyum-Kim Oct 16, 2024
0ec263d
Merge pull request #661 from woowacourse-teams/feature/#660
hoyeonyy Oct 16, 2024
0ff6a35
feat: 안내면진다 중복참여 예외처리
ay-eonii Oct 16, 2024
d116aeb
feat: 추첨시간이 지났거나 당첨자가 이미 있는 경우 참여 예외 처리
ay-eonii Oct 16, 2024
68acb8b
refactor: AccessToken payload 에 OauthType 추가
hoyeonyy Oct 16, 2024
b8b3e6d
refactor: 인터셉터에서 토큰의 정보가 Kakao 라면 예외를 발생한다.
hoyeonyy Oct 16, 2024
4a6dea4
refactor: 값 비교, 접근제어자 변경
hoyeonyy Oct 17, 2024
64f1b09
fix: 오타수정
ay-eonii Oct 17, 2024
7507eb5
refactor: 메서드명 변경
ay-eonii Oct 17, 2024
9132224
refactor: 클래스명 변경
ay-eonii Oct 17, 2024
2a55bd9
feat: role 포함하지 않는 ParticipantResponse 생성자 추가
ay-eonii Oct 17, 2024
66fa2b1
feat: 회원 탈퇴 API 구현
Mingyum-Kim Oct 17, 2024
4a2f21d
Merge pull request #669 from woowacourse-teams/fix/#668
hoyeonyy Oct 17, 2024
04507dd
Merge pull request #665 from woowacourse-teams/fix/#653
ay-eonii Oct 17, 2024
257d816
feat: 회원 탈퇴 시 애플 서버와 통신하여 사용자 권한을 지우는 기능 구현
Mingyum-Kim Oct 17, 2024
2d7ee8c
feat: 애플 서버로부터 refresh token을 받아서 저장하는 기능 구현
Mingyum-Kim Oct 17, 2024
c2189c6
fix: 안내면진다 목록 정렬 수정
ay-eonii Oct 17, 2024
c689e82
Merge branch 'develop-backend' into feature/#666
Mingyum-Kim Oct 17, 2024
ec54e73
fix: 실패하는 테스트 케이스 수정
Mingyum-Kim Oct 18, 2024
dbdcc30
Merge branch 'feature/#666' of https://github.com/woowacourse-teams/2…
Mingyum-Kim Oct 18, 2024
5661a23
Merge pull request #677 from woowacourse-teams/feature/#666
Mingyum-Kim Oct 18, 2024
cb13a9d
chore: redirect-uri가 달라서 생기는 문제 해결
Mingyum-Kim Oct 18, 2024
e1a51c2
fix: 회원 탈퇴 시 revoke 과정 확인을 위한 디버깅 코드 추가
Mingyum-Kim Oct 18, 2024
43fd7bb
refactor: 모임 정보 수정시 알림 메시지에서 수정 전 모임 이름을 사용하도록 수정
pricelees Oct 18, 2024
8ff90ec
refactor: 채팅 알림 구현 방법 및 메시지 형식 수정
pricelees Oct 18, 2024
ff58c5f
feat: 애플 회원 탈퇴 시 상태 정보를 수정하도록 변경
Mingyum-Kim Oct 18, 2024
17ee186
refactor: 채팅 알림 메시지 세분화
pricelees Oct 18, 2024
da5fb2a
chore: 소셜 로그인 아이디를 확인하기 위한 로그 추가
Mingyum-Kim Oct 18, 2024
c914df2
chore: 소셜 아이디를 확인하기 위한 로그 추가
Mingyum-Kim Oct 18, 2024
90559fe
feat: 로그인 시 재가입 여부에 따라 상태 정보를 변경
Mingyum-Kim Oct 19, 2024
22ad609
feat: 애플 로그인 시 재가입한 회원인 경우 상태만 변경하도록 수정
Mingyum-Kim Oct 19, 2024
713c71d
test: 회원 탈퇴 논리 삭제 테스트
Mingyum-Kim Oct 19, 2024
1d6f42f
feat: 재가입 시 더티체킹이 반영되지 않는 현상 해결
Mingyum-Kim Oct 19, 2024
4b1f507
Merge branch 'develop-backend' into feature/#685
Mingyum-Kim Oct 19, 2024
051eaf6
Merge pull request #689 from woowacourse-teams/feature/#685
Mingyum-Kim Oct 19, 2024
767b88e
refactor: 적절한 패키지로 이동
Mingyum-Kim Oct 19, 2024
a3518b6
refactor: 구글 로그인 시 카카오 회원의 memberId를 받지 않도록 수정
Mingyum-Kim Oct 19, 2024
9be3776
refactor: 실제 로그인과 테스트용 로그인 컨트롤러 클래스를 분리
Mingyum-Kim Oct 19, 2024
c5f9185
refactor: 회원 탈퇴를 auth가 아닌 member 도메인으로 이동
Mingyum-Kim Oct 19, 2024
a2d23e3
refactor: 애플 서버로부터 회원 정보를 전달받는 API를 AuthController로 이동
Mingyum-Kim Oct 19, 2024
cfb3a42
chore: 애플 RedirectURL 변경에 따른 설정 수정
Mingyum-Kim Oct 19, 2024
8174891
refactor: socialLoginId 대신 identifier라는 명칭 사용
Mingyum-Kim Oct 19, 2024
f82b80a
refactor: 불필요한 어노테이션 제거
Mingyum-Kim Oct 19, 2024
c24110f
refactor: 로그인 요청 DTO의 이름 변경
Mingyum-Kim Oct 19, 2024
9e2cb2d
refactor: 로그인 및 회원가입 비즈니스 로직 리팩토링
Mingyum-Kim Oct 19, 2024
bc93e33
refactor: 카카오 로그인 후 토큰 받아오는 서비스 로직 수정
Mingyum-Kim Oct 19, 2024
f13cc48
feat: 카카오 사용자를 애플, 구글 사용자로 치환하는 기능 구현
Mingyum-Kim Oct 19, 2024
13b3576
refactor: IdentityToken 대신 IdToken으로 통일
Mingyum-Kim Oct 19, 2024
8c47a3d
refactor: JsonNode를 사용하여 사용자 이름 읽어오도록 수정
Mingyum-Kim Oct 19, 2024
292c373
test: 애플 로그인 흐름 테스트
Mingyum-Kim Oct 19, 2024
043d5a9
test: 사용자 전환 기능을 테스트
Mingyum-Kim Oct 20, 2024
625004e
refactor: 모임에서의 다락방 조회 예외 메시지 추가
pricelees Oct 20, 2024
44a4c0a
fix: 모임 ID 대신 다락방 ID를 사용하는 오타 수정
pricelees Oct 20, 2024
68f15fa
refactor: 참여자가 입력된 DarakbangMember인지 확인하는 메서드 추가
pricelees Oct 20, 2024
7e93055
refactor: memberId 필드 추가에 따른 Author 필드명 세분화(id -> darakbangMember)
pricelees Oct 20, 2024
f883d4f
refactor: Recipient 필드 final 지정 및 빌더 추가
pricelees Oct 20, 2024
b491a91
refactor: CommentRecipient를 Map을 가진 일급 컬렉션으로 수정
pricelees Oct 20, 2024
ac98c87
refactor: ChatDateTimeFormatter 세분화
pricelees Oct 20, 2024
aa86f72
fix: DateTimeFormatter 사용 제거
pricelees Oct 20, 2024
325112c
Merge branch 'develop-backend' into fix/#684
pricelees Oct 20, 2024
9f15539
Merge pull request #687 from woowacourse-teams/fix/#684
pricelees Oct 21, 2024
6cec4d7
feat: id와 토큰 정보를 가지는 도메인 객체 추가
pricelees Oct 21, 2024
cf47eff
refactor: 기존 List 형태의 필드를 에러 코드로 구분되는 Map 구조로 수정 및 Retry-After 헤더에서 값…
pricelees Oct 21, 2024
182780c
refactor: 404 에러 토큰 제거를 Sender가 아니라 Handler에서 마지막에 처리하도록 수정 및 FcmFail…
pricelees Oct 21, 2024
e461c5b
chore: rolling 배포 workflows
ay-eonii Oct 21, 2024
a807e57
feat: 모니터링 대시보드를 위한 설정 추가
Mingyum-Kim Oct 21, 2024
0b3f8cc
chore: prod 환경에 모니터링을 위한 설정 추가
Mingyum-Kim Oct 22, 2024
1c25020
chore: rolling 배포 시간 단축
ay-eonii Oct 22, 2024
158197e
Merge pull request #678 from woowacourse-teams/fix/#676
ay-eonii Oct 22, 2024
9a043fd
remove: 구버전 채팅 제거
pricelees Oct 22, 2024
0ccff89
fix: 엔티티 스캔 패키지 수정
pricelees Oct 22, 2024
d3203c4
refactor: 파라미터 카멜케이스로 변경
hoyeonyy Oct 22, 2024
4dfd1f0
refactor: enum 비교 변경
hoyeonyy Oct 22, 2024
11d97b8
refactor: 환경 변수 등록
hoyeonyy Oct 22, 2024
dd9abbb
refactor: 환경 변수 등록
hoyeonyy Oct 22, 2024
d3edf6e
refactor: 카멜케이스, 동등성 비교 정의
hoyeonyy Oct 22, 2024
67fc50b
Merge pull request #691 from woowacourse-teams/refactor/#690
hoyeonyy Oct 22, 2024
8fba7d2
refactor: 인터셉터 허용 url 변경
hoyeonyy Oct 22, 2024
720bd04
refactor: client Id 로그 확인
hoyeonyy Oct 22, 2024
029940b
refactor: 소셜 아이디 로그 수정
hoyeonyy Oct 22, 2024
e2a4ae0
refactor: 로그 삭제
hoyeonyy Oct 22, 2024
5f44ef5
chore: 개발 환경에 설정 파일 추가
Mingyum-Kim Oct 22, 2024
86d4669
Merge pull request #702 from woowacourse-teams/chore/#695
Mingyum-Kim Oct 22, 2024
35d6e3d
chore: hikari connection pool size를 20으로 지정
Mingyum-Kim Oct 22, 2024
1aa566a
Merge pull request #696 from woowacourse-teams/fix/#694
pricelees Oct 23, 2024
140aebf
Merge pull request #701 from woowacourse-teams/fix/#699
pricelees Oct 23, 2024
ac2cc77
Merge branch 'develop-backend' into fix/#706
ay-eonii Oct 23, 2024
fcc5798
fix: 다락방, 멤버 테이블 이름 변경
ay-eonii Oct 23, 2024
80e6f53
refactor: 모임 도메인 테이블 이름 지정
pricelees Oct 23, 2024
e3eccb0
refactor: please, interest 테이블 명 매핑
ksk0605 Oct 23, 2024
222247b
Merge pull request #708 from woowacourse-teams/fix/#706
ksk0605 Oct 23, 2024
dc1d8cf
chore: Tomcat 매트릭을 측정하기 위한 설정 추가
Mingyum-Kim Oct 23, 2024
945a90e
Merge branch 'develop-backend' of https://github.com/woowacourse-team…
Mingyum-Kim Oct 23, 2024
190b133
chore: tomcat mbeanregistry 활성화
Mingyum-Kim Oct 23, 2024
eef0578
chore: prometheus endpoint를 활성화
Mingyum-Kim Oct 23, 2024
f9e7c32
chore: 최대 스레드 개수를 수정
Mingyum-Kim Oct 23, 2024
d3db898
chore: 스레드 개수를 100개로 제한
Mingyum-Kim Oct 23, 2024
299aec3
fix: 엔티티 스캔 패키지 지정
pricelees Oct 23, 2024
eee0d73
Merge pull request #715 from woowacourse-teams/fix/#714
pricelees Oct 23, 2024
5c2b73c
feat: cors 허용
ay-eonii Oct 23, 2024
2ad4eda
Merge pull request #717 from woowacourse-teams/feat/#716
ay-eonii Oct 23, 2024
6e3d9bc
feat: 사용자 전환 시 상태를 변경하도록 수정
Mingyum-Kim Oct 23, 2024
48b60ef
feat: 구글, 애플 로그인 후 사용자 전환 여부를 반환하도록 수정
Mingyum-Kim Oct 23, 2024
98c2ee4
fix: identifier 조회 시 active 회원만 조회하도록 수정
Mingyum-Kim Oct 23, 2024
3c57e9e
feat: 사용자 전환 시 구글, 애플 사용자 상태를 DEPRECATED로 설정
Mingyum-Kim Oct 23, 2024
9cd08da
fix: 상태 변경이 반영되지 않는 현상 해결
Mingyum-Kim Oct 23, 2024
3712d4b
Merge pull request #730 from woowacourse-teams/fix/#721
ksk0605 Oct 23, 2024
a9e229f
fix: darakbangId 누락 수정
ksk0605 Oct 23, 2024
69e3fd5
Merge pull request #734 from woowacourse-teams/fix/#731
ksk0605 Oct 23, 2024
904428b
feat: 다락방 멤버 목록 darakbangMemberId, profile 추가
ay-eonii Oct 23, 2024
1ab882c
feat: 참여자 목록 응답에 darakbangMemberId 추가
ay-eonii Oct 23, 2024
2eff898
feat: 회원 가입 이력이 있다면 최초 애플 로그인이더라도 회원가입하지 않는다
Mingyum-Kim Oct 23, 2024
8f0da9a
feat: 유저 성과 이름을 바꾸어 위치
Mingyum-Kim Oct 23, 2024
682726d
chore: 애플 로그인 시 리디렉션 URL을 환경에 맞추어 설정
Mingyum-Kim Oct 23, 2024
ee2217b
feat: 다락방 멤버 프로필 조회 API
ay-eonii Oct 23, 2024
a1f480a
feat: Participant에 DarakbangMemberId 추가
ay-eonii Oct 23, 2024
94d4e7d
feat: 룰렛 참여자 응답에 darakbangMemberId 추가
ay-eonii Oct 23, 2024
38caff3
Merge pull request #739 from woowacourse-teams/fix/#738
Mingyum-Kim Oct 23, 2024
1130ed8
feat: 회원 객체의 상태를 직접 변경하여 더티체킹 하도록 수정
Mingyum-Kim Oct 23, 2024
c91dd2d
Merge pull request #743 from woowacourse-teams/fix/#741
Mingyum-Kim Oct 23, 2024
3c21e40
feat: FCM 알림 재시도시 재시도 가능 여부 판단을 별도의 객체로 분리
pricelees Oct 23, 2024
78f4c1f
feat: 비동기로 알림을 전송하는 별도의 객체 분리
pricelees Oct 23, 2024
c80d039
feat: 알림 전송 이벤트 객체 구현
pricelees Oct 23, 2024
c3b7aa1
feat: 알림 전송 이벤트 처리 객체 구현
pricelees Oct 23, 2024
7a04bb6
refactor: 구독 정보 필터의 파라미터 타입 수정
pricelees Oct 23, 2024
ed69d79
refactor: 구독 정보 필터를 가져올 때의 처리 로직 수정
pricelees Oct 23, 2024
4bf8b42
rename: NotificationEvent 클래스명 수정(->NotificationPayload)
pricelees Oct 23, 2024
6634ccf
refactor: 알림 저장 & 이벤트 발행 객체 생성 및 이에따른 NotificationService 삭제
pricelees Oct 23, 2024
244bc89
feat: 모임 패키지 안에서의 알림 전송(=이벤트 발행) 객체 추가
pricelees Oct 23, 2024
6a8577c
feat: 모임 패키지 안에서의 공통 이벤트 처리 객체 구현
pricelees Oct 23, 2024
63b5113
feat: 참여 이벤트 처리 객체 구현
pricelees Oct 23, 2024
e961496
feat: 댓글 이벤트 처리 객체 구현
pricelees Oct 23, 2024
2d2001c
feat: 모임 관련(모임 생성, 수정, 상태 변경) 이벤트 처리 객체 구현
pricelees Oct 23, 2024
b69bcf6
feat: 채팅 이벤트 처리 객체 구현
pricelees Oct 23, 2024
bff5b8c
refactor: FcmFailedResponse에 실패한 토큰이 없는지 확인하는 메서드 추가
pricelees Oct 23, 2024
62eecb8
refactor: 토큰 스케쥴러에 Transactional 적용
pricelees Oct 23, 2024
c2c2d0e
refactor: 비동기 테스트 추가
pricelees Oct 23, 2024
9545dd7
Merge pull request #740 from woowacourse-teams/feat/#737
ay-eonii Oct 24, 2024
197b7ce
chore: 스크립트 실행 브랜치 변경
ay-eonii Oct 24, 2024
a720f4d
test: 날짜 이슈 테스트 실패 수정
ay-eonii Oct 24, 2024
dffc4da
Merge pull request #746 from woowacourse-teams/chore/#682
ay-eonii Oct 24, 2024
a767b2d
fix: 충돌해결
ay-eonii Oct 24, 2024
ab2f929
Merge pull request #750 from woowacourse-teams/fix/#749
ay-eonii Oct 24, 2024
ef3c198
feat: ChatRoomValidator, 타입과 타겟 id로 이미 존재하는 채팅방 검증 로직 구현
ksk0605 Oct 24, 2024
6d418d3
chore: 서버별 스크립트 변경
ay-eonii Oct 24, 2024
77bf8bc
fix: 채팅방 생성시 이미 존재하는 채팅방 검증 로직 추가
ksk0605 Oct 24, 2024
60b7341
chore: 구 prod 스크립트 삭제
ay-eonii Oct 24, 2024
024565b
Merge pull request #747 from woowacourse-teams/fix/#724
pricelees Oct 24, 2024
78f3307
refactor: 파일 사이즈 10MB 로 개선
hoyeonyy Oct 24, 2024
92a16c6
refactor: 재전송하지 않는 실패 알림에 대한 로깅 메시지 구체화
pricelees Oct 24, 2024
bfc6958
refactor: yml 로 통합
hoyeonyy Oct 24, 2024
c618409
Merge pull request #761 from woowacourse-teams/refactor/#760
hoyeonyy Oct 24, 2024
fda6b1c
Merge pull request #759 from woowacourse-teams/fix/#751
ay-eonii Oct 24, 2024
4a0b3b4
Merge pull request #763 from woowacourse-teams/fix/#762
ay-eonii Oct 24, 2024
bc9649a
Merge pull request #758 from woowacourse-teams/chore/#754
ay-eonii Oct 24, 2024
725f3f0
fix: 충돌해결
ay-eonii Oct 24, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/be-rolling-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: Rolling Deployment
on:
push:
branches:
- develop
- main

jobs:
deploy-prod1:
Expand Down
40 changes: 0 additions & 40 deletions .github/workflows/cd-prod.yml
Original file line number Diff line number Diff line change
@@ -1,40 +0,0 @@
name: cd-prod

on:
push:
branches:
- develop

jobs:
deploy-on-prod1:
runs-on: [self-hosted, runner-prod1]

steps:
- name: update properties if exists
run: |
if [ -n "${{ secrets.NEW_PROPERTIES }}" ]; then
cd ~/deploy
echo "${{ secrets.NEW_PROPERTIES }}" > new_properties
./update-properties.sh
fi

- name: deploy
run: |
cd ~/deploy && ./deploy.sh

deploy-on-prod2:
runs-on: [self-hosted, runner-prod2]
needs: deploy-on-prod1

steps:
- name: update properties if exists
run: |
if [ -n "${{ secrets.NEW_PROPERTIES }}" ]; then
cd ~/deploy
echo "${{ secrets.NEW_PROPERTIES }}" > new_properties
./update-properties.sh
fi

- name: deploy
run: |
cd ~/deploy && ./deploy.sh
703 changes: 0 additions & 703 deletions backend/hs_err_pid19740.log

This file was deleted.

733 changes: 0 additions & 733 deletions backend/hs_err_pid20488.log

This file was deleted.

1,087 changes: 0 additions & 1,087 deletions backend/hs_err_pid20992.log

This file was deleted.

10,114 changes: 0 additions & 10,114 deletions backend/replay_pid19740.log

This file was deleted.

13,012 changes: 0 additions & 13,012 deletions backend/replay_pid20488.log

This file was deleted.

12,542 changes: 0 additions & 12,542 deletions backend/replay_pid20992.log

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import mouda.backend.chat.domain.Chats;
import mouda.backend.chat.implement.ChatRoomFinder;
import mouda.backend.chat.implement.ChatWriter;
import mouda.backend.chat.implement.sender.ChatNotificationSender;
import mouda.backend.chat.implement.notification.ChatNotificationSender;
import mouda.backend.chat.presentation.request.ChatCreateRequest;
import mouda.backend.chat.presentation.request.DateTimeConfirmRequest;
import mouda.backend.chat.presentation.request.LastReadChatRequest;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package mouda.backend.chat.domain;

import lombok.Builder;
import lombok.Getter;
import lombok.RequiredArgsConstructor;

@Getter
@RequiredArgsConstructor
@Builder
public class ChatNotificationEvent {

private final Long darakbangId;
private final ChatRoom chatRoom;
private final Chat appendedChat;
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@ public enum ChatErrorMessage {
BET_DARAKBANG_MEMBER_NOT_FOUND("참여하지 않은 안내면진다입니다."),
INVALID_CHATROOM_TYPE("잘못된 채팅 방 타입입니다."),
UNAUTHORIZED("권한이 없습니다."),

INVALID_DATE_TIME_FORMAT("날짜와 시간 형식이 올바르지 않습니다."),
CHATROOM_ALREADY_EXISTS("이미 존재하는 채팅방입니다."), // 새로 추가된 메시지

;

private final String message;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package mouda.backend.chat.implement;

import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;

import lombok.RequiredArgsConstructor;
import mouda.backend.chat.domain.ChatRoomType;
import mouda.backend.chat.exception.ChatErrorMessage;
import mouda.backend.chat.exception.ChatException;
import mouda.backend.chat.infrastructure.ChatRoomRepository;

@Component
@RequiredArgsConstructor
public class ChatRoomValidator {

private final ChatRoomRepository chatRoomRepository;

public void validateAlreadyExists(long targetId, ChatRoomType chatRoomType) {
if (chatRoomRepository.existsByTargetIdAndType(targetId, chatRoomType)) {
throw new ChatException(HttpStatus.BAD_REQUEST, ChatErrorMessage.CHATROOM_ALREADY_EXISTS);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,11 @@
public class ChatRoomWriter {

private final ChatRoomRepository chatRoomRepository;
private final ChatRoomValidator chatRoomValidator;

public long append(long targetId, long darakbangId, ChatRoomType chatRoomType) {
chatRoomValidator.validateAlreadyExists(targetId, chatRoomType);

ChatRoomEntity chatRoomEntity = ChatRoomEntity.builder()
.targetId(targetId)
.darakbangId(darakbangId)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
package mouda.backend.chat.implement.sender;
package mouda.backend.chat.implement.notification;

import java.util.List;

import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.event.TransactionPhase;
import org.springframework.transaction.event.TransactionalEventListener;

import lombok.Getter;
import lombok.RequiredArgsConstructor;
import mouda.backend.bet.domain.Bet;
import mouda.backend.bet.implement.BetFinder;
import mouda.backend.chat.domain.Chat;
import mouda.backend.chat.domain.ChatNotificationEvent;
import mouda.backend.chat.domain.ChatRoom;
import mouda.backend.chat.domain.ChatRoomType;
import mouda.backend.chat.entity.ChatType;
Expand All @@ -20,82 +24,93 @@
import mouda.backend.darakbang.implement.DarakbangFinder;
import mouda.backend.moim.domain.Moim;
import mouda.backend.moim.implement.finder.MoimFinder;
import mouda.backend.notification.domain.NotificationEvent;
import mouda.backend.notification.domain.NotificationPayload;
import mouda.backend.notification.domain.NotificationType;
import mouda.backend.notification.domain.Recipient;
import mouda.backend.notification.implement.NotificationProcessor;

@Component
@EnableConfigurationProperties(UrlConfig.class)
@RequiredArgsConstructor
public class ChatNotificationSender {
public class ChatNotificationEventHandler {

private final UrlConfig urlConfig;
private final ChatRecipientFinder chatRecipientFinder;
private final ApplicationEventPublisher eventPublisher;
private final MoimFinder moimFinder;
private final BetFinder betFinder;
private final DarakbangFinder darakbangFinder;
private final ChatRecipientFinder chatRecipientFinder;
private final NotificationProcessor notificationProcessor;

@Async
@Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW)
@TransactionalEventListener(classes = ChatNotificationEvent.class, phase = TransactionPhase.AFTER_COMMIT)
public void sendChatNotification(
long darakbangId, ChatRoom chatRoom, Chat appendedChat
ChatNotificationEvent chatNotificationEvent
) {
long darakbangId = chatNotificationEvent.getDarakbangId();
ChatRoom chatRoom = chatNotificationEvent.getChatRoom();
Chat appendedChat = chatNotificationEvent.getAppendedChat();

ChatRoomType chatRoomType = chatRoom.getType();
long chatRoomId = chatRoom.getId();

if (chatRoomType == ChatRoomType.BET) {
Bet bet = betFinder.find(darakbangId, chatRoom.getTargetId());
sendBetNotification(bet, appendedChat, chatRoomId);
handleBetNotification(bet, appendedChat, chatRoomId);
return;
}

Moim moim = moimFinder.read(chatRoom.getTargetId(), darakbangId);
sendMoimNotification(moim, appendedChat, chatRoomId);
handleMoimNotification(moim, appendedChat, chatRoomId);
}

private void sendMoimNotification(
private void handleMoimNotification(
Moim moim, Chat chat, long chatRoomId
) {
List<Recipient> recipients = chatRecipientFinder.getMoimChatNotificationRecipients(moim.getId(),
chat.getAuthor());
long darakbangId = moim.getDarakbangId();

publishEvent(darakbangId, chatRoomId, moim.getTitle(), chat, recipients);
processNotification(darakbangId, chatRoomId, moim.getTitle(), chat, recipients);
}

private void sendBetNotification(Bet bet, Chat chat, long chatRoomId) {
private void handleBetNotification(Bet bet, Chat chat, long chatRoomId) {
List<Recipient> recipients = chatRecipientFinder.getBetChatNotificationRecipients(bet.getId(),
chat.getAuthor());
long darakbangId = bet.getDarakbangId();

publishEvent(darakbangId, chatRoomId, bet.getTitle(), chat, recipients);
processNotification(darakbangId, chatRoomId, bet.getTitle(), chat, recipients);
}

private void publishEvent(long darakbangId, long chatRoomId, String title, Chat chat, List<Recipient> recipients) {
private void processNotification(
long darakbangId, long chatRoomId, String title, Chat chat, List<Recipient> recipients
) {
Darakbang darakbang = darakbangFinder.findById(darakbangId);
ChatNotification chatNotification = ChatNotification.create(darakbang.getName(), title, chat);
ChatNotificationMessage chatNotificationMessage = ChatNotificationMessage.create(darakbang.getName(), title,
chat);

NotificationEvent notificationEvent = NotificationEvent.chatEvent(
chatNotification.getType(),
NotificationPayload payload = NotificationPayload.createChatPayload(
chatNotificationMessage.getType(),
darakbang.getName(),
chatNotification.getMessage(),
chatNotificationMessage.getMessage(),
urlConfig.getChatRoomUrl(darakbangId, chatRoomId),
recipients,
darakbangId,
chatRoomId
);

eventPublisher.publishEvent(notificationEvent);
notificationProcessor.process(payload);
}

@Getter
@RequiredArgsConstructor
static class ChatNotification {
static class ChatNotificationMessage {

private final String title;
private final NotificationType type;
private final String message;

public static ChatNotification create(String darakbangName, String title, Chat chat) {
public static ChatNotificationMessage create(String darakbangName, String title,
Chat chat) {
ChatType chatType = chat.getChatType();
String content = chat.getContent();

Expand All @@ -114,16 +129,19 @@ public static ChatNotification create(String darakbangName, String title, Chat c
return basicChat(title, message);
}

private static ChatNotification placeConfirmChat(String title, String message) {
return new ChatNotification(title, NotificationType.MOIM_PLACE_CONFIRMED, message);
private static ChatNotificationMessage placeConfirmChat(String title, String message) {
return new ChatNotificationMessage(title, NotificationType.MOIM_PLACE_CONFIRMED,
message);
}

private static ChatNotification dateTimeConfirmChat(String title, String message) {
return new ChatNotification(title, NotificationType.MOIM_TIME_CONFIRMED, message);
private static ChatNotificationMessage dateTimeConfirmChat(String title,
String message) {
return new ChatNotificationMessage(title, NotificationType.MOIM_TIME_CONFIRMED,
message);
}

private static ChatNotification basicChat(String title, String message) {
return new ChatNotification(title, NotificationType.NEW_CHAT, message);
private static ChatNotificationMessage basicChat(String title, String message) {
return new ChatNotificationMessage(title, NotificationType.NEW_CHAT, message);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package mouda.backend.chat.implement.notification;

import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Component;

import lombok.RequiredArgsConstructor;
import mouda.backend.chat.domain.Chat;
import mouda.backend.chat.domain.ChatNotificationEvent;
import mouda.backend.chat.domain.ChatRoom;

@Component
@RequiredArgsConstructor
public class ChatNotificationSender {

private final ApplicationEventPublisher eventPublisher;

public void sendChatNotification(long darakbangId, ChatRoom chatRoom, Chat appendedChat) {
ChatNotificationEvent event = ChatNotificationEvent.builder()
.darakbangId(darakbangId)
.chatRoom(chatRoom)
.appendedChat(appendedChat)
.build();

eventPublisher.publishEvent(event);
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package mouda.backend.chat.implement.sender;
package mouda.backend.chat.implement.notification;

import java.util.List;
import java.util.stream.Stream;
Expand Down Expand Up @@ -48,25 +48,4 @@ public List<Recipient> getNotificationRecipients(Stream<DarakbangMember> memberS
.build())
.toList();
}

// todo: 구버전 채팅 기능 삭제시 같이 지워주세요.
public List<Recipient> getMoimChatNotificationRecipients(long moimId, DarakbangMember sender) {
List<Chamyo> chamyos = chamyoRepository.findAllByMoimId(moimId);

Stream<DarakbangMember> darakbangMemberStream = chamyos.stream()
.map(Chamyo::getDarakbangMember);

return getNotificationRecipients(darakbangMemberStream, sender);
}

// todo: 구버전 채팅 기능 삭제시 같이 지워주세요.
public List<Recipient> getNotificationRecipients(Stream<DarakbangMember> memberStream, DarakbangMember sender) {
return memberStream
.filter(darakbangMember -> darakbangMember.isNotSameMemberWith(sender))
.map(darakbangMember -> Recipient.builder()
.memberId(darakbangMember.getMemberId())
.darakbangMemberId(darakbangMember.getId())
.build())
.toList();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,6 @@ public interface ChatRoomRepository extends JpaRepository<ChatRoomEntity, Long>
Optional<ChatRoomEntity> findByIdAndDarakbangId(Long chatRoomId, long darakbangId);

Optional<ChatRoomEntity> findByTargetIdAndType(long targetId, ChatRoomType chatRoomType);

boolean existsByTargetIdAndType(long targetId, ChatRoomType chatRoomType);
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
import mouda.backend.moim.domain.MoimRole;
import mouda.backend.moim.implement.finder.ChamyoFinder;
import mouda.backend.moim.implement.finder.MoimFinder;
import mouda.backend.moim.implement.sender.ChamyoNotificationSender;
import mouda.backend.moim.implement.notificiation.MoimRelatedNotificationSender;
import mouda.backend.moim.implement.writer.ChamyoWriter;
import mouda.backend.moim.implement.writer.MoimWriter;
import mouda.backend.moim.presentation.response.chamyo.ChamyoFindAllResponses;
Expand All @@ -28,7 +28,7 @@ public class ChamyoService {
private final MoimWriter moimWriter;
private final ChamyoFinder chamyoFinder;
private final ChamyoWriter chamyoWriter;
private final ChamyoNotificationSender chamyoNotificationSender;
private final MoimRelatedNotificationSender notificationSender;

@Transactional(readOnly = true)
public MoimRoleFindResponse findMoimRole(Long darakbangId, Long moimId, DarakbangMember darakbangMember) {
Expand All @@ -51,14 +51,14 @@ public void chamyoMoim(Long darakbangId, Long moimId, DarakbangMember darakbangM
Chamyo chamyo = chamyoWriter.saveAsMoimee(moim, darakbangMember);
moimWriter.updateMoimStatusIfFull(moim);

chamyoNotificationSender.sendChamyoNotification(moimId, darakbangMember, NotificationType.NEW_MOIMEE_JOINED);
notificationSender.sendChamyoNotification(chamyo, NotificationType.NEW_MOIMEE_JOINED);
}

public void cancelChamyo(Long darakbangId, Long moimId, DarakbangMember darakbangMember) {
Moim moim = moimFinder.read(moimId, darakbangId);
Chamyo chamyo = chamyoFinder.read(moim, darakbangMember);
chamyoWriter.delete(chamyo);

chamyoNotificationSender.sendChamyoNotification(moimId, darakbangMember, NotificationType.MOIMEE_LEFT);
notificationSender.sendChamyoNotification(chamyo, NotificationType.MOIMEE_LEFT);
}
}
Loading
Loading