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

[Feature] 작품 퀴즈 없을 시, 지역 퀴즈 연결 기능 구현 #192

Merged
merged 504 commits into from
Sep 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
504 commits
Select commit Hold shift + click to select a range
aba046d
feat: ControllerExceptionAdvice ExceptionHandler 생성
Jeongmin39 Sep 18, 2024
7632a53
[Feature] 여행 일정 생성 기능 구현
Jeongmin39 Sep 18, 2024
5ae9032
[Feature] 예외 처리 세팅
Jeongmin39 Sep 18, 2024
6948394
feat: 여행 기록 삭제 기능 구현
yangchef1 Sep 18, 2024
4c8cf5e
feat: 여행 기록 삭제 기능 url 매핑
yangchef1 Sep 18, 2024
b4b2985
setting: ErrorCode 추가
Jeongmin39 Sep 18, 2024
4c4ab9a
feat: S3UploadException 생성
Jeongmin39 Sep 18, 2024
344e80c
feat: FileConversionException 생성
Jeongmin39 Sep 18, 2024
c44f8a3
refac: S3Service 예외 처리 리팩토링 및 추가 구현
Jeongmin39 Sep 18, 2024
6170eaa
feat: RecordNotFoundException 생성
Jeongmin39 Sep 18, 2024
7336def
feat: RecordImageNotFoundException 생성
Jeongmin39 Sep 18, 2024
e4d05d0
feat: RecordImageProcessingException 생성
Jeongmin39 Sep 18, 2024
a1b3ee9
feat: RepresentativeImageNotFoundException 생성
Jeongmin39 Sep 18, 2024
fe36397
refac: RecordService 예외 처리 리팩토링 및 추가 구현
Jeongmin39 Sep 18, 2024
3c2e432
refac: RecordImageService 예외 처리 리팩토링 및 추가 구현
Jeongmin39 Sep 18, 2024
3c5ee73
refac: RepresentativeImageService 예외 처리 리팩토링 및 추가 구현
Jeongmin39 Sep 18, 2024
9a7ad48
[Feature] 여행 일정 삭제 기능 구현
Jeongmin39 Sep 18, 2024
632b6c6
[Refactor] Record 도메인 예외 처리 리팩토링
Jeongmin39 Sep 18, 2024
2af4eb6
fix: Request 받는 형식 @RequestPart -> @ModelAttribute로 변경
yangchef1 Sep 19, 2024
f4625bc
Merge branch 'dev' into fix/85
yangchef1 Sep 19, 2024
231dc0c
[Bug] Content-Type 'application/octet-stream' is not supported 에러 해결 #85
yangchef1 Sep 19, 2024
3e191f1
fix: RecordService 오타 수정
yangchef1 Sep 19, 2024
137f5cd
setting: ErrorCode 추가
Jeongmin39 Sep 19, 2024
3a8c1cd
feat: EmptyJwtTokenException 생성
Jeongmin39 Sep 19, 2024
976693a
feat: InvalidJwtTokenException 생성
Jeongmin39 Sep 19, 2024
653d51a
feat: ExpiredJwtTokenException 생성
Jeongmin39 Sep 19, 2024
057829f
feat: UnsupportedJwtTokenException 생성
Jeongmin39 Sep 19, 2024
0b0fbfe
feat: OAuth2TokenException 생성
Jeongmin39 Sep 19, 2024
3de5fc4
feat: UserNotFoundException 생성
Jeongmin39 Sep 19, 2024
174fca2
feat: BaseException 생성자 추가
Jeongmin39 Sep 19, 2024
247b170
feat: JwtCustomException 추가
Jeongmin39 Sep 19, 2024
179648b
refac: JwtTokenProvider 예외 처리 리팩토링
Jeongmin39 Sep 19, 2024
b5b08bb
refac: JwtAuthenticationFilter 예외 처리 리팩토링
Jeongmin39 Sep 19, 2024
d40684d
refac: AuthService 예외 처리 리팩토링
Jeongmin39 Sep 19, 2024
149cad4
refac: UserService 예외 처리 리팩토링
Jeongmin39 Sep 19, 2024
3ccbfad
[Refactor] Token 및 User 도메인 예외 처리 리팩토링
Jeongmin39 Sep 19, 2024
99b3108
feat: 여행 일정 기간 수정 DTO 작성
yangchef1 Sep 19, 2024
871d6df
feat: Schedule Entity 여행 기간 수정 메서드 구현
yangchef1 Sep 19, 2024
ae090e6
feat: 여행 일정 기간 수정 기능 구현
yangchef1 Sep 19, 2024
0458df0
feat: 여행 일정 기간 수정 기능 url 매핑
yangchef1 Sep 19, 2024
1a249be
[Feature] 여행 일정 기간 수정 기능 구현 #80
yangchef1 Sep 19, 2024
49fee7a
setting: ErrorCode 추가
Jeongmin39 Sep 19, 2024
de04b3e
refac: AuthService login 메소드 로직 수정
Jeongmin39 Sep 19, 2024
df6aa1c
refac: AuthController 로그인 RequestParam 수정
Jeongmin39 Sep 19, 2024
e7a65d2
[Refactor] 카카오 로그인 Request Param 인가코드 -> 카카오 accessToken으로 로직 수정
Jeongmin39 Sep 19, 2024
1810e6d
feat: 여행 일정 배너 사진 변경 DTO 작성
yangchef1 Sep 20, 2024
565a510
feat: Schedule Entity에 updateImage 메서드 구현
yangchef1 Sep 20, 2024
4bb6618
feat: 여행 일정 배너 사진 변경 기능 구현
yangchef1 Sep 20, 2024
5a00e5a
feat: 여행 일정 배너 사진 변경 기능 url 매핑
yangchef1 Sep 20, 2024
6595dfd
[Feature] 여행 일정 배너 사진 변경 기능 구현 #81
yangchef1 Sep 20, 2024
c400bcf
feat: Region, City 요청, 응답 형태 Integer로 변경
yangchef1 Sep 20, 2024
0a8d8d3
[Feature] Region, City 요청, 응답 형태 Integer로 변경 #93
yangchef1 Sep 20, 2024
96b61ac
fix: 배포 환경 redirect-uri 추가
Jeongmin39 Sep 20, 2024
d9a7c9c
fix: redirect-uri 분리
Jeongmin39 Sep 20, 2024
e129764
[HOTFIX] 배포 환경에서 발생하는 로그인 에러 해결
Jeongmin39 Sep 20, 2024
304c503
setting: SuccessCode 추가
Jeongmin39 Sep 20, 2024
d3906b4
feat: SpotController 주변 장소 상세 조회 api 작성
Jeongmin39 Sep 20, 2024
0325e64
[Feature] 주변 장소의 상세 정보 조회 API 구현
Jeongmin39 Sep 20, 2024
0e0b930
feat: 일정 조회를 위해 DTO에 id field 추가
yangchef1 Sep 21, 2024
211ad5b
feat: ScheduleRepository에 findAllByUser 추가
yangchef1 Sep 21, 2024
1bb8f14
feat: 여행 일정 목록 조회 기능 구현
yangchef1 Sep 21, 2024
e816e8a
feat: 여행 일정 목록 조회 url 매핑
yangchef1 Sep 21, 2024
2aaa267
[Feature] 여행 일정 목록 조회 구현 #82
yangchef1 Sep 21, 2024
caca17c
feat: 여행 일정에 장소 추가 DTO 작성
yangchef1 Sep 21, 2024
787ea5e
feat: LocationRepository day, seq 계산을 위한 메서드 추가
yangchef1 Sep 21, 2024
925a971
feat: Location Entity 필드 변경
yangchef1 Sep 21, 2024
0802bc9
feat: 여행 일정에 장소 추가 기능 구현
yangchef1 Sep 21, 2024
8086388
feat: 여행 일정에 장소 추가 url 매핑
yangchef1 Sep 21, 2024
f52ba42
[Feature] 여행 일정에 장소 추가 기능 구현 #99
yangchef1 Sep 21, 2024
057ca85
feat: 여행 일정에 포함된 장소 삭제 기능 구현
yangchef1 Sep 21, 2024
b5b3d32
feat: 여행 일정에 포함된 장소 삭제 기능 url 매핑
yangchef1 Sep 21, 2024
afe3848
[Feature] 여행 일정에 포함된 장소 삭제 기능 구현 #100
yangchef1 Sep 21, 2024
caefac2
feat: Schedule DTO에 image 필드 추가
yangchef1 Sep 21, 2024
83e8324
[Feature] Schedule DTO에 image 필드 추가 #103
yangchef1 Sep 21, 2024
fe0f7b3
feat: SpotDetailsResponse에 region, city 필드 추가
Jeongmin39 Sep 21, 2024
dcd18d7
feat: SpotNotFoundException 생성
Jeongmin39 Sep 21, 2024
c9e2a37
setting: ErrorCode 추가
Jeongmin39 Sep 21, 2024
37526a2
feat: DTO 필드 추가에 의한 Service 코드 수정
Jeongmin39 Sep 21, 2024
6300e1e
feat: SpotDetailsResponse에 posterUrl 필드 추가
Jeongmin39 Sep 22, 2024
971578d
feat: 여행 일정 상세 내용 조회 DTO 작성
yangchef1 Sep 22, 2024
0b1f3be
feat: LocationRepository에 findAllBySchedule 작성
yangchef1 Sep 22, 2024
b7c35cc
feat: 여행 일정 상세 내용 조회 기능 구현
yangchef1 Sep 22, 2024
e3c5ff1
feat: 여행 일정 상세 내용 조회 기능 url 매핑
yangchef1 Sep 22, 2024
578ea3e
[Feature] 여행 일정 상세 내용 조회 기능 구현 #83
yangchef1 Sep 22, 2024
5249dd3
feat: Likes 도메인 어노테이션 추가
Jeongmin39 Sep 22, 2024
5683c29
feat: LikeAlreadyExistException 생성
Jeongmin39 Sep 22, 2024
ee4e272
setting: ErrorCode 추가
Jeongmin39 Sep 22, 2024
a7593cf
feat: LikesRepository findByUserAndSpot 추가
Jeongmin39 Sep 22, 2024
416fb21
feat: SpotService 좋아요 누르기 메소드 작성
Jeongmin39 Sep 22, 2024
fdc8997
setting: SuccessCode 추가
Jeongmin39 Sep 22, 2024
b9b29f2
feat: SpotController 좋아요 누르기 api 작성
Jeongmin39 Sep 22, 2024
dbbc4ed
feat: LikeNotFoundException 생성
Jeongmin39 Sep 22, 2024
c434af8
setting: ErrorCode 추가
Jeongmin39 Sep 22, 2024
52dfc1a
feat: SpotService 좋아요 삭제 메소드 작성
Jeongmin39 Sep 22, 2024
cf2a6b0
setting: SuccessCode 추가
Jeongmin39 Sep 22, 2024
fccf493
feat: SpotController 좋아요 삭제 api 작성
Jeongmin39 Sep 22, 2024
4e68e41
[Feature] 촬영지 좋아요 누르기 & 삭제 API 구현
Jeongmin39 Sep 22, 2024
5c8d4ca
feat: 일정의 담은 Spot 관련 SuccessCode 추가
yangchef1 Sep 22, 2024
90ef50f
feat: 일정의 담은 Spot DTO 작성
yangchef1 Sep 22, 2024
a15b525
feat: SelectedSpotRepository에 findAllBySchedule 작성
yangchef1 Sep 22, 2024
5765fc6
feat: 일정의 담은 Spot 조회 기능 구현
yangchef1 Sep 22, 2024
4114d6f
feat: 담은 Spot (SelectedSpot) Entity 작성
yangchef1 Sep 22, 2024
ab01b71
feat: 일정의 담은 Spot 조회 기능 url 매핑
yangchef1 Sep 22, 2024
acb2903
Merge branch 'dev' of https://github.com/TRIP-SPOT/SPOT-Server into f…
yangchef1 Sep 22, 2024
a3c442c
[Feature] 일정의 담은 Spot 조회 기능 구현 #110
yangchef1 Sep 22, 2024
a1c3679
Merge branch 'dev' of https://github.com/TRIP-SPOT/SPOT-Server into f…
yangchef1 Sep 22, 2024
e256839
fix: conflict 해결
Jeongmin39 Sep 22, 2024
a8b6453
Merge branch 'dev' of https://github.com/TRIP-SPOT/SPOT-Server into f…
Jeongmin39 Sep 22, 2024
c8e4407
feat: SpotDetailsResponse에 isLiked, likeCount 필드 추가
Jeongmin39 Sep 22, 2024
3c0340e
feat: LikesRepository countBySpot 추가
Jeongmin39 Sep 22, 2024
7a97ef9
refac: SpotDetailsResponse 생성 시 likesRepository와 user 정보 전달하도록 수정
Jeongmin39 Sep 22, 2024
65f0740
refac: SpotController getSpotDetails 메소드에 로그인 유저 정보 전달
Jeongmin39 Sep 22, 2024
161802b
feat: 주변 장소 상세 조회 DTO 생성
Jeongmin39 Sep 22, 2024
f5651df
feat: SpotService 주변 장소 상세 조회 메소드 작성
Jeongmin39 Sep 22, 2024
cfe739f
refac: DTO 분리에 따른 주변 장소 상세 조회 api 수정
Jeongmin39 Sep 22, 2024
10662b7
[Feature] 촬영지 및 주변 장소 조회 DTO 수정
Jeongmin39 Sep 22, 2024
23b6bf6
feat: 좋아요 많은 촬영지 목록 조회 DTO 생성
Jeongmin39 Sep 22, 2024
6f75506
feat: LikesRepository findTop5SpotsByLikes 추가
Jeongmin39 Sep 22, 2024
6a09188
feat: SpotService 좋아요 많은 촬영지 조회 메소드 작성
Jeongmin39 Sep 22, 2024
edca959
setting: SuccessCode 추가
Jeongmin39 Sep 22, 2024
af360ea
feat: SpotController 메인화면 촬영지 목록 조회 api 작성
Jeongmin39 Sep 22, 2024
4bb8d16
[Feature] 메인화면 촬영지 목록 조회 API 구현
Jeongmin39 Sep 22, 2024
571458d
feat: TopLikedSpotResponse에 id 필드 추가
Jeongmin39 Sep 23, 2024
94fe2d1
[Feature] TopLikedSpotResponse에 id 필드 추가
Jeongmin39 Sep 23, 2024
d5b6bdf
fix: Optional 처리 수정으로 LikeAlreadyExistException 문제 해결
Jeongmin39 Sep 23, 2024
5ccf1a0
[Fix] 존재하지 않는 Like에 대해 LikeAlreadyExistException 발생하는 문제 해결
Jeongmin39 Sep 23, 2024
ddb7c4f
refac: SpotType Enum 작성
yangchef1 Sep 23, 2024
a30d29a
Merge branch 'dev' of https://github.com/TRIP-SPOT/SPOT-Server into r…
yangchef1 Sep 23, 2024
b2e939a
feat: Work 도메인 quote 필드 추가
Jeongmin39 Sep 23, 2024
e7cb56d
feat: SpotSearchResponse 생성
Jeongmin39 Sep 23, 2024
b9e3cf4
feat: WorkRepository 생성 및 findByNameContainingIgnoreCase 추가
Jeongmin39 Sep 23, 2024
2a954d5
feat: SpotRepository findByWorkId 추가
Jeongmin39 Sep 23, 2024
1bf1ab3
setting: ErrorCode 추가
Jeongmin39 Sep 23, 2024
5e66e64
feat: WorkNotFoundException 생성
Jeongmin39 Sep 23, 2024
af0cdf2
feat: SpotService 검색 결좌 조회 메소드 작성
Jeongmin39 Sep 23, 2024
aadcb08
setting: SuccessCode 추가
Jeongmin39 Sep 23, 2024
c3509ed
feat: SpotController 촬영지 목록 검색 api 작성
Jeongmin39 Sep 23, 2024
5a31be9
[Feature] 특정 작품에 대한 촬영지 목록 검색 API 구현
Jeongmin39 Sep 23, 2024
6e82fba
feat: SpotService getTop5Spots 랜덤 조회 로직 추가
Jeongmin39 Sep 23, 2024
cf721bc
[Feature] 메인화면 촬영지 목록 좋아요 갯수 비교 불가시 임의로 조회
Jeongmin39 Sep 23, 2024
075c0d2
feat: SpotType 적용
yangchef1 Sep 23, 2024
9e1dab5
[Refactor] SpotType enum으로 별도 관리 #117
yangchef1 Sep 23, 2024
cbc5938
fix: ScheduleRequest DTO 변경
yangchef1 Sep 23, 2024
c7ab7ff
feat: ScheduleController Reuqest 매핑 방식 변경
yangchef1 Sep 23, 2024
5b6ac1c
[Fix] Schedule 생성 요청 application/octet-stream' is not supported 에러 해결…
yangchef1 Sep 23, 2024
52e53ec
feat: SelectedSpotRequest DTO 작성
yangchef1 Sep 23, 2024
3c74217
feat: 일정에 Spot 담기 기능 구현
yangchef1 Sep 23, 2024
4ed132a
feat: 일정에 Spot 담기 기능 url 매핑
yangchef1 Sep 23, 2024
eadfcfb
Merge branch 'dev' of https://github.com/TRIP-SPOT/SPOT-Server into f…
yangchef1 Sep 23, 2024
06f5b1f
[Feature] 일정에 Spot 담기 기능 구현 #124
yangchef1 Sep 23, 2024
ea2bc12
feat: RepresentativeImageRepository에 findByRegion 작성
yangchef1 Sep 23, 2024
6f1089a
feat: Request 매핑 변경 부분 변경에 따른 비즈니스 로직 변경
yangchef1 Sep 23, 2024
89d2341
feat: Request 매핑 변경 부분 추가 구현
yangchef1 Sep 23, 2024
2e7c83a
API spec 변경에 따른 '대표 이미지 수정 API' 변경 부분 구현 #125
yangchef1 Sep 23, 2024
b110d5c
feat: Region, City Enum 저장 방식 Ordinal로 변경
yangchef1 Sep 23, 2024
73bc5b8
[Refactor] Region, City Enum 저장 방식 Ordinal로 변경 #128
yangchef1 Sep 23, 2024
ddc4f4b
fix: 일정에 장소 추가 시, 모듈러 연산을 통해 범위 제한
yangchef1 Sep 23, 2024
097c981
[Bug] 일정 생성 중, Location의 일자 별 배치 오류 해결 #131
yangchef1 Sep 23, 2024
52dac70
feat: RecordUpdateRequest의 deleteImages Type을 String으로 변경
yangchef1 Sep 23, 2024
8025857
feat: RecordImageRepository에 existsByUrl, deleteByUrl 추가 작성
yangchef1 Sep 23, 2024
a889536
feat: 여행 기록 이미지 수정 기능 호출 메서드 변경
yangchef1 Sep 23, 2024
cd03129
[Feature] API spec 변경에 따른 '여행 기록 이미지 수정 API' 변경 기능 구현 #130
yangchef1 Sep 23, 2024
a74ee7e
refac: 검색 결과 없는 경우, 빈배열 반환
Jeongmin39 Sep 24, 2024
ccc6a24
[Refactor] 검색 결과 없는 경우, 에러 처리 대신 빈배열 반환으로 로직 수정
Jeongmin39 Sep 24, 2024
b58ec47
feat: SpotRepository findByContentIdAndWorkId 추가
Jeongmin39 Sep 24, 2024
1bbf696
fix: SpotDetailsResponse.fromCommonInfo에 Spot 객체를 직접 전달하도록 수정
Jeongmin39 Sep 24, 2024
d3d008c
fix: SpotService getSpotDetails에서 unique한 spot 조회
Jeongmin39 Sep 24, 2024
f223a8a
fix: SpotController 상세 조회 api RequestParam으로 workId 추가
Jeongmin39 Sep 24, 2024
8df2d68
[Fix] 촬영지 상세 정보 조회 시, contentId가 동일한 데이터로 인해 발생하는 NonUniqueResultExce…
Jeongmin39 Sep 24, 2024
6d401e7
fix: SpotService getSpotAroundList에서 unique한 spot 조회
Jeongmin39 Sep 24, 2024
6f35cc4
fix: SpotController 주변 장소 조회 api RequestParam으로 workId 추가
Jeongmin39 Sep 24, 2024
3b9bd64
[Fix] 주변 장소 조회 시, contentId가 동일한 데이터로 인해 발생하는 NonUniqueResultExceptio…
Jeongmin39 Sep 24, 2024
fcb1dd9
fix: 일정에 장소 담는 기능 API에 누락된 schedule_id 추가
yangchef1 Sep 24, 2024
5d1b006
[Bug] 일정에 장소 담는 기능 API에 누락된 schedule_id 추가 #138
yangchef1 Sep 24, 2024
7849f16
feat: Cascade 설정 추가
yangchef1 Sep 24, 2024
37593bb
[Feature] Cascade 설정 추가 #139
yangchef1 Sep 24, 2024
3422c73
fix: Request 받는 형식 @RequestPart -> @ModelAttribute로 변경
yangchef1 Sep 24, 2024
c5f0dfb
[Fix] Record 수 요청 application/octet-stream' is not supported 에러 해결 #142
yangchef1 Sep 24, 2024
bd806b5
feat: SpotService getSpotAroundList 메소드 내 지정 반경 수정(5km -> 10km)
Jeongmin39 Sep 24, 2024
1ec028e
[Feature] 주변 장소 조회 시 지정하는 반경 수정
Jeongmin39 Sep 24, 2024
70172ad
feat: SpotService getAccessibleSpot 반경 내 퀴즈 없는 경우 빈배열 반환
Jeongmin39 Sep 25, 2024
673d51f
[Feature] 반경 내에 해당하는 퀴즈가 없는 경우 빈배열을 반환하도록 로직 수정
Jeongmin39 Sep 25, 2024
999e297
feat: Likes 도메인 Unique 제약조건 및 Cascade 옵션 추가
Jeongmin39 Sep 25, 2024
86801fd
feat: 좋아요한 장소 조회 DTO 생성
Jeongmin39 Sep 25, 2024
c8def0a
feat: LikesRepository findByUser 추가
Jeongmin39 Sep 25, 2024
d1bb731
feat: UserService 좋아요한 장소 조회 메소드 작성
Jeongmin39 Sep 25, 2024
5ac8b7e
setting: SuccessCode 추가
Jeongmin39 Sep 25, 2024
4b0d433
feat: UserController 좋아요한 장소 조회 api 작성
Jeongmin39 Sep 25, 2024
b868da5
[Feature] 좋아요한 장소 조회 API 구현
Jeongmin39 Sep 25, 2024
51f44a7
feat: 일정에 Location 추가 시, 일자 지정 기능 구현
yangchef1 Sep 25, 2024
4212cc7
[Feature] 일정에 Location 추가 시, 일자 지정 기능 구현 #153
yangchef1 Sep 25, 2024
ad26db4
feat: 뱃지 조회 관련 DTO 생성
Jeongmin39 Sep 25, 2024
3b1fae6
feat: BadgeRepository findByUser 추가
Jeongmin39 Sep 25, 2024
d8a9bfc
feat: UserService 뱃지 조회 메소드 작성
Jeongmin39 Sep 25, 2024
f1557f2
setting: SuccessCode 추가
Jeongmin39 Sep 25, 2024
6ba6bb6
feat: UserController 뱃지 조회 api 작성
Jeongmin39 Sep 25, 2024
c69ee85
[Feature] 내 뱃지 조회 API 구현
Jeongmin39 Sep 25, 2024
5a27403
fix: Likes 도메인 Cascade 옵션 제거
Jeongmin39 Sep 25, 2024
415008e
[Fix] 좋아요 삭제 시 발생하는 문제 해결
Jeongmin39 Sep 25, 2024
a8b97c6
refac: Record 수정 API null 처리 방식 변경
yangchef1 Sep 25, 2024
b28c2a2
[Refactor] Record 수정 API null 처리 방식 변경 #158
yangchef1 Sep 25, 2024
ee6be44
fix: JwtAuthenticationFilter "/api/refresh"인지 확인하여 JWT 검증 생략하는 로직 추가
Jeongmin39 Sep 27, 2024
494c512
setting: 로그 레벨 설정
Jeongmin39 Sep 27, 2024
320d27d
[Fix] 토큰 재발급 시 발생하는 401 에러 해결
Jeongmin39 Sep 27, 2024
1a7d83f
fix: @CurrentUser사용을 통한 대표이미지 오류 수정
yangchef1 Sep 27, 2024
4f83abc
[Bug] 대표 이미지 잘못 서빙되는 오류 #162
yangchef1 Sep 27, 2024
aa6cf71
fix: 뱃지가 없는 경우 새로 생성해주는 로직 추가
yangchef1 Sep 27, 2024
e1076a2
fix: Entity, DTO에서 Region, City 칼럼 삭제
yangchef1 Sep 27, 2024
aa31060
feat: UserLikedSpotsResponse isLiked, likeCount 필드 추가
Jeongmin39 Sep 27, 2024
5641916
[Bug] 퀴즈 풀기 기능 오류 #164
yangchef1 Sep 27, 2024
7d471fd
feat: DTO 필드 추가에 따른 Service 메소드 코드 수정
Jeongmin39 Sep 27, 2024
b8eb4e6
[Feature] UserLikedSpotsResponse 필드 추가
Jeongmin39 Sep 27, 2024
b2582d0
feat: ProfileLevel Enum 작성
Jeongmin39 Sep 27, 2024
2c33374
feat: profileLevel 필드 추가 및 등급 업데이트 메소드 작성
Jeongmin39 Sep 27, 2024
938d45f
setting: 로그 설정 제거
Jeongmin39 Sep 27, 2024
a66812a
[Feature] User 도메인 profileLevel 필드 추가 및 등급 업데이트 메소드 구현
Jeongmin39 Sep 27, 2024
df18a05
feat: 반경 20km 이내 스팟 조회 기능에 가까운 순 5개 제한 기능 추가
yangchef1 Sep 28, 2024
ad681cd
[Feature] 반경 20km 이내 스팟 조회 기능에 가까운 순 5개 제한 기능 추가 #170
yangchef1 Sep 28, 2024
a19134d
feat: Record 추가 시, 뱃지 생성 기능 추가 구현
yangchef1 Sep 28, 2024
3df3249
[Feature] Record 추가 시, 뱃지 생성 기능 추가 구현 #166
yangchef1 Sep 28, 2024
b28b8ee
refac: Badge의 count 칼럼 삭제 및 이로 인한 User의 getBadgeCount 삭제
yangchef1 Sep 28, 2024
2d1bb7d
refac: 기존 퀴즈 정답 시 Badge 부여 기능 수정
yangchef1 Sep 28, 2024
2503551
refac: 기존 회원 등급 업데이트 기능 수정
yangchef1 Sep 28, 2024
8ca7dcc
Merge branch 'dev' of https://github.com/TRIP-SPOT/SPOT-Server into r…
yangchef1 Sep 28, 2024
cf4db5b
[Refactor] Badge를 Region 단위에서 City 단위로 수정
Jeongmin39 Sep 28, 2024
b4280d9
fix: Record 도메인 Repository의 쿼리 메서드에 ByUser 추가
yangchef1 Sep 28, 2024
5f8c46f
fix: 대표 이미지 수정 로직의 사용 쿼리 메서드 수정
yangchef1 Sep 28, 2024
5eeaca5
fix: 지역별 Record 조회 로직의 사용 쿼리 메서드 수정
yangchef1 Sep 28, 2024
2360db1
fix: RecordController의 대표 이미지 수정, 지역별 Record 조회 메서드에 @CurrentUser 추가
yangchef1 Sep 28, 2024
85d3b54
[Bug] Record 도메인 User 필터링 누락 오류
Jeongmin39 Sep 28, 2024
0043eba
feat: 뱃지 획득 경로 타입 enum 생성 및 Entity에 추가
yangchef1 Sep 28, 2024
13791f8
feat: Badge 생성 로직 BadgeService로 분리
yangchef1 Sep 28, 2024
1ba9336
feat: BadgeRequest DTO 작성
yangchef1 Sep 28, 2024
4eb8cc6
feat: 뱃지 생성 API 구현
yangchef1 Sep 28, 2024
d704bb5
feat: Badge 패키지 별도 분리
yangchef1 Sep 28, 2024
af225f0
feat: Badge 패키지 별도 분리
yangchef1 Sep 28, 2024
aede1a2
Merge branch 'dev' of https://github.com/TRIP-SPOT/SPOT-Server into f…
yangchef1 Sep 28, 2024
73ddaa8
Merge branch 'feat/178' of https://github.com/TRIP-SPOT/SPOT-Server i…
yangchef1 Sep 28, 2024
dbc729b
[Feature] 뱃지 생성 API 구현 #178
yangchef1 Sep 28, 2024
aba3859
feat: Quiz 뱃지 생성 로직 구현
yangchef1 Sep 29, 2024
da4058a
feat: Record 뱃지 생성 로직 구현
yangchef1 Sep 29, 2024
a8d3d4a
refac: User Entity의 getCount 삭제 및 이에 따른 로직 변경
yangchef1 Sep 29, 2024
f4a4b74
[Feature] Badge 도메인 분리에 따른 기존 로직 변경 #182
yangchef1 Sep 29, 2024
cde6533
feat: Location Entity에 위치 수정 및 순서 수정 메서드 구현
yangchef1 Sep 30, 2024
1646696
feat: Location 위치 수정 DTO 작성
yangchef1 Sep 30, 2024
e46d107
feat: Location 위치 수정 기능 구현 및 seq Double type으로 변경
yangchef1 Sep 30, 2024
232028d
feat: Location 위치 수정 시 reindexing 기능 및 검사 로직 구현
yangchef1 Sep 30, 2024
615e0ff
feat: Location 위치 수정 기능 url 매핑
yangchef1 Sep 30, 2024
b334104
feat: 지역 퀴즈까지 포함할 수 있도록 Quiz Entity 수정
yangchef1 Sep 30, 2024
e59d2de
feat: 작품 퀴즈 없을 시, 지역 퀴즈 연결 기능 구현
yangchef1 Sep 30, 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
98 changes: 98 additions & 0 deletions .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
name: Java CI/CD with Gradle

on:
push:
branches: [ "dev" ]
pull_request:
branches: [ "dev" ]

permissions:
contents: read

jobs:
build:
name: Build
runs-on: ubuntu-22.04

steps:
- name: Checkout branch
uses: actions/checkout@v3

- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'

- name: Run chmod to make gradlew executable
run: chmod +x ./gradlew

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

- name: Upload Build artifacts
uses: actions/upload-artifact@v4
with:
name: build-artifacts
path: |
build/libs/*.jar

deploy:
needs: build
name: Deploy
runs-on: ubuntu-22.04

steps:
- name: Download Build artifacts
uses: actions/download-artifact@v4
with:
name: build-artifacts
path: build/libs/

- name: Setup SSH
run: |
sudo apt-get update
sudo apt-get install -y openssh-client
mkdir -p ~/.ssh
echo "${{ secrets.EC2_KEY_DEV }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan -H ${{ secrets.EC2_HOST_DEV }} >> ~/.ssh/known_hosts

- name: Upload new JAR to EC2
shell: bash
run: |
scp -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no build/libs/spotserver-0.0.1-SNAPSHOT.jar ${{ secrets.EC2_USER_DEV }}@${{ secrets.EC2_HOST_DEV }}:/home/${{ secrets.EC2_USER_DEV }}/

- name: Execute commands on EC2
run: |
ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no ${{ secrets.EC2_USER_DEV }}@${{ secrets.EC2_HOST_DEV }} << 'EOF'
# Set PATH if needed
export PATH=/usr/bin:/bin:/sbin:/usr/sbin

# Start Redis server
sudo systemctl start redis-server

# Ensure no other process is using the port
sudo fuser -k -n tcp 8080

# Wait for a moment to ensure Redis and port are ready
sleep 10

# Kill any existing Java processes
pgrep java | xargs kill -9

# Remove old JAR if exists
rm -f /home/${{ secrets.EC2_USER_DEV }}/spotserver-0.0.1-SNAPSHOT.jar

# Run the new Java application with environment variables
nohup java -jar /home/${{ secrets.EC2_USER_DEV }}/spotserver-0.0.1-SNAPSHOT.jar \
--spring.datasource.url=${{ secrets.RDS_URL }} \
--spring.datasource.username=${{ secrets.RDS_USERNAME }} \
--spring.datasource.password=${{ secrets.RDS_PASSWORD }} \
--cloud.aws.credentials.access-key=${{ secrets.AWS_ACCESS_KEY }} \
--cloud.aws.credentials.secret-key=${{ secrets.AWS_SECRET_KEY }} \
> /home/${{ secrets.EC2_USER_DEV }}/nohup.out 2>&1 &

# Check if the application is running on the expected port
sudo lsof -i tcp:8080
EOF
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ bin/
!**/src/test/**/bin/

### IntelliJ IDEA ###
application-secret.yml

.idea
*.iws
*.iml
Expand Down
25 changes: 25 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.springframework.boot:spring-boot-devtools'

compileOnly 'org.projectlombok:lombok'
Expand All @@ -36,8 +37,32 @@ dependencies {
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'

//openfeign
implementation 'org.springframework.cloud:spring-cloud-starter-openfeign'
implementation 'io.github.openfeign:feign-micrometer'
implementation 'io.github.openfeign:feign-jackson:12.3'

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

//s3
implementation platform('software.amazon.awssdk:bom:2.17.230')
implementation 'software.amazon.awssdk:s3'
}

tasks.named('test') {
useJUnitPlatform()
}

ext {
set('springCloudVersion', "2023.0.2")
}

dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
4 changes: 4 additions & 0 deletions src/main/java/com/spot/spotserver/SpotserverApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,11 @@

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

@EnableJpaAuditing
@EnableFeignClients
@SpringBootApplication
public class SpotserverApplication {

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.spot.spotserver.api.auth.client;

import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;

@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public record KakaoAccount(
Boolean profile_nickname_needs_agreement,
Boolean profile_image_needs_agreement,
KakaoProfile profile,
Boolean has_email,
Boolean email_needs_agreement,
Boolean is_email_valid,
Boolean is_email_verified,
String email
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.spot.spotserver.api.auth.client;

import com.spot.spotserver.api.auth.dto.response.KakaoUserResponse;
import org.springframework.cloud.openfeign.FeignAutoConfiguration;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;

@Configuration
@Import(FeignAutoConfiguration.class)
@FeignClient(name = "kakaoApiClient", url = "https://kapi.kakao.com")
public interface KakaoApiClient {
@GetMapping(value = "/v2/user/me")
KakaoUserResponse getUserInformation(@RequestHeader(HttpHeaders.AUTHORIZATION) String accessToken);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.spot.spotserver.api.auth.client;

import com.spot.spotserver.api.auth.dto.response.KakaoAccessTokenResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

@FeignClient(name = "kakaoAuthApiClient", url = "https://kauth.kakao.com")
public interface KakaoAuthApiClient {
@PostMapping(value = "/oauth/token", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
KakaoAccessTokenResponse getOAuth2AccessToken(
@RequestParam("grant_type") String grantType,
@RequestParam("client_id") String clientId,
@RequestParam("redirect_uri") String redirectUri,
@RequestParam("code") String code,
@RequestParam("client_secret") String clientSecret
);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.spot.spotserver.api.auth.client;

import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;

@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public record KakaoProfile(
String nickname,
String thumbnail_image_url,
String profile_image_url,
Boolean is_default_image,
Boolean is_default_nickname
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.spot.spotserver.api.auth.client;

import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;

@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public record KakaoProperties(
String nickname,
String profile_image,
String thumbnail_image
) {
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,40 @@
package com.spot.spotserver.api.auth.controller;

import com.spot.spotserver.api.auth.dto.request.TokenRequest;
import com.spot.spotserver.api.auth.dto.response.TokenResponse;
import com.spot.spotserver.api.auth.service.AuthService;
import com.spot.spotserver.api.user.service.UserService;
import com.spot.spotserver.common.payload.ApiResponse;
import com.spot.spotserver.common.payload.SuccessCode;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequiredArgsConstructor
public class AuthController {

private final AuthService authService;
private final UserService userService;

@PostMapping("/api/login/kakao")
public ApiResponse<TokenResponse> login(@RequestParam final String accessToken) {

TokenResponse successResponse = authService.login(accessToken);

TokenResponse result = new TokenResponse(
successResponse.accessToken(),
successResponse.refreshToken()
);
return ApiResponse.success(SuccessCode.LOGIN_SUCCESS, result);
}

@PostMapping("/api/refresh")
public ApiResponse<TokenResponse> reissueToken(@RequestBody TokenRequest request) {

TokenResponse result = userService.reissueToken(request.refreshToken());
return ApiResponse.success(SuccessCode.REISSUE_TOKEN_SUCCESS, result);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.spot.spotserver.api.auth.dto.request;

public record TokenRequest(
String refreshToken
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.spot.spotserver.api.auth.dto.response;

import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;

@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public record KakaoAccessTokenResponse(
String accessToken
) {
public static KakaoAccessTokenResponse of(
final String accessToken
) {
return new KakaoAccessTokenResponse(
accessToken
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.spot.spotserver.api.auth.dto.response;

import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import com.spot.spotserver.api.auth.client.KakaoAccount;
import com.spot.spotserver.api.auth.client.KakaoProperties;

@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public record KakaoUserResponse(
Long id,
String connected_at,
KakaoProperties properties,
KakaoAccount kakaoAccount
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.spot.spotserver.api.auth.dto.response;

public record TokenResponse(
String accessToken,
String refreshToken
) {
public static TokenResponse of(
final String accessToken,
final String refreshToken
) {
return new TokenResponse(accessToken, refreshToken);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.spot.spotserver.api.auth.exception;

import com.spot.spotserver.common.advice.BaseException;
import com.spot.spotserver.common.payload.ErrorCode;

public class EmptyJwtTokenException extends BaseException {
public EmptyJwtTokenException(ErrorCode errorCode) {
super(errorCode);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.spot.spotserver.api.auth.exception;

import com.spot.spotserver.common.advice.BaseException;
import com.spot.spotserver.common.payload.ErrorCode;

public class ExpiredJwtTokenException extends BaseException {
public ExpiredJwtTokenException(ErrorCode errorCode) {
super(errorCode);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.spot.spotserver.api.auth.exception;

import com.spot.spotserver.common.advice.BaseException;
import com.spot.spotserver.common.payload.ErrorCode;

public class InvalidJwtTokenException extends BaseException {
public InvalidJwtTokenException(ErrorCode errorCode) {
super(errorCode);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.spot.spotserver.api.auth.exception;

import com.spot.spotserver.common.advice.BaseException;
import com.spot.spotserver.common.payload.ErrorCode;

public class JwtCustomException extends BaseException {
public JwtCustomException(ErrorCode errorCode, Throwable cause) {
super(errorCode, cause);
}

public JwtCustomException(ErrorCode errorCode) {
super(errorCode);
}
}
Loading
Loading