Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
360 commits
Select commit Hold shift + click to select a range
0f1622e
feat : 임장 체크리스트 답변에 배치사이츠 설정 #342
PicturePark1101 Apr 22, 2025
0e8b829
feat : 메소드명 변경 및 추가 #342
PicturePark1101 Apr 22, 2025
1e9b36c
feat : Response 객체 추가, 구매자 여부에 따라 분리 #342
PicturePark1101 Apr 22, 2025
7896bcc
feat : 조회수 관련 레디스 로직 추가 #342
PicturePark1101 Apr 22, 2025
bbce129
feat : 공유 임장 컨트롤러 구현 #342
PicturePark1101 Apr 22, 2025
2932816
feat : 레디스와 RDB 간 싱크 스케줄러 구현 #342
PicturePark1101 Apr 22, 2025
832df5b
feat : 레디스와 RDB 간 싱크 스케줄러 구현 #342
PicturePark1101 Apr 22, 2025
5a725a4
feat : 구매한 연필 목록 구현 완료
essaysir Apr 22, 2025
077c07c
Merge pull request #352 from Juinjang/feat/#342
PicturePark1101 Apr 23, 2025
da7d1c8
feat : 좋아요 등록 및 취소 response DTO 포맷 #343
PicturePark1101 Apr 24, 2025
6ebe381
feat : 좋아요 필드 관련 수정 #343
PicturePark1101 Apr 24, 2025
e2d8bb0
feat : 리포지토리 관련 객체 구현 #343
PicturePark1101 Apr 24, 2025
d64c2ec
feat : 좋아요 관련 로직 에러 처리 #343
PicturePark1101 Apr 24, 2025
09e40d4
feat : 좋아요 필드에 복합키 유니크 제약 조건 #343
PicturePark1101 Apr 24, 2025
b60f70e
feat : 좋아요 등록 및 취소 서비스, 컨트롤러 로직 구현 #343
PicturePark1101 Apr 24, 2025
68144a6
feat : BaseEntitiy @CreatedDate 삭제후 변경
essaysir Apr 26, 2025
8a74902
feat : 테스트코드에서 lombok 사용 가능하도록 수정
essaysir Apr 26, 2025
bb0d07f
feat : BaseEntity 변경에 따른 얻은연필, 구매연필 수정
essaysir Apr 26, 2025
a40ed94
feat : 사용한 연필 목록 불러오기 구현
essaysir Apr 26, 2025
1710360
Merge branch 'dev' into feat/#324
essaysir Apr 26, 2025
5a087ed
Merge pull request #353 from Juinjang/feat/#343
PicturePark1101 Apr 27, 2025
9d8baf4
♻️ refactor: limjangId -> noteId 변경
hyeonahhh Apr 28, 2025
51a790a
✨ feat: 마이노트 상세 - 리포트 조회
hyeonahhh Apr 28, 2025
4a4ae73
♻️ refactor: converter report 용으로 분리
hyeonahhh Apr 28, 2025
b497580
♻️ refactor: noteFinder 사용하는 로직으로 변경
hyeonahhh Apr 28, 2025
f174d90
✨ feat: 노트 공유하기 safe search 적용 전
hyeonahhh Apr 29, 2025
d22486d
✨ feat: safe search 구현
hyeonahhh Apr 29, 2025
a043b9a
feat : 공유노트 둘러보기 동적정렬(QueryDSL) 및 페이지네이션 #355
PicturePark1101 Apr 30, 2025
fa16fed
feat : 요청 포맷 #355
PicturePark1101 Apr 30, 2025
7f67189
feat : offset기반 페이지네이션으로 구성 #355
PicturePark1101 Apr 30, 2025
0bafb41
feat : 구매여부판별 쿼리 #355
PicturePark1101 Apr 30, 2025
2ff838d
feat : 좋아요 여부 쿼리 작성 #355
PicturePark1101 Apr 30, 2025
5bd449a
feat : 공유노트 service 코드 완성 #355
PicturePark1101 Apr 30, 2025
4062a22
feat : 인기순 서브쿼리 작성 #355
PicturePark1101 Apr 30, 2025
63ea9b2
feat : timeAge 요구사항에 맞게 작성 #355
PicturePark1101 Apr 30, 2025
ebc313c
feat : ExploreSortType 추가 #355
PicturePark1101 Apr 30, 2025
4c49c63
feat : ExploreSortType 추가 #355
PicturePark1101 Apr 30, 2025
53005e3
feat : 이미지 공유 false 시 null 반환하도록 변경 #355
PicturePark1101 Apr 30, 2025
23d8d09
Merge pull request #354 from Juinjang/feat/#324
essaysir May 2, 2025
6bbffa8
Merge pull request #358 from Juinjang/feat/#333
hyeonahhh May 3, 2025
d7af964
♻️ refactor: 사진 공유 여부에 따른 분기 처리 추가
hyeonahhh May 3, 2025
9610dbc
feat : 테스트 코드 yml .gitignore에 추가 #355
PicturePark1101 May 4, 2025
f089321
Merge branch 'feat/#355' of https://github.com/UMC-juinjang/Spring in…
PicturePark1101 May 4, 2025
bc32712
Merge pull request #360 from Juinjang/feat/#355
PicturePark1101 May 4, 2025
4c435e5
feat : 마이노트 구현 중간단계 #362
PicturePark1101 May 4, 2025
8a1d7c5
feat : 마이노트 구현 로직 완료 - 구매한 노트는 application에서 Map을 이용해 정렬하도록 구현 #362
PicturePark1101 May 4, 2025
9d1e981
feat : 공유한 노트 시 member 파라미터로 직접 넘겨주도록 변경 #362
PicturePark1101 May 4, 2025
4e97c82
feat: 얻은 연필 읽음 처리 하는 API 구현 완료
essaysir May 6, 2025
e92d724
feat : 애플 라이브러리 gradle 추가
essaysir May 6, 2025
3395e79
Merge pull request #363 from Juinjang/feat/#362
PicturePark1101 May 8, 2025
0825da6
feat : 공유 중단된 노트들 조건에 따라 조건문 처리 #362
PicturePark1101 May 8, 2025
8cb28c6
Merge pull request #367 from Juinjang/feat/#362
PicturePark1101 May 8, 2025
a3b33aa
✨ feat: 보상 관련 코드 추가
hyeonahhh May 9, 2025
de64361
🐛 fix: remove GCP secret JSON file from commit
hyeonahhh May 9, 2025
68b74f7
feat : 공유 중단하기 API close #337
essaysir May 9, 2025
13b3801
feat : 트랜잭션 어노테이션 과 DynamicUpdate 어노테이션 추가
essaysir May 9, 2025
8788424
Merge branch 'dev' into feat/#327
essaysir May 9, 2025
1f8c09e
Merge pull request #365 from Juinjang/feat/#364
essaysir May 10, 2025
361f907
Merge branch 'dev' into feat/#327
essaysir May 10, 2025
3e854da
feat: PencilService 분리 및 인앱결제 테스트 코드 추가
essaysir May 10, 2025
5f7436c
feat: 애플 인앱결제 서비스 구현
essaysir May 10, 2025
8573b72
feat : 애플 인앱 결제 성공시 구현
essaysir May 10, 2025
5de0548
feat : 조회수 로직(redis 접근) 별도의 Service로 분리 #366
PicturePark1101 May 11, 2025
f1c12ec
feat : 조회수 집계 방식 변경에 따라 스케줄러 로직 변경 #366
PicturePark1101 May 11, 2025
fd112f2
feat : 조회수 리워드 정책 domain 패키지 내에 객체 생성 #366
PicturePark1101 May 11, 2025
ae82096
feat : 조회수 객체 분리에 따라 기존 공유노트 서비스 변경 #366
PicturePark1101 May 11, 2025
809be9c
feat : reward 엔티티 생성 #366
PicturePark1101 May 11, 2025
f47bd33
feat : 얻은 연필 타입으로 조회수 유형 추가 #366
PicturePark1101 May 11, 2025
25fc174
feat : 리워드 관련 서비스 생성 및 로직 작성 #366
PicturePark1101 May 11, 2025
26aebe1
feat : 조회수 달성 관련 이벤트 리스너로 비동기 동작하도록 구현 #366
PicturePark1101 May 11, 2025
56d9e2e
fix : 구매 연필 사용 시 PurchasedPencil에도 반영되도록 fix #357
PicturePark1101 Apr 30, 2025
28aff32
feat : 구매 내역 조회 시 성공한 거래만 조회되도록 조건 쿼리 추가 #357
PicturePark1101 May 4, 2025
3b1efec
Merge pull request #361 from Juinjang/fix/#357
PicturePark1101 May 11, 2025
79cdd75
fix : 임장 둘러보기에서 공유 중단된 노트 조회하지 않도록 조건문 처리 #371
PicturePark1101 May 11, 2025
f2784d6
fix : 임장 둘러보기에서 공유 중단된 노트 조회하지 않도록 조건문 처리 - count 쿼리에도 추가 #371
PicturePark1101 May 11, 2025
8f5c3af
Merge pull request #372 from Juinjang/fix/#371
PicturePark1101 May 12, 2025
bb702f6
Merge pull request #370 from Juinjang/feat/#366
PicturePark1101 May 12, 2025
155cc0a
Merge branch 'dev' into feat/#327
essaysir May 13, 2025
1dd424f
✨ feat: 공유 조건 충족 여부 조회 API
hyeonahhh May 13, 2025
6f05d17
🐛 fix: limjang entity에 isSharable 필드 추가
hyeonahhh May 13, 2025
f2629f7
🐛 fix: createAcquiredPencil method에 type 매갭ㄴìˆ추가
hyeonahhh May 13, 2025
d64ecd9
🐛 fix: 현재 공유되어ì공유 가능한 노트인지 deleted 여부 파악
hyeonahhh May 13, 2025
6ba946a
✨ feat: safe search 분석 결과 로깅 추가
hyeonahhh May 13, 2025
03f6e65
🐛 fix: 세이프 서치 기준 변경
hyeonahhh May 14, 2025
e150373
Merge pull request #374 from Juinjang/feat/#334
hyeonahhh May 14, 2025
cf96d58
Merge pull request #376 from Juinjang/fix/#375
hyeonahhh May 14, 2025
de6196d
fix : 공유 가능한 노트 조회 쿼리 수정 #379
PicturePark1101 May 16, 2025
0d6b9ac
fix : response 필드 제거 #379
PicturePark1101 May 16, 2025
4c46255
🐛 fix: 변수 이름 변경
hyeonahhh May 16, 2025
82d1ffe
Merge pull request #380 from Juinjang/fix/#379
PicturePark1101 May 16, 2025
96a952b
feat : 애플 인앱 결제 구현 처리 완료
essaysir May 17, 2025
ee632fd
fix : 사용하지 않는 import 구문 삭제
essaysir May 17, 2025
025c4c2
Merge branch 'dev' into feat/#336
hyeonahhh May 17, 2025
d9f4750
Merge pull request #359 from Juinjang/feat/#336
hyeonahhh May 17, 2025
93a8ad2
♻️ refactor: checklist 답변 생성 및 수정지 isSharable 업데이트 추가
hyeonahhh May 18, 2025
6017f0e
Merge pull request #382 from Juinjang/refactor/#377
hyeonahhh May 18, 2025
9d60a3a
Merge branch 'dev' into feat/#335
hyeonahhh May 18, 2025
1c4dfb7
Merge pull request #383 from Juinjang/feat/#335
hyeonahhh May 18, 2025
cebc3bd
♻️ refactor: 공유된 임장 구입시 노트 가격 서버에서 처리
hyeonahhh May 18, 2025
1767fb9
🐛 fix: fix price type integer to long
hyeonahhh May 18, 2025
f865810
feat : CI/CD yml , gradle 수정
essaysir May 25, 2025
46dbae4
Merge branch 'dev' into feat/#327
essaysir May 25, 2025
65a7e00
feat : 애플 , 세이프서치 라이브러리 추가
essaysir May 25, 2025
3136f6a
feat : 테스트시에 에러 로그 추가
essaysir May 25, 2025
aef0f59
fix : 테스트 오류 수정
essaysir May 25, 2025
f887b91
feat : 임장 생성 시 response 값으로 noteId 반환 #386
PicturePark1101 May 25, 2025
355fd16
Merge pull request #387 from Juinjang/feat/#386
PicturePark1101 May 25, 2025
c909757
Merge branch 'dev' into feat/#327
essaysir May 25, 2025
8996da4
Merge pull request #381 from Juinjang/feat/#327
essaysir May 25, 2025
2d87601
fix : 테스트 Action 빼기
sonjs7554 May 26, 2025
7e05886
feat : OOM 발생 시 Heapdump 생성하도록 수정
essaysir May 26, 2025
60a91b8
fix : DockerFile 오류 수정
essaysir May 26, 2025
af8abbe
refactor : request parm 패키지 구조 변경 #373
PicturePark1101 May 16, 2025
c71ff9e
feat : sharednote find하는 메소드에 deleteAtIsNull 추가(소프트딜리트 관련) #373
PicturePark1101 May 16, 2025
e2eaa2e
refactor : 패키지 구조, 네이밍 변경 반영 #373
PicturePark1101 May 16, 2025
01018db
feat : 공유노트 신고 엔티티 생성 #373
PicturePark1101 May 16, 2025
b7b52c9
feat : 공유노트 신고 로직 구현 #373
PicturePark1101 May 16, 2025
12efec0
feat : 공유노트 신고 시 디스코드 알림 가도록 이벤트 리스너 구현 #373
PicturePark1101 May 16, 2025
949a032
feat : openfeign 방식 webclient로 변경 #373
PicturePark1101 May 16, 2025
0794de4
feat : 동기 방식에서 subscribe() 방식으로 전환 #373
PicturePark1101 May 27, 2025
1b75051
feat : Apple Notification Comsumption 경우 개발
essaysir May 27, 2025
8b07d9d
Merge pull request #378 from Juinjang/feat/#373
PicturePark1101 May 28, 2025
9df777f
feat : 공유된 임장인지 확인하는 쿼리문 추가 #390
PicturePark1101 May 30, 2025
8b7ece3
feat : 상세보기 화면 response body값에 공유여부 필드값 추가 #390
PicturePark1101 May 30, 2025
a30864b
Merge branch 'dev' into feat/#337
sonjs7554 May 30, 2025
cccee7e
feat : SharedNote 찾을 때, null 조건 추가
sonjs7554 May 30, 2025
f0eb399
Merge pull request #391 from Juinjang/feat/#390
PicturePark1101 May 30, 2025
eb823b4
Merge pull request #385 from Juinjang/refactor/#384
hyeonahhh Jun 1, 2025
c6894d5
Merge branch 'dev' into feat/#337
essaysir Jun 1, 2025
50719b0
Merge pull request #369 from Juinjang/feat/#337
essaysir Jun 1, 2025
bc02217
refactor : 메소드명 변경 #389
PicturePark1101 May 30, 2025
e6f9b99
feat : 공유된 임장은 필터링 되도록 로직 추가 #389
PicturePark1101 May 30, 2025
566a78c
feat : 공유된 노트들을 조회하는 쿼리문 추가 #389
PicturePark1101 Jun 1, 2025
73dabd1
feat : 애플 키 파일 경로 추가 #389
PicturePark1101 Jun 1, 2025
e0199c2
fix : 버그 고침 - sharedNoteId 조회를 noteId로 변경 #389
PicturePark1101 Jun 1, 2025
1346fb5
Merge pull request #392 from Juinjang/fix/#389
PicturePark1101 Jun 1, 2025
497e3d9
feat : 검색 키워드 조건 동적 쿼리문 추가 #393
PicturePark1101 Jun 1, 2025
69cc8b6
refactor : 메소드명 변경 #393
PicturePark1101 Jun 1, 2025
8f7a696
Merge pull request #395 from Juinjang/feat/#393
PicturePark1101 Jun 1, 2025
57d1d4d
♻️ refactor: share note logic fix
hyeonahhh Jun 1, 2025
2d2a8ba
🐛 fix: repository method 변경
hyeonahhh Jun 1, 2025
8cad566
🐛 fix: sharedNote 제약 조건 삭제
hyeonahhh Jun 1, 2025
d2c5216
feat : 임장 상세 response 도로명 주소, 상세 주소 분리 #399
PicturePark1101 Jun 5, 2025
09595e1
Merge pull request #400 from Juinjang/feat/#399
PicturePark1101 Jun 5, 2025
becbd12
Merge branch 'dev' into refactor/#394
hyeonahhh Jun 5, 2025
0f98916
Merge pull request #396 from Juinjang/refactor/#394
hyeonahhh Jun 5, 2025
cde4d2a
fix : DummyAppleService 삭제
essaysir Jun 5, 2025
f97b55a
feat : 애플 서비스 환불 처리 구현 완료
essaysir Jun 5, 2025
d2f5bc3
feat : 생애 총 구매 금액과 환불 금액 로직 변경
essaysir Jun 5, 2025
4c4eeda
Merge branch 'dev' into feat/#327
essaysir Jun 5, 2025
c1356bc
🐛 fix: fix conflicts
hyeonahhh Jun 5, 2025
ad8d8bb
Merge pull request #402 from Juinjang/fix/#401
hyeonahhh Jun 5, 2025
8655768
🐛 fix: get report with limjang detail
hyeonahhh Jun 6, 2025
0e51863
fix : 임장 나누기 화면에서 bcode null일 경우 조회 안되도록 쿼리에 조건절 추가 #398
PicturePark1101 Jun 6, 2025
1e81a68
fix : 임장 둘러보기 화면에서 삭제된 임장은 나오지 않도록 쿼리에 조건절 추가 #398
PicturePark1101 Jun 6, 2025
4999a3c
fix : 좋아요한 노트, 공유한 노트에서 삭제된 임장은 나오지 않도록 쿼리에 조건절 추가 #398
PicturePark1101 Jun 6, 2025
0c37f9f
🐛 fix: report 조회 v2 api response 구조 변경
hyeonahhh Jun 7, 2025
b7caf67
Merge pull request #405 from Juinjang/fix/#398
PicturePark1101 Jun 9, 2025
0796d68
Merge pull request #404 from Juinjang/fix/#403
hyeonahhh Jun 10, 2025
9ba43dc
fix : NPE 지점 fix #406
PicturePark1101 Jun 10, 2025
5953760
feat : 공유노트 생성시 조회수 0으로 설정 #406
PicturePark1101 Jun 10, 2025
d10d42e
Merge pull request #407 from Juinjang/fix/#406
PicturePark1101 Jun 10, 2025
b4ab46d
feat : 결제 시에 디스코드 알림 추가
essaysir Jun 11, 2025
76d6849
Merge branch 'dev' into feat/#327
essaysir Jun 11, 2025
0a16c9b
feat: 얻은 연필 전체 읽음 여부 확인 API 추가 및 읽음 처리 응답 필드 확장
essaysir Jun 13, 2025
69a13a8
feat: Apple 인앱 구매 응답에 구매 수량 및 잔여 수량 필드 추가
essaysir Jun 13, 2025
23841df
test : isAcquiredPencilReadStatus 메서드에 대한 테스트 추가
essaysir Jun 13, 2025
fd9bba4
Merge pull request #411 from Juinjang/feat/#410
essaysir Jun 14, 2025
11540fb
fix : 공유노트 생성시 좋아요 수 0으로 설정 #412
PicturePark1101 Jun 15, 2025
17275f0
Merge pull request #413 from Juinjang/fix/#412
PicturePark1101 Jun 15, 2025
5f47f8a
🐛 fix: sharedNoteId로 조회되는 report 조회 api 추가
hyeonahhh Jun 16, 2025
3ea8168
Merge pull request #415 from Juinjang/fix/#414
hyeonahhh Jun 17, 2025
5da855d
feat : member 엔티티 변경
essaysir Jun 18, 2025
8e17a00
feat : OauthService 리팩토링 및 회원탈퇴를 soft delete 로 변경
essaysir Jun 19, 2025
2b2711f
feat : jwt 로 멤버를 불러올 때, status 가 Active 인 것만 불러오도록 수정
essaysir Jun 19, 2025
9006914
🐛 fix: sharedNote에 price 필드값 업데이트
hyeonahhh Jun 20, 2025
c669657
Merge pull request #418 from Juinjang/fix/#417
hyeonahhh Jun 20, 2025
0480567
fix : 회원 탈퇴시, 닉네임 null 처리
essaysir Jun 22, 2025
85e516f
Merge pull request #416 from Juinjang/feat/#409
essaysir Jun 22, 2025
356cd04
Merge branch 'dev' into feat/#327
essaysir Jun 22, 2025
dad7c76
revert : OauthService 관련 복구하기
essaysir Jun 22, 2025
cef38c6
fix : 애플 서비스 인증 에러 수정
essaysir Jun 24, 2025
048bd5d
feat : certs 다운 방식 변경 - CD.yml 변경
essaysir Jun 24, 2025
6e0074a
feat : gitignore 설정 변경 및 cert 파일 푸쉬
essaysir Jun 24, 2025
ed302d7
fix : 애플 결제 오류 수정
essaysir Jun 24, 2025
e901ed1
Merge branch 'dev' into feat/#327
essaysir Jun 25, 2025
c6e3821
feat : Apple Notification Service 구현 완료
essaysir Jun 25, 2025
82f766e
Merge pull request #408 from Juinjang/feat/#327
essaysir Jun 25, 2025
7826b22
🐛 fix: category field add
hyeonahhh Jun 26, 2025
dcb458e
Merge pull request #420 from Juinjang/fix/#419
hyeonahhh Jun 26, 2025
7ee84c0
🐛 fix: totalRate field add
hyeonahhh Jun 26, 2025
50194ff
Merge pull request #422 from Juinjang/fix/#421
hyeonahhh Jun 26, 2025
2ca8dd7
fix : 구매한 연필 , 얻은 연필 엔티티 변경
essaysir Jun 26, 2025
f70f8f4
feat : 엔티티 변경으로 인한 코드 변경점
essaysir Jun 26, 2025
ceb85ab
feat : sql 로그, 파라미터 찍히도록 logback 설정 추가 #425
PicturePark1101 Jun 28, 2025
365872c
feat : 로그 보기 쉽도록 줄띄기, 제외 헤더 정보 추가 #425
PicturePark1101 Jun 28, 2025
9030769
feat : 콘솔에는 쿼리문 뜨지 않도록 fix #425
PicturePark1101 Jun 28, 2025
6a5fa9b
Merge pull request #426 from Juinjang/feat/#425
PicturePark1101 Jun 28, 2025
d99be39
feat: 얻은 연필 엔티티 변경
essaysir Jun 30, 2025
b549a78
Merge pull request #424 from Juinjang/fix/#423
essaysir Jun 30, 2025
588bfa5
feat : OauthService 로직 변경 - Soft Delete 방식
essaysir Jun 30, 2025
bc8a9f7
fix : 회원탈퇴시 오류 수정 - 변경사항이 저장되지 않음.
essaysir Jun 30, 2025
0accbfb
fix : 로그인 오류 수정 return 값이 같도록 수정
essaysir Jun 30, 2025
929414d
fix : agreeVersion 누락 수정
essaysir Jun 30, 2025
2411d06
fix : 회원탈퇴시 이메일 없애도록 수정
essaysir Jun 30, 2025
ad24d52
fix : 회원탈퇴 로직 변경
essaysir Jun 30, 2025
8c85909
fix : 멤버 엔티티 수정 - 이메일 nullable false 삭제
essaysir Jun 30, 2025
83a749c
🐛 fix: safe search log 추가
hyeonahhh Jul 2, 2025
956612f
Merge pull request #429 from Juinjang/fix/#428
hyeonahhh Jul 2, 2025
0bc8cee
fix : 노트 공유시, 얻는 연필 content 수정 progress #430
essaysir Jul 6, 2025
4d9712b
fix : 얻은 연필 목록에서 buildingName 같이 넘기도록 수정
essaysir Jul 6, 2025
d8cee6c
Merge pull request #431 from Juinjang/fix/#430
essaysir Jul 6, 2025
238fe34
feat : 이미지 없을 시 null이 아닌 빈배열 return #432
PicturePark1101 Jul 8, 2025
7d5f91d
feat : dev 가입시에도 디스코드 알림 가도록 고침 #432
PicturePark1101 Jul 8, 2025
37e3d30
refactor : 불필요한 import 제거 #432
PicturePark1101 Jul 8, 2025
0189e58
Merge pull request #433 from Juinjang/feat/#432
PicturePark1101 Jul 8, 2025
4515bcd
fix : 임장 시기 리턴하는 로직 fix #435
PicturePark1101 Jul 10, 2025
d95ca76
Merge pull request #436 from Juinjang/fix/#435
PicturePark1101 Jul 10, 2025
1f81020
fix : sigungo, bname1, bname2에서 null 뿐만 아니라 빈배열도 filter #437
PicturePark1101 Jul 12, 2025
ae9ada3
fix : 임장 상세보기에서 도로명 주소만 리턴 #437
PicturePark1101 Jul 12, 2025
3e91846
fix : 임장 주인인 경우 고려하여 isBuyer필드 fix #437
PicturePark1101 Jul 12, 2025
050b6aa
fix : 데이터 갯수 불일치 문제 fix #437
PicturePark1101 Jul 12, 2025
7f6119d
Merge pull request #438 from Juinjang/fix/#437
PicturePark1101 Jul 12, 2025
1950557
feat : 조회수 관련 스케줄러 비활성화 #434
PicturePark1101 Jul 12, 2025
82baf4b
fix : error fix - 조회수 지급시 트랜잭션 새로 열리도록 구성 #434
PicturePark1101 Jul 12, 2025
e213dbf
feat : 조회수 읽어오는 것 RDB에서 수행하도록 변경 #434
PicturePark1101 Jul 12, 2025
0f7cbb3
feat : 조회수 증가 jpql로 변경 #434
PicturePark1101 Jul 12, 2025
7feface
refactor : 불필요한 메소드 제거 #434
PicturePark1101 Jul 12, 2025
e48226f
Merge pull request #439 from Juinjang/feat/#434
PicturePark1101 Jul 12, 2025
78a329f
feat : 내가 공유한 임장의 경우에도 isPurchase true로 반환 #440
PicturePark1101 Jul 12, 2025
86126b0
Merge pull request #441 from Juinjang/feat/#440
PicturePark1101 Jul 12, 2025
71ce85f
feat : 개발 환경에서만 발생하는 MockController 생성
essaysir Jul 13, 2025
27ad244
feat : 환불 시에 디스코드 알림 보내도록 구현
essaysir Jul 13, 2025
7e11c69
🐛 fix: sharedNote 생성시 response에 sharedNoteId 추가
hyeonahhh Jul 17, 2025
987f3a4
Merge pull request #444 from Juinjang/fix/#443
hyeonahhh Jul 17, 2025
ec88243
fix : 내 임장 노트 조회 response 요소 추가 - 수정화면에서 필요 #445
PicturePark1101 Jul 19, 2025
4fae0fe
Merge pull request #446 from Juinjang/fix/#445
PicturePark1101 Jul 19, 2025
f160a46
fix: safesearch likelihood 수정
hyeonahhh Jul 22, 2025
b435783
fix: safesearch racy 지표 수정
hyeonahhh Jul 22, 2025
d58cb0e
feat : 약관 동의 API 구현 하기
essaysir Jul 26, 2025
26081bc
feat : 에러 코드 추가
essaysir Jul 26, 2025
2bfb68b
Merge pull request #447 from Juinjang/feat/agreement
essaysir Jul 26, 2025
47a0817
feat : 나누기 화면에 rewardPencil 추가 #448
PicturePark1101 Jul 29, 2025
6fcb481
feat : 공유 이력이 있고, 공유 중단된 임장 조회 쿼리 추가 #448
PicturePark1101 Jul 29, 2025
7d234b5
feat : 예상 임장 rewardPencil 로직 추가 #448
PicturePark1101 Jul 29, 2025
78d5f46
Merge pull request #449 from Juinjang/feat/#448
PicturePark1101 Jul 29, 2025
2fec964
feat : 최신 앱 버전 API 구현
essaysir Aug 8, 2025
656dde7
feat : 운영서버 github cd.yaml 변경
essaysir Aug 14, 2025
6de4f6e
refactor : notification 로깅 추가
essaysir Aug 14, 2025
2fe5498
fix : apple notification Security 허용
essaysir Aug 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
33 changes: 33 additions & 0 deletions .githooks/commit-msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/bin/bash

# 커밋 메시지 파일
commit_msg_file=$1

# 커밋 메시지 읽기
commit_msg=$(cat "$commit_msg_file")

# 정규식 패턴 (feat|fix|docs|refactor|test|chore 등의 prefix 필수)
pattern="^(feat|fix|docs|refactor|test|chore): .+"

# 메시지 검증 (형식이 맞지 않으면 커밋 차단)
if ! [[ $commit_msg =~ $pattern ]]; then
echo "❌ [ERROR] 커밋 메시지가 잘못되었습니다!"
echo "✅ 올바른 형식: feat: 기능 추가, fix: 버그 수정, docs: 문서 추가 등"
exit 1
fi

# 커밋 메시지 패턴에 따라 깃이모지 추가
case "$commit_msg" in
feat:*) new_msg="✨ $commit_msg" ;;
fix:*) new_msg="🐛 $commit_msg" ;;
docs:*) new_msg="📚 $commit_msg" ;;
refactor:*) new_msg="♻️ $commit_msg" ;;
test:*) new_msg="🧪 $commit_msg" ;;
chore:*) new_msg="🛠️ $commit_msg" ;;
*) new_msg="$commit_msg" ;; # 기본적으로 변경하지 않음
esac

# 수정된 메시지를 커밋 메시지 파일에 덮어쓰기
echo "$new_msg" > "$commit_msg_file"

exit 0
27 changes: 26 additions & 1 deletion .github/workflows/dev-cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,35 @@ jobs:
echo "${{ secrets.APPLE_AUTH }}" > ./src/main/resources/AUTHKEY_JUINJAG.p8
shell: bash

# APPLE IN_APP 결제 관련 프로세스 시작
- name: Create certs and keys directories
run: |
mkdir -p ./src/main/resources/keys

- name: Create IAP .p8 Key
run: |
echo "${{ secrets.APPLE_IAP_KEY }}" > ./src/main/resources/keys/SubscriptionKey_Q5646J7W54.p8

# 키 파일 크기 확인 (내용은 로그에 출력하지 않음)
if [ -s "./src/main/resources/keys/SubscriptionKey_Q5646J7W54.p8" ]; then
echo "✅ IAP key file created: $(wc -c < ./src/main/resources/keys/SubscriptionKey_Q5646J7W54.p8) bytes"
else
echo "❌ IAP key file is empty!"
exit 1
fi

# PEM 형식 확인
if grep -q "BEGIN PRIVATE KEY" ./src/main/resources/keys/SubscriptionKey_Q5646J7W54.p8; then
echo "✅ IAP key file appears to be in PEM format"
else
echo "⚠️ IAP key file may not be in PEM format"
fi
shell: bash
# APPLE IN_APP 결제 관련 프로세스 끝

- name: Build With Gradle
run: ./gradlew build -x test


- name: Login to Docker Hub
run: |
echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin
Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/dev-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,11 @@ jobs:
- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Create application-dev.yml
run: |
mkdir -p ./src/main/resources
echo "${{ secrets.PROPERTIES_DEV }}" > ./src/main/resources/application-dev.yml
shell: bash

- name: Build With Gradle
run: ./gradlew build -x test
11 changes: 11 additions & 0 deletions .github/workflows/prod-cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,17 @@ jobs:
echo "${{ secrets.APPLE_AUTH }}" > ./src/main/resources/AUTHKEY_JUINJAG.p8
shell: bash

# APPLE IN_APP 결제 관련 프로세스 시작
- name: Create certs and keys directories
run: |
mkdir -p ./src/main/resources/keys

- name: Create IAP .p8 Key
run: |
echo "${{ secrets.APPLE_IAP_KEY }}" > ./src/main/resources/keys/${{ secrets.APPLE_IAP_KEY_NAME }}
shell: bash
# APPLE IN_APP 결제 관련 프로세스 끝

- name: Build With Gradle
run: ./gradlew build -x test

Expand Down
8 changes: 7 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,12 @@ out/
/application.yml

/src/main/resources/application-local.yml
/src/main/resources/application.yml
/src/main/resources/application-dev.yml
/src/main/resources/application-prod.yml
/src/main/generated/*
/src/main/resources/*.json
/src/main/generated/*
/src/test/java/resources/application-*.yml

src/main/resources/keys
#src/main/resources/certs
5 changes: 4 additions & 1 deletion Dockerfile-dev
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
FROM openjdk:17-jdk

ARG JAR_FILE=./build/libs/juinjang-0.0.1-SNAPSHOT.jar
ENV GOOGLE_APPLICATION_CREDENTIALS=/app/config/service-account-key.json
COPY ${JAR_FILE} app.jar
ENTRYPOINT [ "java", "-jar", "-Dspring.profiles.active=dev", "/app.jar" ]

ENTRYPOINT ["java", "-XX:+HeapDumpOnOutOfMemoryError", "-XX:HeapDumpPath=/var/heapdumps/juinjang", "-Dspring.profiles.active=dev", "-jar", "/app.jar"]




114 changes: 67 additions & 47 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,94 +1,114 @@
plugins {
id 'java'
id 'org.springframework.boot' version '3.2.1'
id 'io.spring.dependency-management' version '1.1.4'
id 'java'
id 'org.springframework.boot' version '3.2.1'
id 'io.spring.dependency-management' version '1.1.4'
}

group = 'umc.5th'
version = '0.0.1-SNAPSHOT'

java {
sourceCompatibility = '17'
sourceCompatibility = '17'
}
ext {
springCloudVersion = "2023.0.0"
springCloudVersion = "2023.0.0"
}

dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}

configurations {
compileOnly {
extendsFrom annotationProcessor
}
compileOnly {
extendsFrom annotationProcessor
}
}

repositories {
mavenCentral()
mavenCentral()
}

jar {
enabled = false
enabled = false
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.boot:spring-boot-starter-actuator'

//
implementation 'org.springframework.cloud:spring-cloud-starter-openfeign' // 4.1.0
implementation 'org.springframework.retry:spring-retry'
implementation 'org.springframework.boot:spring-boot-starter-aop'
implementation 'org.springframework.boot:spring-boot-starter-webflux'
//
implementation 'org.springframework.cloud:spring-cloud-starter-openfeign' // 4.1.0
// implementation 'org.springframework.cloud:spring-cloud-commons:4.1.1'

compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.mysql:mysql-connector-j'
testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'

runtimeOnly 'com.mysql:mysql-connector-j'
// runtimeOnly 'mysql:mysql-connector-java'

annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'

// h2
runtimeOnly 'com.h2database:h2'

//security
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
implementation 'org.springframework.boot:spring-boot-starter-security'
testImplementation 'org.springframework.security:spring-security-test'

// h2
runtimeOnly 'com.h2database:h2'
//jwt
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5'
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'

//security
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
implementation 'org.springframework.boot:spring-boot-starter-security'
testImplementation 'org.springframework.security:spring-security-test'
//S3
implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE'

//jwt
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5'
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
// querydsl
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"

//S3
implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE'
implementation 'commons-codec:commons-codec:1.16.0' // Base64 인코딩을 위한 의존성

// querydsl
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
// prometheus
implementation 'io.micrometer:micrometer-registry-prometheus'

implementation 'commons-codec:commons-codec:1.16.0' // Base64 인코딩을 위한 의존성
// Redis
implementation 'org.springframework.boot:spring-boot-starter-data-redis'

// prometheus
implementation 'io.micrometer:micrometer-registry-prometheus'
//Safe Search
implementation 'com.google.cloud:google-cloud-vision:3.58.0'

// Apple
implementation 'com.apple.itunes.storekit:app-store-server-library:3.4.0'
}

tasks.named('test') {
useJUnitPlatform()
useJUnitPlatform()
testLogging {
events("passed", "skipped", "failed")
showStandardStreams = false
}
}


def generated = 'src/main/generated'
tasks.withType(JavaCompile).configureEach {
options.getGeneratedSourceOutputDirectory().set(file(generated))
options.getGeneratedSourceOutputDirectory().set(file(generated))
}

clean {
delete file(generated)
}
delete file(generated)
}
8 changes: 4 additions & 4 deletions src/main/java/umc/th/juinjang/JuinjangApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,16 @@
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.cloud.openfeign.FeignAutoConfiguration;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import org.springframework.retry.annotation.EnableRetry;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@EnableJpaAuditing
@EnableAsync
// @EnableAsync
@ImportAutoConfiguration({FeignAutoConfiguration.class})
@EnableScheduling
@EnableRetry
public class JuinjangApplication {

public static void main(String[] args) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package umc.th.juinjang.api.address.service;

import org.springframework.stereotype.Component;

import lombok.RequiredArgsConstructor;
import umc.th.juinjang.domain.limjang.model.Address;
import umc.th.juinjang.domain.limjang.repository.AddressRepository;

@Component
@RequiredArgsConstructor
public class AddressUpdater {

private final AddressRepository addressRepository;

public void save(Address address) {
addressRepository.save(address);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package umc.th.juinjang.api.appVersion.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import lombok.RequiredArgsConstructor;
import umc.th.juinjang.api.appVersion.controller.response.AppVersionResponse;
import umc.th.juinjang.api.dto.ApiResponse;
import umc.th.juinjang.config.AppVersionProperties;

@RestController
@RequestMapping("/api/app/version")
@RequiredArgsConstructor
public class AppVersionController {

private final AppVersionProperties appVersionProperties;

@GetMapping("/ios")
public ApiResponse<AppVersionResponse> getIOSVersion() {
return ApiResponse.onSuccess(AppVersionResponse.of(appVersionProperties.getIos()));
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package umc.th.juinjang.api.appVersion.controller.response;

public record AppVersionResponse(
String version
) {
public static AppVersionResponse of(String version) {
return new AppVersionResponse(version);
}
}
Loading