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

deploy: dev -> main 머지 #253

Merged
merged 165 commits into from
Apr 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
165 commits
Select commit Hold shift + click to select a range
f32da42
feat: test /poke/new
Mar 11, 2024
00ea853
feat: test /poke/new (#220)
ozzing Mar 11, 2024
c15df5e
feat: test /description/main
Mar 14, 2024
dd5b134
feat: 오타 수정
Mar 14, 2024
347ac71
refactor: size() > 0를 isEmpty()로 변경
kseysh Mar 15, 2024
7977c44
chore: 오타 수정 및 불필요한 임시 변수를 즉시 리턴되는 값으로 변경
kseysh Mar 15, 2024
895a5ad
fix: response DTO에 누락되었던 missionId 추가 및 사용되지 않는 return 값 제거
kseysh Mar 15, 2024
de9f311
chore: 코드 포맷 맞춰 수정
kseysh Mar 15, 2024
e93a165
refactor: 람다를 메서드 참조로 변경 및 불필요한 코드 단순화
kseysh Mar 15, 2024
2e007c5
chore: 코드 포매터 조정
kseysh Mar 15, 2024
f27cb51
chore: 코드 포매터 조정
kseysh Mar 15, 2024
4fdd000
feat: DescriptionTest 전체 수정, ControllerTest 삭제
Mar 15, 2024
fd24111
feat: 네이밍 수정
Mar 15, 2024
fd4048c
feat: 네이밍 재수정
Mar 15, 2024
8f471ff
feat: test /description/main (#221)
ozzing Mar 16, 2024
1d247de
modify: 중복되는 엔티티 컬럼 제거
kseysh Mar 16, 2024
9a4ea25
feat: application/stamp/findStamp 관련 테스트 추가 #217
kseysh Mar 19, 2024
cc42ccf
trigger actions
Mar 19, 2024
00320d1
trigger actions
Mar 19, 2024
2e649f2
trigger actions
Mar 19, 2024
c00b127
fix: get detail soptamp info error (#222)
kseysh Mar 19, 2024
8bab8f5
feat: application/stamp/findStamp, uploadStamp관련 테스트 추가 #217
kseysh Mar 19, 2024
dff957f
feat: application/stamp/uploadStamp관련 테스트 추가 #217
kseysh Mar 19, 2024
3411d1e
chore: application/stamp/uploadStamp관련 displayname 변경 #217
kseysh Mar 20, 2024
9c53c47
feat: application/stamp/editStampDeprecated관련 성공 케이스 테스트 개발 #217
kseysh Mar 20, 2024
430e38a
feat: editStampDeprecated관련 contents에 빈 스트링 제공시 contents를 변경하지 않는 요구사…
kseysh Mar 20, 2024
0b8a402
feat: editStampDeprecated 실패 케이스 테스트 개발 #217
kseysh Mar 20, 2024
9115194
chore: editStampDeprecated displayname 네이밍에 DEPRECATED 추가 #217
kseysh Mar 20, 2024
1c6eeb6
chore: editStampContentsDeprecated displayName 네이밍 변경 #217
kseysh Mar 20, 2024
81ff9bb
feat: getExpectedEditStamp함수가 Deprecated와 아닌 editStamp함수 모두 사용할 수 있도록…
kseysh Mar 20, 2024
d98dbec
feat: editStampContents에서 빈 스트링이 request로 전달되었을 때의 요구사항 반영 테스트 및 getE…
kseysh Mar 20, 2024
ad8e34f
feat: s3ServiceTest
Mar 20, 2024
43a5f66
refactor: S3, Description 도메인 Test 형식 수정
Mar 20, 2024
38983ce
feat: editStampContents 실패 테스트 케이스 추가 #217
kseysh Mar 20, 2024
d3a97e8
feat: s3 테스트 코드 (#223)
ozzing Mar 20, 2024
bf58be2
feat: editStampImageDeprecated 성공 테스트 추가 #217
kseysh Mar 21, 2024
562a358
feat: editStampImageDeprecated 실패 테스트 추가 #217
kseysh Mar 21, 2024
6c1bc13
feat: checkDuplicateStamp 성공 및 실패 테스트 추가 #217
kseysh Mar 21, 2024
6440df2
feat: deleteStampById 성공 테스트 추가 #217
kseysh Mar 21, 2024
47c372f
feat: deleteStampById 실패 테스트 추가 #217
kseysh Mar 21, 2024
832b3b6
feat: getMissionIdByStampId 성공 실패 케이스 테스트 추가 #217
kseysh Mar 21, 2024
ee99aca
feat: deleteAllStamps 성공 케이스 테스트 추가 #217
kseysh Mar 22, 2024
4f6f4b8
feat: StampRepository 성공 케이스 테스트 추가 #217
kseysh Mar 22, 2024
a373bcb
chore: 사용하지 않는 import문 제거 (#217)
kseysh Mar 22, 2024
38e2f77
feat: SoptampFacadeTest 초기 설정 (#217)
kseysh Mar 22, 2024
b6fb2a6
chore: sotamp -> soptamp로 네이밍 수정 (#217)
kseysh Mar 22, 2024
0bab197
refactor: 불필요한 변수를 제거하고 즉시 return이 진행되도록 변경 (#217)
kseysh Mar 22, 2024
3c3c53f
refactor: gitignore에 DS_Store 및 application-test.yml추가 (#217)
kseysh Mar 22, 2024
0f91458
fix: remove untracked .DS_Store (#217)
kseysh Mar 22, 2024
d3c1bf1
chore: SoptampFacadeTest를 UserController 테스트 구현 후 구현 예정 (#217)
kseysh Mar 22, 2024
127df9a
Merge branch 'sprint0/#219' into feat/#217-soptamp-test
kseysh Mar 22, 2024
449655c
feat: getSoptampUserInfo 성공 테스트 케이스 추가 (#217)
kseysh Mar 22, 2024
8109c16
feat: getSoptampUserInfo 실패 테스트 케이스 추가 (#217)
kseysh Mar 22, 2024
afc5684
feat: checkUserNickname 성공, 실패 테스트 케이스 추가 (#217)
kseysh Mar 22, 2024
3e69fee
feat: editNickName 성공 테스트 케이스 추가 (#217)
kseysh Mar 22, 2024
692fd9b
feat: editProfileMessage 성공 테스트 케이스 추가 (#217)
kseysh Mar 22, 2024
a9cbfbb
feat: updateSoptampUser 성공 테스트 케이스 추가 (#217)
kseysh Mar 23, 2024
543f4af
feat: updateSoptampUser 성공 테스트 케이스 요구사항 추가 (#217)
kseysh Mar 23, 2024
bf2b29e
fix: soptampUser 네이밍 오류 수정 (#217)
kseysh Mar 23, 2024
3c1fa24
refactor: 중복되는 save함수 beforeEach로 처리 (#217)
kseysh Mar 23, 2024
3f9e539
chore: spring0/#219와 merge (#217)
kseysh Mar 23, 2024
fa3e823
chore: Merge branch 'feat/#217-soptamp-test' (#217)
kseysh Mar 23, 2024
3d849cc
fix: 머지를 진행하며 깨진 테스트 케이스 수정 (#217)
kseysh Mar 23, 2024
a700081
feat: stamp 테스트 코드 구현 (#224)
kseysh Mar 23, 2024
7919e19
chore: SoptampUserServiceTest 디렉터리 위치 변경 (#217)
kseysh Mar 23, 2024
4ff4caf
chore: findRanks 성공 케이스 추가 (#217)
kseysh Mar 23, 2024
2e9fd9e
chore: findCurrentRanks 성공 케이스 추가 (#217)
kseysh Mar 23, 2024
3b964fc
feat: findCurrentRanks 실패 케이스 추가 (#217)
kseysh Mar 23, 2024
6616906
feat: findRankByNickname 성공, 실패 케이스 추가 (#217)
kseysh Mar 23, 2024
7d504d7
chore: findRankByNickname 실패 케이스 사용하지 않는 변수 삭제 (#217)
kseysh Mar 23, 2024
6853015
feat: addPoint 성공, 실패 테스트 케이스 추가 (#217)
kseysh Mar 23, 2024
1e7f0ec
feat: AuthFacadeTest, S3ServiceTest
Mar 23, 2024
036a786
feat: subtractPoint 성공, 실패 테스트 케이스 추가 (#217)
kseysh Mar 23, 2024
e2797e3
feat: findByNickname 성공, 실패 테스트 케이스 추가 (#217)
kseysh Mar 23, 2024
b0256e7
feat: initPoint 성공, 실패 테스트 케이스 추가 (#217)
kseysh Mar 23, 2024
a2d5e69
chore: 사용하지 않는 import문 제거 (#217)
kseysh Mar 23, 2024
f36d051
chore: 코드 포매팅 (#217)
kseysh Mar 23, 2024
ebfa1d0
feat: PlaygroundAuthServiceTest
Mar 23, 2024
d084647
chore: 사용하지 않는 변수 삭제 (#217)
kseysh Mar 24, 2024
178bec6
refactor: 사용하지 않는 필드 삭제 (#217)
kseysh Mar 24, 2024
2933976
chore: 불필요한 else문 삭제 (#217)
kseysh Mar 24, 2024
6b2bf98
fix: loginWithUserPlaygroundId를 이용해 회원가입 시에 userId가 null로 들어가는 에러 해결 …
kseysh Mar 24, 2024
8fb0402
feat: loginWithUserPlaygroundId에서 등록된 유저가 없을 때의 성공 테스트 케이스 추가 (#217)
kseysh Mar 24, 2024
898f0e0
feat: loginWithUserPlaygroundId에서 등록된 유저가 있을 때의 성공 테스트 케이스 추가 (#217)
kseysh Mar 24, 2024
98af54c
feat: deleteUser 성공 테스트 케이스 추가 (#217)
kseysh Mar 24, 2024
2c7c1e1
feat: getPlaygroundToken 성공,실패 테스트 케이스 추가 (#217)
kseysh Mar 24, 2024
cded47b
refactor: 불필요한 변수 제거 (#217)
kseysh Mar 24, 2024
32a004d
feat: updatePlaygroundToken 성공 테스트 케이스 추가 (#217)
kseysh Mar 24, 2024
3015b3b
feat: getUserProfile 성공, 실패 테스트 케이스 추가 (#217)
kseysh Mar 24, 2024
ddee035
chore: 축약형 네이밍 가독성 있는 이름으로 변경 (#217)
kseysh Mar 24, 2024
b31765c
feat: getUserProfilesByPlaygroundIds 성공 테스트 케이스 추가 (#217)
kseysh Mar 24, 2024
910387d
refactor: 가독성을 위한 코드 수정 (#217)
kseysh Mar 24, 2024
9cd6eb4
feat: getUserProfileByUserId 성공 테스트 케이스 추가 (#217)
kseysh Mar 24, 2024
9aba470
feat: findUserById 성공 테스트 케이스 추가 (#217)
kseysh Mar 24, 2024
91f2d99
feat: findAllByPlaygroundIdIn 성공 테스트 케이스 추가 (#217)
kseysh Mar 24, 2024
698bc93
feat: findAllIdByPlaygroundIdIn 성공 테스트 케이스 추가 (#217)
kseysh Mar 24, 2024
8a1aff9
feat: findAllPlaygroundId 성공 테스트 케이스 추가 (#217)
kseysh Mar 24, 2024
eb17e93
feat: findAllByIdIn 성공 테스트 케이스 추가 (#217)
kseysh Mar 24, 2024
b1bca2e
refactor: 사용하지 않는 레포지토리 메서드 삭제 (#217)
kseysh Mar 24, 2024
bb572f2
refactor: unique한 id를 생성하여 테스트를 진행할 수 있도록 수정 (#217)
kseysh Mar 24, 2024
7ce1992
feat: SoptampUserRepositoryTest 구현 (#217)
kseysh Mar 24, 2024
355baed
refactor: 사용하지 않는 변수 삭제 (#217)
kseysh Mar 24, 2024
88dc82f
refactor: 가독성 향상을 위한 코드 수정 (#217)
kseysh Mar 24, 2024
bcc9635
feat: 메인 뷰 조회 성공 테스트 케이스 추가 (#217)
kseysh Mar 24, 2024
fa62c86
refactor: 사용하지 않는 import문 제거 (#217)
kseysh Mar 24, 2024
82d3964
feat: user 테스트코드 (#226)
kseysh Mar 26, 2024
a05cc4d
chore: 불필요한 주석 제거 (#228)
kseysh Mar 28, 2024
864b9e8
chore: 파트 네이밍 대문자로 통일 (#228)
kseysh Mar 29, 2024
9ac3f61
feat: findCurrentRanksByPart controller 추가 (#228)
kseysh Mar 29, 2024
1588c3c
chore: 사용되지 않는 import 제거 (#228)
kseysh Mar 29, 2024
fe52960
feat: findCurrentRanksByPart 플로우 작성 (#228)
kseysh Mar 29, 2024
d163172
feat: Part enum값 수정 (#228)
kseysh Mar 29, 2024
880f2e2
feat: RankController.findCurrentRanksByPart 추가 (#228)
kseysh Mar 29, 2024
bdeda58
feat: 파트 별로 솝탬프 유저를 찾는 함수 추가 (#228)
kseysh Mar 29, 2024
0fc95c0
chore: 코드 포매팅 (#228)
kseysh Mar 29, 2024
d5ea23a
feat: 파트 이름으로 시작하는 솝탬프 유저를 찾는 JPA 함수 추가 (#228)
kseysh Mar 29, 2024
327e6ef
feat: 유저 아이디 리스트로 솝탬프 포인트 리스트를 찾는 함수 추가 (#228)
kseysh Mar 29, 2024
da15b10
feat: 유저 아이디 리스트로 솝탬프 포인트 리스트를 찾는 JPA 함수 추가 (#228)
kseysh Mar 29, 2024
fc17bdc
feat: Stamp entity에 activityDate 추가 (#230)
kseysh Mar 29, 2024
5165a1a
feat: Stamp entity에 activityDate 변경 함수 추가 (#230)
kseysh Mar 29, 2024
d4bc96d
feat: StampInfo에 activityDate 변경 추가 (#230)
kseysh Mar 29, 2024
2c74690
feat: StampRequest에 activityDate 필드 추가 (#230)
kseysh Mar 29, 2024
9c70491
feat: StampResponse에 activityDate 필드 추가 (#230)
kseysh Mar 29, 2024
677eeb0
feat: StampService return값에 activityDate 필드 추가 (#230)
kseysh Mar 29, 2024
3573971
refactor: PlaygroundAuthServiceTest 리뷰 반영
Mar 31, 2024
07c8a9f
feat: auth 테스트코드 (#225)
ozzing Mar 31, 2024
158aa84
feat: 스탬프 등록 시 activityDate가 null이면 에러를 반환하는 요구사항 반영 (#230)
kseysh Mar 31, 2024
c1b8ac1
feat: 스탬프 수정 시 activityDate가 null이면 에러를 반환하는 요구사항 반영 (#230)
kseysh Mar 31, 2024
3c986ba
feat: 스탬프 수정 시 activityDate가 null이면 에러를 반환하는 요구사항 반영 (#230)
kseysh Mar 31, 2024
36810e8
feat: DTO에 담긴 @NotNull을 적용하기 위해 @Valid 사용 (#230)
kseysh Mar 31, 2024
1aab844
feat: 스탬프 조회 시에 리턴 값에 대한 validator 추가 (#230)
kseysh Mar 31, 2024
4da74cb
fix: 실패한 테스트 코드 관련 부분 수정 (#230)
kseysh Mar 31, 2024
bd73ec3
modify: 스탬프 관련 api에서 날짜 필드를 받을 수 있도록 수정 (#231)
kseysh Mar 31, 2024
a71ab50
modify: 파트별 Controller 따로 분리 (#228)
kseysh Mar 31, 2024
cb632ff
feat: 파트 별 현재 기수 랭킹 목록 조회 (#229)
kseysh Mar 31, 2024
a71967f
refactor: 사용되지 않는 파일 삭제 (#227)
kseysh Apr 1, 2024
6fb41be
feat: 파트 별 랭킹 목록 조회 api 컨트롤러 작성 (#227)
kseysh Apr 1, 2024
abe58cf
feat: 파트 별 랭킹 목록 조회 api response DTO 생성 (#227)
kseysh Apr 1, 2024
75c301f
feat: 파트 별 랭킹 목록 조회 api service 구현 (#227)
kseysh Apr 1, 2024
f495429
feat: 파트 별 랭킹 목록 조회 (#234)
kseysh Apr 2, 2024
4e0649a
Sprint0/#219 (#235)
kseysh Apr 2, 2024
48e2d41
fix: FriendRepositoryTest에서 데이터베이스에 저장되어 있는 값에 의존하지 않도록 수정 (#227)
kseysh Apr 2, 2024
44d5d5f
fix: FriendService에서 데이터베이스에 저장되어 있는 값에 의존하지 않도록 수정 (#227)
kseysh Apr 2, 2024
17fe3ae
fix: 최소 한 개의 Assertion이 있도록 수정 (#227)
kseysh Apr 2, 2024
088994e
fix: 테스트 실패로 인한 빌드 실패 수정 (#237)
kseysh Apr 2, 2024
993221b
fix: CI 과정에서 application-test.yml을 생성하고 테스트를 실행하도록 수정(#228)
kseysh Apr 2, 2024
777233d
fix: dev 환경의 CD 과정에서 application-test.yml을 생성하도록 수정 (#228)
kseysh Apr 2, 2024
efbd7d5
fix: prod 환경의 CD 과정에서 application-test.yml을 생성하도록 수정 (#228)
kseysh Apr 2, 2024
6cf13a3
fix: 테스트 패키지에서 테스트를 실행하기 위한 test yml 파일 생성 (#239)
kseysh Apr 2, 2024
d2203f0
fix: s3 expiration 임시조치로 10시간으로 변경 (#240)
kseysh Apr 5, 2024
f2cd05f
fix: s3 test 실패 수정 (#240)
kseysh Apr 5, 2024
2c24aa9
fix: s3 expiration 임시조치로 10시간으로 변경 (#241)
kseysh Apr 5, 2024
d2b8512
fix: 스탬프 등록시간 String으로 변경
Apr 8, 2024
779382d
fix: 스탬프 등록시간 String으로 변경 (#243)
ozzing Apr 8, 2024
e7b681b
Sprint0/#219 (#244)
ozzing Apr 8, 2024
de5b994
fix: 스탬프 등록시간 String으로 변경 테스트
Apr 8, 2024
648211a
fix: 스탬프 등록시간 String으로 변경 테스트 (#245)
ozzing Apr 8, 2024
9e4e6e4
Sprint0/#219 (#246)
ozzing Apr 8, 2024
d66a796
fix: SUCCESS_모든 유저의 유저 아이디 찾기 테스트
Apr 8, 2024
ae5c432
fix: SUCCESS_모든 유저의 유저 아이디 찾기 테스트 (#247)
ozzing Apr 8, 2024
cb6f237
Sprint0/#219 (#248)
ozzing Apr 8, 2024
833d512
feat: 앱서비스 도메인 추가
Apr 14, 2024
5e5a203
feat: 앱서비스 flag API 추가
Apr 14, 2024
c0e2db3
feat: 메인뷰 앱서비스 진입 여부 flag API (#251)
ozzing Apr 14, 2024
2a564c0
Sprint0/#219 (#252)
ozzing Apr 14, 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
Binary file removed .DS_Store
Binary file not shown.
16 changes: 10 additions & 6 deletions .github/workflows/build-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,18 @@ jobs:
# 3) 환경변수 파일 생성
- name: Copy application-local.yml
run: |
# application-local.yml 생성
# application-local.yml, application-test.yml 생성
touch ./src/main/resources/application-local.yml
touch ./src/test/resources/application-test.yml

# application.yaml 파일 값 입력
echo "${{ secrets.APPLICATION_LOCAL_YML }}" >> ./src/main/resources/application-local.yaml
# application-local.yml, application-test.yml 파일 값 입력
echo "${{ secrets.APPLICATION_LOCAL_YML }}" >> ./src/main/resources/application-local.yml
echo "${{ secrets.APPLICATION_LOCAL_YML }}" >> ./src/test/resources/application-test.yml

# application.yaml 파일 확인
cat ./src/main/resources/application-local.yaml
# application-local.yml, application-test.yml 파일 확인
cat ./src/main/resources/application-local.yml
cat ./src/test/resources/application-test.yml

shell: bash

# 이 워크플로우는 gradle build
Expand All @@ -48,5 +52,5 @@ jobs:

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

13 changes: 9 additions & 4 deletions .github/workflows/release-dev-code_deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ on:
branches: [ 'dev' ]

env:
RESOURCE_PATH: ./src/main/resources/application-local.yaml
RESOURCE_PATH: ./src/main/resources/application-local.yml

jobs:
build:
Expand All @@ -28,11 +28,16 @@ jobs:
java-version: '17'

- name: mkdir resources folder
run: touch ./src/main/resources/application-local.yml
run: |
touch ./src/main/resources/application-local.yml
touch ./src/test/resources/application-test.yml

shell: bash

- name: copy yaml file
run: echo "${{ secrets.APPLICATION_LOCAL_YML }}" > ./src/main/resources/application-local.yml
- name: copy yml file
run: |
echo "${{ secrets.APPLICATION_LOCAL_YML }}" > ./src/main/resources/application-local.yml
echo "${{ secrets.APPLICATION_LOCAL_YML }}" > ./src/test/resources/application-test.yml

- name: Grant execute permission for gradlew
run: chmod +x gradlew
Expand Down
12 changes: 8 additions & 4 deletions .github/workflows/release-prod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
tags: [ 'makers-app-develop' ]

env:
RESOURCE_PATH: ./src/main/resources/application-prod.yaml
RESOURCE_PATH: ./src/main/resources/application-prod.yml

jobs:
build:
Expand All @@ -29,11 +29,15 @@ jobs:
java-version: '17'

- name: mkdir resources folder
run: touch ./src/main/resources/application-prod.yml
run: |
touch ./src/main/resources/application-prod.yml
touch ./src/test/resources/application-test.yml
shell: bash

- name: copy yaml file
run: echo "${{ secrets.APPLICATION_YML }}" > ./src/main/resources/application-prod.yml
- name: copy yml file
run: |
echo "${{ secrets.APPLICATION_YML }}" > ./src/main/resources/application-prod.yml
echo "${{ secrets.APPLICATION_YML }}" > ./src/test/resources/application-test.yml

- name: Grant execute permission for gradlew
run: chmod +x gradlew
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,13 @@ out/
### VS Code ###
.vscode/

### macOS ###
.DS_Store

### application.yml 파일들에 대한 gitignore 처리
application-local.yml
application-prod.yml
application-test.yml

### HTTP 관련
http-client.private.env.json
Expand Down
7 changes: 6 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ plugins {
//querydsl 추가
id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
id 'java'
id 'jacoco'
}

group = 'org.sopt'
Expand Down Expand Up @@ -86,7 +87,11 @@ dependencies {

// test
testImplementation 'org.springframework.boot:spring-boot-starter-test'

testImplementation 'org.springframework.security:spring-security-test'
implementation 'com.google.code.gson:gson:2.8.7'
testImplementation 'org.mockito:mockito-core:4.5.1'
testImplementation 'org.mockito:mockito-junit-jupiter:4.5.1'

// slack
implementation 'com.slack.api:slack-api-client:1.30.0'
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@

import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.AccessLevel;
import org.sopt.app.domain.enums.UserStatus;

public class PlaygroundAuthInfo {
Expand Down Expand Up @@ -115,6 +115,7 @@ public static class RefreshedToken {
@Setter
@ToString
public static class ActiveUserIds {

@JsonProperty("memberIds")
private List<Long> userIds;
}
Expand All @@ -124,15 +125,18 @@ public static class ActiveUserIds {
@Builder
@ToString
public static class UserActiveInfo {

private Long currentGeneration;
private UserStatus status;
}

@Getter
@Builder
@ToString
@NoArgsConstructor(access = AccessLevel.PRIVATE)
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public static class MemberProfile {

@JsonProperty("memberId")
private Long id;
private String profileImage;
Expand All @@ -149,11 +153,13 @@ public ActivityCardinalInfo getLatestActivity() {
@NoArgsConstructor(access = AccessLevel.PRIVATE)
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public static class ActivityCardinalInfo {

private String cardinalInfo;

public String getGeneration() {
return cardinalInfo.split(",")[0];
}

public String getPart() {
return cardinalInfo.split(",")[1];
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,6 @@ public Boolean getNotificationConfirmStatus(User user) {
val unreadNotificationList = notificationList.stream()
.filter(notification -> !notification.getIsRead())
.toList();
return unreadNotificationList.size() == 0;
return unreadNotificationList.isEmpty();
}
}
44 changes: 21 additions & 23 deletions src/main/java/org/sopt/app/application/s3/S3Service.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.CannedAccessControlList;
import com.amazonaws.services.s3.model.ObjectMetadata;
Expand All @@ -18,11 +17,11 @@
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
import javax.annotation.PostConstruct;
import lombok.RequiredArgsConstructor;
import lombok.val;
import org.joda.time.LocalDateTime;
import org.slf4j.LoggerFactory;
import org.sopt.app.common.exception.BadRequestException;
import org.sopt.app.common.response.ErrorCode;
import org.springframework.beans.factory.annotation.Value;
Expand All @@ -37,12 +36,10 @@ public class S3Service {
private final ArrayList<String> imageFileExtension = new ArrayList<>(
List.of(".jpg", ".jpeg", ".png", ".JPG", ".JPEG", ".PNG"));

private final AmazonS3 s3Client;

@Value("${cloud.aws.credentials.accesskey}")
@Value("${cloud.aws.credentials.access-key}")
private String accessKey;

@Value("${cloud.aws.credentials.secretkey}")
@Value("${cloud.aws.credentials.secret-key}")
private String secretKey;

@Value("${cloud.aws.s3.bucket}")
Expand All @@ -54,13 +51,15 @@ public class S3Service {
@Value("${cloud.aws.s3.uri}")
private String baseURI;

private final AmazonS3 amazonS3;


@PostConstruct
public AmazonS3Client amazonS3Client() {
val awsCredentials = new BasicAWSCredentials(accessKey, secretKey); //accessKey 와 secretKey를 이용하여 자격증명 객체를 얻는다.
return (AmazonS3Client) AmazonS3ClientBuilder.standard()
.withRegion(region) // region 설정
.withCredentials(new AWSStaticCredentialsProvider(awsCredentials)) // 자격증명을 통해 S3 Client를 가져온다.
public AmazonS3 getAmazonS3() {
val awsCredentials = new BasicAWSCredentials(accessKey, secretKey);
return AmazonS3ClientBuilder.standard()
.withRegion(region)
.withCredentials(new AWSStaticCredentialsProvider(awsCredentials))
.build();
}

Expand All @@ -77,24 +76,22 @@ public List<String> uploadDeprecated(List<MultipartFile> multipartFiles) {
objectMetadata.setContentType(file.getContentType());

try (InputStream inputStream = file.getInputStream()) {
s3Client.putObject(
amazonS3.putObject(
new PutObjectRequest(bucket + "/mainpage/makers-app", fileName, inputStream, objectMetadata)
.withCannedAcl(CannedAccessControlList.PublicRead));
return s3Client.getUrl(bucket + "/mainpage/makers-app", fileName).toString();
return amazonS3.getUrl(bucket + "/mainpage/makers-app", fileName).toString();
} catch (IOException e) {
throw new BadRequestException("요청이 처리 되지 않았습니다.");
}
}).collect(Collectors.toList());
}).toList();
}

// 이미지파일명 중복 방지
private String createFileName(String fileName) {
return UUID.randomUUID().toString().concat(getFileExtension(fileName));
}

// 파일 유효성 검사
private String getFileExtension(String fileName) {
if (fileName.length() == 0) {
if (fileName.isEmpty()) {
throw new BadRequestException("유효하지 않은 파일명입니다.");
}

Expand All @@ -112,8 +109,9 @@ public S3Info.PreSignedUrl getPreSignedUrl(String folderName) {

URI uri;
try {
uri = this.s3Client.generatePresignedUrl(folderURI,
randomFileName.toString(), now.plusHours(1).toDate(), HttpMethod.PUT).toURI();
// TODO: EC2와 자바의 시간이 UTC와 KST로 9시간이 차이나 있어 10시간을 더함, 추후 수정 필요
uri = amazonS3.generatePresignedUrl(folderURI,
randomFileName.toString(), now.plusHours(10).toDate(), HttpMethod.PUT).toURI();
} catch (NullPointerException | URISyntaxException e) {
throw new BadRequestException(ErrorCode.PRE_SIGNED_URI_ERROR.getMessage());
}
Expand All @@ -131,21 +129,21 @@ public S3Info.PreSignedUrl getPreSignedUrl(String folderName) {
public void deleteFiles(List<String> fileUrls, String folderName) {
val folderURI = bucket + "/mainpage/makers-app-img/" + folderName;
val fileNameList = getFileNameList(fileUrls);
fileNameList.stream().forEach(file -> deleteFile(folderURI, file));
fileNameList.forEach(file -> deleteFile(folderURI, file));
}

private List<String> getFileNameList(List<String> fileUrls) {
return fileUrls.stream().map(url -> {
val fileNameSplit = url.split("/");
return fileNameSplit[fileNameSplit.length - 1];
}).collect(Collectors.toList());
}).toList();
}

private void deleteFile(String folderURI, String fileName) {
try {
s3Client.deleteObject(folderURI, fileName.replace(File.separatorChar, '/'));
amazonS3.deleteObject(folderURI, fileName.replace(File.separatorChar, '/'));
} catch (AmazonServiceException e) {
System.err.println(e.getErrorMessage());
LoggerFactory.getLogger(S3Service.class).error(e.getErrorMessage());
}
}
}
19 changes: 19 additions & 0 deletions src/main/java/org/sopt/app/application/service/AppServiceInfo.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package org.sopt.app.application.service;

import lombok.Builder;
import lombok.Getter;
import lombok.ToString;

public class AppServiceInfo {

@Getter
@Builder
@ToString
public static class AppService {

private String serviceName;
private Boolean activeUser;
private Boolean inactiveUser;

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package org.sopt.app.application.service;

import java.util.List;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import lombok.val;
import org.sopt.app.interfaces.postgres.AppServiceRepository;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class AppServiceService {

private final AppServiceRepository appServiceRepository;

public List<AppServiceInfo.AppService> getAllAppService() {
val appServiceList = appServiceRepository.findAll();
return appServiceList.stream()
.map(appService -> AppServiceInfo.AppService.builder()
.serviceName(appService.getServiceName())
.activeUser(appService.getActiveUser())
.inactiveUser(appService.getInactiveUser())
.build())
.collect(Collectors.toList());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,12 @@ public static Point of(Long id, Long generation, Long soptampUserId, Long points
return new Point(id, generation, soptampUserId, points);
}
}

@Getter
@Builder
public static class PartRank {
private String part;
private Integer rank;
private Long points;
}
}
Loading
Loading