Skip to content

Commit

Permalink
dev_�android 싱크 (#576)
Browse files Browse the repository at this point in the history
* [ALL] 버전 5 출시 release/v3.1에서 main으로 코드 머지 (#551)

* [ALL] 버전 5 출시 release/v3.1 로 백엔드 코드 머지 (#549)

* feat: 명세서 기준으로 Dto들 생성 (#89)

* feat: 명세서 기준으로 Dto들 생성

* feat: 변경된 API 명세에 맞춰 Dto 변경

* feat: 디바이스의 위치를 받아와 뷰에 보여주는 기능 구현 (#93)

* feat: 디바이스의 위치를 받아와 뷰에 보여주는 기능 구현

* refactor: 좌표를 문자열로 반환하는 기능 함수분리

* feat: 도메인 모델 생성 (#91)

* refactor: ERROR를 NONE으로네이밍 변경

* feat: 도메인 객체 생성 (미완)

* feat: 도메인 객체 수정 및 추가 생성

* feat: 도메인 수정

* rename: 패키지명 수정

* feat: 통계 path 레트로핏 서비스 구현 #101

* feat: 서버에서 Rank 관련 데이터를 받아올 때 사용될 service 생성 (#100)

* feat: 3차 데모데이용 Game Path 레트로핏 서비스 생성 (#102)

* feat: 장소 path 레트로핏 서비스 구현 (#103)

* feat: AdventureHistoryActivity 구현 (#106)

* design: AdventureHistory 뷰에 필요한 string resource 추가

* design: AdventureHistory 뷰에 필요한 drawable resource 추가

* design: 리사이클러뷰에 들어갈 Item 레이아웃 생성

* feat: 모험 기록을 보여 주는 리사이클러뷰 어댑터 생성

* feat: AdventureHistory 액티비티 구현

* feat: AdventureHistoryActivity에 모험 기록을 보여줄 리사이클러뷰 구현

* feat: 뒤로가기 버튼 구현

* refactor: 함수 이름 변경

* refactor: 이름이 길어질 때 줄여쓰기가 되도록 기능 추가

* refactor: Mock 데이터 생성 방법 수정

* refactor: 불필요한 함수 인자 삭제

* feat: RankRepository 생성 (#109)

* refactor: Service 명 수정

* feat: RankRepository Interface 구현

* feat: PlayerDto를 도메인 객체로 바꿔주는 도메인 mapper 생성

* feat: RankDto를 도메인 객체로 바꿔주는 도메인 mapper 생성

* feat: 서버와 Rank 데이터를 주고 받기 위해 팔요한 rank service 객체 생성

* feat: RankRepository 구현체 생성

* refactor: 함수 인자 표시

* feat: StatisticsRepository 생성 (#110)

* rename: 파일명 수정

* feat: StatisticsRepository 인터페이스 생성

* feat: 서버와의 Statistics 관련 통신을 위한 service 객체 생성

* feat: StatisticsDto 객체를 도메인 객체로 바꿔주는 Mapper 생성

* feat: StatisticsRepository 구현체 생성

* refactor: 함수 인자 표시

* feat: 3차 데모데이 기획 변경에 맞는 AdventureRepository 설계 및 구현 (#111)

* feat: 3차 데모데이 기획 변경에 맞는 AdventureRepository 설계 및 구현

* chore: 잘못 위치한 파일 위치 변경

* feat: PlaceRepository 생성 (#118)

* feat: 장소 repository interface 생성

* feat: 서비스풀에 장소 서비스 추가

* feat: place mapper 생성

* feat: 장소 repository 구현체 생성

* refactor: 오류처리 변경에 따른 repository 코드 수정

* feat: 통계 path api 목서버 구현 (#116)

* feat: 랭크 path api 목서버 구현 (#117)

* feat: 랭크 path api 목서버 구현

* feat: 필요없는 변수 변환 로직 제거

* feat: RankActivity 구현 (#119)

* feat: RankActivity 생성

* feat: RankActivity의 Intent를 생성해주는 함수 구현

* feat: 내 순위 및 전체 순위 목 데이터를 라이브 데이터 값으로 넣어주는 기능 구현

* design: RankActivity에 필요한 string resource 추가

* design: 내 순위 및 전체 순위를 보여주는 뷰 구현

* feat: 전체 순위를 띄워줄 리사이클러뷰 생성 및 구현

* feat: LiveData를 이용해 리사이클러뷰에 리스트 전달

* feat: 창 닫기 버튼 추가 구현

* refactor: Manifest 내의 rankActivity 위치 이동

* refactor: 컨벤션에 맞게 id 변경

* design: elevation을 활용해 그림자 추가

* refactor: dimens 적용

* refactor: 그림자 적용

* feat: 카메라로 찍은 사진을 뷰에 띄우고 Uri 추출기능 구현 (#120)

* feat: 촬영한 사진을 이미지뷰에 보여주는 기능 구현

* feat: 촬영한 사진의 Uri 추출 기능 구현

* refactor: 권한 요청 로직 수정 및 함수 위치 변경

- 업로드 화면으로 이동 시 시스템 권한 요구 상자 팝업(카메라, 위치)
- 거절한 권한에 대해 권한요청 다이얼로그 프래그먼트 팝업

* feat: 좌표 이미지를 클릭하여 좌표를 받아 보여주는 기능 구현

* feat: 닫기 버튼 추가

* feat: 3차 데모데이 뼈대 코드 추가 (#130)

* refactor: AuthInterceptor에서 인증처리만 하도록 변경

* feat: PlayerException 추가

* feat: Player를 MemberId로 조회하는 기능 추가

* refactor: 로그인 된 PlayerId를 받는 ArgumentResolver 구현

* refactor: PlayerService 적용

refactor: Request DTO 와 Command DTO 분리

* feat: MyPageActivity 구현 (#121)

* refactor: ERROR를 NONE으로네이밍 변경

* feat: 도메인 객체 생성 (미완)

* feat: 도메인 객체 수정 및 추가 생성

* feat: 인터넷 권한 추가

* feat: 마이페이지의 아이템에 필요한 리사이클러뷰 구현

* feat: 마이페이지에 재사용이 여러번 될 가능성이 있는 뷰를 커스텀 뷰로 제작

* feat: 마이페이지 액티비티 생성

* style: 개행

* feat: 마이페이지 아이템의 두가지 경우의 레이아웃을 따로 제작

* feat: 레이아웃이 두개로 나눠짐에 따라 어댑터 수정중

* feat: 마이페이지 커스텀 아이템 레이아웃 수정

* feat: 마이페이지 커스텀 아이템 내부 리사이클러뷰 구현 방식 변경 (멀티 뷰홀더 적용)

* feat: 마이페이지 뷰 구현

* feat: 도메인 모델을 UI모델로 변경할 매퍼 함수 생성

* design: mypage 레이아웃 디자인 변경

* feat: 뒤로가기 클릭리스너 추가

* remove: 중복된 객체 삭제

* refactor: view의 id 수정

* feat: Statistics 도메인 객체 수정으로 인해 자료형 변환 로직 추가

* fix: BaseEntity에 맞춘 data.sql 수정 (#133)

* [BE] refactor: Pull Request 워크플로우 수정 (#134)

* refactor: DTO들이 모두 record로 구현되도록 수정 (#136)

* refactor: Pull Request 워크플로우 재수정

* feat: merge 워크 플로우 추가 (#137)

* [BE] feat: merge 워크 플로우 추가

* [BE] refactor: merge 워크플로우 수정

* [BE] feat: 도커파일 생성

* [BE] refactor: 도커파일 이름 수정

* [BE] refactor: merge 워크플로우 재수정

* refactor: merge 워크 플로우 추가 (#139)

* feat: merge 워크 플로우 추가

---------

Co-authored-by: zillionme <[email protected]>
Co-authored-by: dooboocookie <[email protected]>

* feat: 랭크 조회 기능 구현 (#94)

* feat: 맴버 아이디로 플레이어 찾는 기능 구현

* feat: RankResponse dto 구현

* feat: RankResponse 정적팩토리 생성자 구현

* feat: 전체 랭크 조회 기능 구현

* feat: 나의 랭크 조회 기능 구현

* refactor: 요청 파라미터 예외 설정

* test: 테스트코드 추가

* refactor: 예외처리 로직 수정

* refactor: json 명세 수정으로 인한 dto 수정

* refactor: players 도메인을 삭제하고 Rank도메인으로 리팩토링

* refactor: 변수명 수정

* test: 테스트 오류 수정

* style: 디버깅 삭제

* feat: 랭크 뷰 기능 구현 및 서버 통신 구현 (#138)

* remove: 필요없는 목 서버 삭제

* feat: 인자가 있는 ViewModel 생성을 위해 ViewModelFactory 생성

* feat: RankDto에 Serializable을 달아주어 직렬화가 가능하도록 구현

* refactor: 불필요한 null 검증 로직 제거

* feat: 서버와 통신해 전체 랭크와 내 랭크 정보를 받아온 후 사용자에게 보여주는 기능 구현

* feat: 서버 통신을 실패해 데이터를 불러오지 못했을 때 메시지를 띄운 후 창이 닫히도록 구현

* refactor: Retrofit Builder에 목서버 url로 갈아끼움

* refactor: 서버 통신 실패 시 에러 처리 로직 함수 분리

* feat: 시작 화면에서 랭크 버튼 클릭 시 랭크 화면으로 이동하도록 구현

* refactor: 함수 이름 변경

* refactor: 리사이클러뷰 애니메이터 설정 변경

* refactor: 내 등수 단위 표시 string 추가

* refactor: ktlint 적용

* refactor: 랭킹 관련 레트로핏 서비스의 path 변경

* feat: 게임 결과 뷰 서버 통신 및 기능 구현 (#143)

* feat: gameId 값을 받아오는 intent

* feat: 뷰모델에 인자로 레포지터리를 넘겨주기 위해 뷰모델 팩토리 생성

* refactor: RankDto에 Serializable을 달아주어 직렬화가 가능하도록 구현

* design: 게임 결과 화면에 필요한 string resource 추가

* refactor: 목 서버와의 연결을 위해 baseUrl 변경

* refactor: 랭크 API 통신을 위해 ViewModel에 RankRepository 인자 추가

* feat: 서버와 통신해 게임 결과를 받아온 후 사용자에게 보여주는 기능 구현

* feat: 서버와 통신해 내 랭크를 받아온 후 사용자에게 보여주는 기능 구현

* feat: 총 플레이 시간을 포매팅해서 보여주는 기능 구현

* feat: 메인으로 돌아가기 버튼을 누를 시 메인으로 돌아가게 하는 기능 구현

* refactor: timeFormatter의 패턴 상수화 처리

* refactor: 불필요한 Log 삭제

* design: color resource 추가

* refactor: 함수 분리

* refactor: 뷰 간격 조절

* feat: 서버에서 받아 온 imageUrl을 Glide를 사용해 이미지로 띄워주는 기능 구현

* design: 버튼 크기 조절

* feat: 모험 결과 DTO와 도메인 객체의 raisedRank 삭제

* feat: 랭크 변동 상황을 알려주는 뷰 삭제

* feat: 인자 변경에 따른 수정 사항 적용

* feat: 모험 기록 뷰 기능 구현 및 서버 통신 구현 (#151)

* design: 모험 기록 뷰 디자인 변경

* design: 모험 기록 뷰 리사이클러뷰 아이템 디자인 변경

* refactor: 뷰 생성 위치 변경, 함수명 변경

* feat: 아이템에 사진 넣는 로직 추가

* feat: 뷰모델 팩토리 생성, 로컬 목데이터에서 가져오던 데이터를 서버로부터 가져오도록 변경

* feat: manifest exported 변경

* feat: 이미지 뷰 corner radius 적용

* design: 색상 변경 및 그림자 적용

* design: 마진값 변경

* [AN] feat: MyPage 기능 구현 (#146)

* feat: �게임 결과 조회 기능 구현 (#152)

* feat: 게임 아이디를 통해 게임결과를 조회한다

* feat: 결과 반환을 위한 responseDTO 생성

* refactor: 게임 결과를 위한 도메인 수정

* feat: 게임 결과 반환 기능 구현 완료

* style: 코드 컨벤션에 맞게 수정

* style: 코드 컨벤션에 맞게 수정

* refactor: 게임 도메인의 오류 리팩토링

* refactor: final 추가

* refactor: 게임 전체 결과 가져오는 로직 수정

* feat: 게임 종료 API 및 게임 조회 테스트 구현 (#147)

* test: 게임 종료 기능 테스트

* feat: 게임 종료 기능 기본 구조 추가

* feat: 게임 종료 기능 구현

* test: 게임 점수 계산 기능 테스트

* feat: 게임 점수 계산 기능 구현

* test: 게임 점수 계산 테스트 수정

* test: 게임 종료 및 게임 결과 저장 서비스 테스트

* feat: 게임 종료 서비스 및 dto 구현

* test: 게임 종료 api 테스트

* feat: 게임 종료 api 구현

* test: 게임 종료 api 테스트 수정

* test: sql파일 수정 및 게임 종료 api 테스트 추가

* feat: 모험 결과 DTO와 도메인 객체의 raisedRank 삭제

* feat: 랭크 변동 상황을 알려주는 뷰 삭제

* feat: 인자 변경에 따른 수정 사항 적용

* test: 게임 종료 api 예외 처리 테스트 추가

* refactor: Game 클래스 필요없는 메서드 제거 및 리팩터링

* feat: 모험 기록 뷰 기능 구현 및 서버 통신 구현 (#151)

* design: 모험 기록 뷰 디자인 변경

* design: 모험 기록 뷰 리사이클러뷰 아이템 디자인 변경

* refactor: 뷰 생성 위치 변경, 함수명 변경

* feat: 아이템에 사진 넣는 로직 추가

* feat: 뷰모델 팩토리 생성, 로컬 목데이터에서 가져오던 데이터를 서버로부터 가져오도록 변경

* feat: manifest exported 변경

* feat: 이미지 뷰 corner radius 적용

* design: 색상 변경 및 그림자 적용

* design: 마진값 변경

* [AN] feat: MyPage 기능 구현 (#146)

* feat: �게임 결과 조회 기능 구현 (#152)

* feat: 게임 아이디를 통해 게임결과를 조회한다

* feat: 결과 반환을 위한 responseDTO 생성

* refactor: 게임 결과를 위한 도메인 수정

* feat: 게임 결과 반환 기능 구현 완료

* style: 코드 컨벤션에 맞게 수정

* style: 코드 컨벤션에 맞게 수정

* refactor: 게임 도메인의 오류 리팩토링

* refactor: final 추가

* refactor: 게임 전체 결과 가져오는 로직 수정

* refactor: 테스트 fixture 클래스 생성

* refactor: 테스트 fixture 적용

* fix: 레포지토리 테스트 truncate.sql 추가

* fix: 서비스 테스트 트랜잭션 추가

* test: 게임 식별자로 게임 조회 테스트 추가

* chore: 식별자로 게임 조회 메서드명 변경

* chore: 머지 컨플릭트 해결

---------

Co-authored-by: hyunji1203 <[email protected]>
Co-authored-by: k_dragonm <[email protected]>
Co-authored-by: krrong <[email protected]>
Co-authored-by: chaewon121 <[email protected]>

* feat: 장소 등록 api 구현

* feat: BaseEntity 생성

* feat: Player 도메인 생성

* feat: Hint 도메인 생성

Co-authored-by: dooboocookie <[email protected]>

* feat: GameResult 도메인 생성

Co-authored-by: dooboocookie <[email protected]>

* style: import문 최적화

Co-authored-by: dooboocookie <[email protected]>

* feat: 스프링 부트 어플리케이션에 @EnableJpaAuditing 추가

Co-authored-by: dooboocookie <[email protected]>

* refactor: 게임 도메인 수정

Co-authored-by: dooboocookie <[email protected]>

* refactor: 장소 도메인 생성

Co-authored-by: dooboocookie <[email protected]>

* refactor: Score 도메인 생성

Co-authored-by: dooboocookie <[email protected]>

* refactor: Place에 BaseEntity 상속 추가

* refactor: Member에 BaseEntity 상속 추가 및 생성자 추가

* test: 장소를 주가하는 기능 tdd

test: 테스트에서 사용되는 값 fixture 생성

* feat: 장소 저장하는 기능 구현

* feat: 장소 저장하는 기능 구현

* feat: places 응답 DTO 추가

* test: 장소 생성 API E2E 테스트 추가

feat: 장소 생성 API 구현

* refactor: PlaceCheckService 도메인 서비스 생성

refactor: MultipartFileManager 파일 저장기 생성

* feat: 임시 커밋

* refactor: File 저장 경로 profile에서 변수로 관리하도록 변경

* feat: Place 전체 조회 기능 추가

- 정렬 기능

* feat: Place 단건 조회 기능 추가

* feat: Place 추천 서비스 도메인 서비스로 분리

* feat: Place 생성 서비스 로직 매개변수로 CreatePlaceCommand 받도록 수정

* refacotr: 파일 저장 경로 application.properties에서 받도록 수정

* test: Fixture 수정 및 테스트 수정

* test: 장소 추가 API 테스트 추가

test: 장소 추가 API 예외 테스트 추가

test: 아이디 장소 조회 API 테스트 추가

test: 장소 조회 API 테스트 추가

* test: 테스트 수정

* chore: 충돌 해결

---------

Co-authored-by: kokodak <[email protected]>

* chore: 안드로이드 CI workflow 수정

* feat: 힌트 생성 API 설계 및 구현 (#142)

* feat: 위경도 좌표를 통해 방향을 계산하는 기능 구현

* feat: memberId 로 Member 를 찾는 기능 구현

* feat: PlayerService 생성

* feat: 힌트 생성에 대한 Command DTO 생성

* feat: 힌트 결과에 대한 DTO 생성

* feat: 힌트에 대한 Service 생성

* feat: 게임에서 힌트를 더 사용할 수 있는지에 대한 판단 기능 구현

* feat: 힌트 생성에 대한 Request DTO 생성

* feat: 힌트 생성에 대한 Command DTO 생성

* feat: 힌트 개수에 따른 생성 제약 조건 및 예외 추가

* feat: GameController 에 힌트 생성 API 로직 구현

* fix: 힌트 최대 사용 개수 수정

* refactor: 게임 최대 시도 횟수를 상수로 추출

* test: 로컬 테스트 환경 설정

* feat: cascade 조건 추가

* test: 더미데이터를 담은 테스트용 fixture 생성

* test: 힌트 생성 기능에 대한 테스트 작성

* chore: RestAssured 의존성 추가

* fix: Game 에서의 cascade 적용 철회 및 테스트 일부 수정

* test: 힌트 생성 API 테스트 코드 작성

* style: 코드 정렬

* feat: 특정 게임의 힌트 단건 조회 API 설계 및 구현 (#157)

* feat: 힌트 조회 Command DTO 생성

* feat: 힌트 관련 예외 추가

* refactor: MemberFixture 에서 매직넘버를 상수로 추출

* feat: 힌트 id를 통해 힌트를 조회하는 기능 구현

* feat: 힌트 id를 통한 힌트 조회 API 구현

refactor: HintResponse 구조 수정

remove: DirectionResponse 삭제

* chore: 병합 충돌 해결

* style: 코드 정렬

* feat: 인게임 화면 기능 및 서버통신 구현 (#149)

* feat: OnAdventure의 기능목록 작성

* feat: 분리된 Factory 클래스 삭제. ViewModle의 동반객체로 이동

* feat: 기능 개발중.. 임시 커밋

* feat: 라이브데이터를 상황에 맞게 커스텀 하려고 시도중

* feat: 도메인이 추가 및 변경됨에 따라 UiModel과 Mapper를 생성

* feat: Place 도메인 기능 추가

* feat: 인게임 화면에서 필요한 상태 및 로직들을 뷰모델에 작성

* feat: 네이버맵에 대한 코드로 인해 액티비티가 너무 길어져 액티비티 코드를 줄이기 위해 분리를 시도중

* style: 아이콘 추가

* feat: 목서버 base url 적용

* feat: 라이브데이터로부터 옵저버가 처음 한번만 notify를 받을 수 있는 라이브데이터 생성

* design: 아이콘 추가

* feat: Positive 버튼과 Negative 버튼이 존재하는 다이얼로그를 재사용할 수 있도록 생성 및 포기하기, 힌트 사용하기 다이얼로그 빌더 함수 생성

* feat: OnAdventureActivity에서 네이버맵 관련 작업을 분리한 코드 작성

- 힌트 마커 추가
- 목적지 마커 추가
- 네이버 로고 위치 조정
- 나침반 위치 조정
- 내 위치 버튼 위치 조정

* feat: OnAdventureViewmodel 재구현

* feat: Dto에 빠진 Serializable 어노테이션 추가

* feat: 뷰모델 변경으로 인해 데이터바인딩 수정

* design: string resources 추가

* feat: OnAdventureActivity 기능 구현
- 오류 처리
- 서버 통신(목서버)
- 다이얼로그 띄우기

* feat: adventureRepository 변경으로 인한 수정

* feat: 뷰모델 팩토리 위치 변경

* feat: 도메인 변경으로 인한 코드 수정

* style: 매니페스트 정리

* refactor: NaagaAlertDialog 개선. 버튼 클릭 이벤트를 다이얼로그 생성시 무조건 받도록 수정함

* feat: AdventureResultActivity를 생성하는 인텐트를 받아오는 방식 변경 및 adventureId를 함께 넘겨줌

* chore: 백엔드 CD 워크플로우 수정

---------

Co-authored-by: zillionme <[email protected]>

* feat: 점진적 리팩토링이 완료됨에 따라 파일 정리 (#156)

* refactor: 기존에 사용하던 Adventure 도메인 객체와 AdventureRepository가 완전히 대체되었으므로 삭제하고 새로 생성한 객체들의 임시 네이밍을 변경

* docs: 기능 구현이 완료되었으므로 기능 목록을 제거한다.

* refactor: 도메인의 점진적 리팩토링이 완료됨에 따라 UiModel과 Mapper 또한 사용되지 않는 것들을 삭제하고 임시 네이밍을 변경했습니다.

* refactor: 점진적 리팩토링이 완료됨에 따라 사용되지 않는 dto들을 삭제하고 패키지 구조를 변경

* refactor: dto와 도메인이 변경됨에 따라 Mapper가 변경됨

* refactor: 서비스 인터페이스와 서비스 풀에서 더 이상 사용하지 않는 파일 삭제 및 dto 변경으로 인한 변경

* refactor: 점진적 리팩토링이 완료됨에 따라 사용하지 않는 레포지토리 구현체 삭제

* rename: repository 네이밍 변경으로 인한 수정

* refactor: 도메인 변경으로 인한 스플래시 변경 및 기능 개선

* rename: 도메인 변경으로 인한 변경

* rename: adventureRepository와 그 구현체 네이밍 변경으로 인한 수정

* feat: 통계 조회 기능 구현 (#159)

* feat: Statistic 반환dto 생성

* feat: Statistic 도메인 생성 및 계산로직 구현

* feat: 나의 통계 조회 기능 구현 완료

* fix: 시간계산 오류 수정

* test: @Sql조건 수정

* refactor: 총 플레이 시간과 게임 시간 값 수정

* fix: 인터셉터 패턴 추가 (#161)

* feat: 게임 시작 화면 기능 구현 (#162)

* design: BeginAdventureActivity에 필요한 string resource 추가

* refactor: 이동할 뷰에게 getIntent 함수를 이용해 intent 생성

* fix: Splash 화면에서 바로 인게임 화면으로 넘어가는 오류 수정

* feat: 메뉴를 누르면 해당 화면으로 이동하도록 구현

* refactor: 게임 결과 화면이 자신의 Intent를 생성하도록 수정

* refactor: ktlint 적용

* feat: 게임 생성 로직 수정 (#166)

* fix: 잘못된 인덱스 로직 수정

* feat: Location 헤더로부터 id를 추출하는 기능 구현

* refactor: 매직넘버를 상수로 대체

* feat: 3차 데모데이 API 명세에 맞추어 응답 DTO 필드 추가

* test: 게임 생성 API 테스트 작성

* chore: 서브 모듈 설정 추가

* feat: firebase crashlytic 초기 환경 설정 (#170)

* feat: FirebaseAnalytics 생성 및 로그 삽입을 담당할 객체 생성 및 상수 모음 파일 생성 (#171)

* fix: application 파일 복구 (#174)

* chore: 더미 데이터 추가 (#176)

* feat: API 수정으로 인한 변경사항 적용 (#177)

* feat: 명세서 변경으로 인해 dto 변경

* feat: 도메인 객체의 타입 변경

* feat: 받아올 값의 타입과 보여줄 뷰의 형태 변화를 반영한 코드 수정

* design: 제약 변경, 보여줄 데이터의 단위 추가

* feat: 목데이터를 실제 값으로 변경

* feat: 인텐트 값을 받아오는 것의 예외 상황에 대한 처리

* refactor: RankReponse 수정 (#179)

* refactor: 변수명 수정

* refactor: 변수명 수정

* feat: baseUrl 변경 및 감추기와 그에 따른 yml 파일 변경 (#182)

* feat: baseUrl이 노출되지 않도록 하며 github secret으로부터 가져올 수 있도록 yml 파일 수정

* feat: local.properties로부터 baseUrl을 가져올 수 있도록 변경

* feat: baseUrl을 BuildConfig로부터 가져올 수 있도록 변경

* ci 파일 1차 수정

* ci 파일 2차 수정

* ci 파일 3차 수정

* ci 파일 4차 수정

* refactor: 쿼리와 uri 수정 (#184)

* refactor: 변수명 수정

* refactor: 변수명 수정

* refactor: 변수명 수정

* fix: uri 쿼리파라미터 오류 수정

* feat: 업로드 뷰 기능 구현 (#181)

* feat: 제목, 설명을 입력받는 기능 구현

* feat: 촬영한 사진의 uri를 뷰모델에 저장

* feat: 모든 정보가 입력되지 않은 경우 전송하지 못하도록 하는 기능 구현

* refactor: 함수명 수정

* feat: 좌표 확장함수 생성 및 전송 기능 수정

- 필요한 정보가 하나라도 입력되지 않은 경우 정보를 입력해달라는 토스트 메시지 출력
- ViewModel에 좌표를 전달하고, 뷰에 좌표를 출력하기 위해 원하는 형태의 text로 변환하는 확장함수 생성

* feat: post 시 필요한 데이터를 파트로 분리

* feat: ViewModel 생성에 필용한 팩토리 추가

* feat: place 등록 기능 구현

* feat: viewModel 생성방법 변경 및 등록 버튼 리스너 연결

* fix: GET /games 쿼리 스트링 없어도 되도록 수정 (#187)

* fix: 게임 전체 조회 기능 수정

* fix: 게임 전체 조회 기능 재수정

* fix: 랭크 전체조회 쿼리 파라미터 조건 수정 (#191)

* fix: 장소데이터 추가 및 인터셉터 설정 변경

* refactor: 컨트롤러 요청 수정 (#193)

* fix: POST /games/{gameId}/hints 쿼리 스트링 없어도 되도록 수정 (#195)

* fix: 힌트 생성 api

* fix: 힌트 생성 api 재수정

* feat: 게임 종료 시, 플레이어 점수 덧셈 기능 추가 (#198)

* feat: 게임 종료 시, 플레이어 점수 덧셈 기능 추가

* refactor: 게임 결과 거리 조회 수정

* feat: Firebase Analytics 버튼 클릭 로그 추가 (#183)

* feat: view id를 가져오기 위한 확장함수 추가

* feat: BeginAdventureActivity firebase용 버튼 로그 추가

* feat: LocationPermissionDialog firebase용 버튼 로그 추가

* refactor: 함수명 및 함수위치 통일

* feat: AdventureResultActivity firebase용 버튼 로그 추가

* feat: MyPageActivity firebase용 버튼 로그 추가

* feat: OnAdventureActivity firebase용 버튼 로그 추가

* refactor: 함수명 통일

* feat: UploadActivity firebase용 버튼 로그 추가

* feat: CameraPermissionDialog firebase용 버튼 로그 추가

* feat: xml에 있는 onClick 함수 삭제 및 firebase 버튼 로그 추가

* [BE] chore: spring profile에 대한 yml 파일 수정

* chore: yml 파일 수정

* chore: submodule 수정

* fix: @Value 어노테이션 삭제

* fix: 서버 통신 수정 (#196)

* feat: NaagaThrowable을 수정하면서 data layer에서 400 / 500 / onFailure 세가지만 판단

* feat: 변경된 명세에 따라 AdventureStatusDto 변경

* feat: OnAdventureActivity에서 에러 로그를 볼 수 있도록 추가

* feat: OnAdventureActivity에서 도착 실패시 다시 시도하라는 토스트 발생

* feat: 다른 라이브 데이터를 받아서 한번만 호출할 수 있도록 효율적으로 변경

 - 기존에는 DiposableLiveData를 만들고 이 데이터에 setValue까지 직접 해줘야했는데 이제는 다른 라이브데이터를 받아서 DisposableLiveData까지 setValue해주지 않아도 된다.

* feat: 기존 게임을 불러올 경우 기존의 힌트를 찍어주는 로직 작성

* rename: 매개변수명 변경

---------

Co-authored-by: hyunji <[email protected]>

* refactor: dev 서버 환경 구축 (#236)

* chore: submodule url 프로토콜 수정

* Update backend_dev_merge_workflow.yml

* Update backend_dev_merge_workflow.yml

* Update backend_dev_merge_workflow.yml

* Update backend_dev_merge_workflow.yml

* Update backend_dev_merge_workflow.yml

* Update backend_dev_merge_workflow.yml

* Update backend_dev_merge_workflow.yml

* Update backend_dev_merge_workflow.yml

* Update backend_dev_merge_workflow.yml

* Update backend_dev_merge_workflow.yml

* Update backend_dev_merge_workflow.yml

* Update backend_dev_merge_workflow.yml

* Update backend_dev_merge_workflow.yml

* Update backend_dev_merge_workflow.yml

* Update backend_dev_merge_workflow.yml

* Update backend_dev_merge_workflow.yml

* Update backend_dev_merge_workflow.yml

* Update backend_dev_merge_workflow.yml

* Update backend_dev_merge_workflow.yml

* chore: update submodule

* Update backend_dev_merge_workflow.yml

* Update backend_dev_merge_workflow.yml

* Update backend_dev_merge_workflow.yml

* Update backend_dev_merge_workflow.yml

* chore: update submodule

* chore: update submodule

* chore: MySql 의존성 추가

* chore: update submodule

* Update backend_dev_merge_workflow.yml

* Update backend_dev_merge_workflow.yml

* chore: update submodule

---------

Co-authored-by: kokodakadokok <[email protected]>
Co-authored-by: kokodak <[email protected]>

* fix: 깃허브 액션 워크플로우 수정 (#239)

* feat: 소셜 로그인 기능 구현 (#235)

* design: LoginActivty에 필요한 drawable source 추가

* design: LoginActivty에 필요한 string source 추가

* feat: 소셜 로그인을 위한 gradle 추가

* feat: 난독화 시 카카오 SDK가 포함되지 않도록 규칙 설정

* feat: 카카오 로그인 API key 숨김 처리

* feat: 인터넷 사용 권한 허용

* feat: 카카오 로그인 기능을 위한 Redirect URI 설정 추가

* feat: Kakao SDK를 초기화하는 application 구현

* feat: Kakao 로그인 기능 Util 구현

* design: LoginActivity 뷰 구현

* feat: 게임 상태가 진행 중이 아닐 때 Splash 화면에서 로그인 화면으로 이동하도록 구현

* feat: 상태바 색상 변경

* feat: 로그인 기능 구현

* feat: 사용자의 카카오 계정 닉네임을 마이페이지에 보여주는 기능 구현

* feat: 서버와 통신해 토큰을 얻어올 때 필요한 Dto, Domain 객체 생성

* feat: Dto, Domain 변환 mapper 추가

* feat: 서버와 통신하여 로그인 인증을 해주는 retrofit service 구현

* feat: 로그인 인증을 통해 토큰을 가져와주는 레포지토리 구현

* feat: 서버에게 받은 토큰을 저장하는 SharedPreference 구현

* feat: 서버에게 토큰을 받아와 로컬 저장소에 저장하는 기능 구현

* feat: 카카오 API KEY 감추기에 따른 yml 파일 수정

* fix: yml 파일 오류 수정

* fix: yml 파일 오류 수정

* fix: yml 파일 오류 수정

* fix: yml 파일 오류 수정

* refactor: ktlint 적용

* refactor: yml 파일 코드 정리

* refactor: 암호화 처리 되는 EncryptedSharedPreferences로 변경

* feat: retrofit Header에 서버에서 받아온 토큰 넣어주기 구현

* refactor: 카카오 토큰을 함수 인자로 받아오도록 수정

* rename: preference가 사용된 파일명을 datasource로 변경

* refactor: 함수 인자명 변경

* chore: 오류 코드 정리 및 예외 핸들러 보완

* chore: 오류 코드 문서와 통일

* refactor: 에러코드 문서화에 맞춘 코드 수정

* refactor: 요청 바디에 대한 입력 오류 예외 핸들러 추가

* fix: 원격 저장소와의 코드 변경 수정

* Update backend_dev_merge_workflow.yml

* hotfix: workflow 긴급 수정

* hotfix: yml 파일 삭제

* fix: 게임 종료 실패 시, 남은 도전 횟수 줄지 않는 문제 해결

* chore: 서브모듈 추가

* 게임 종료 특정 예외 롤백 예외 적용

* fix: 도착 실패시, 시도 횟수 롤백 문제 수정

* test: 테스트 추가

* chore: workflow 수정

* chore: workflow 수정

---------

Co-authored-by: zillionme <[email protected]>

* feat: 자동 로그인 및 로그인 로직 수정 (#241)

* feat: AuthInterceptor 만드는 중

* feat: 닉네임은 서버에서 내려주는 정보이므로 직접 가져올 필요가 없다. 로직 삭제

* rename: 카카오라는 플랫폼에 종속적이지 않은 인증정보 저장소이므로 네이밍 변경

* chore: NaagaApplication은 특정 뷰에 종속된 것이 아닌 어플리케이션 전체를 관장하는 객체이므로 패키지 변경

* feat: Application의 서브클래스 수정 및 해당 위치에서 AuthDataSource 생성

* rename: Preference 네이밍 변경

* feat: 도메인에서 엑세스 토큰과 리프레시 토큰에 대한 내용은 필요가 없다고 생각되어 삭제

* feat: preference에 refresh 로직 추가

* feat: AuthRepository 수정, 데이터 레이어에서 토큰을 저장할 수 있도록 변경

* feat: 주석 추가 및 고차함수를 통해 콜백에서 발급되는 토큰을 받아감

* rename: AuthService의 함수명 변경

* refactor: object에서 class로 변경

* refactor: DefaultAuthRepository에서 dataSource를 외부에서 주입받도록 변경

* refactor: 토큰 가져오는 방식이 변경됨

* feat: 카카오 로그인 방식에 문제가 있어 변경함

* feat: AuthInterceptor 완성

* feat: 예외처리  (#243)

* feat: 데이터 레이어에서 사용할 Custom Throwable 클래스 생성

* feat: 통신 오류시 DataThrowable을 사용하는 코드 스니펫 작성

* feat: RankRepository의 서버 통신을 DataThrowable을 사용하는 통신으로 변경

* feat: 예상하는 예외 발생 시 토스트메시지로 보여주는 기능 구현

* refactor: sort, order를 도메인 Enum 클래스를 사용하도록 변경

* feat: PlaceRepository의 서버 통신을 DataThrowable을 사용하는 통신으로 변경

* feat: StatisticsRepository의 서버 통신을 DataThrowable을 사용하는 통신으로 변경

* feat: upload 기능 서버 통신 연결 해제

* refactor: 점진적 리팩토링 종료 및 불필요한 코드 삭제

* feat: http 응답코드 500번대, body가 null일 때 반환할 에러 추가

* feat: 통신 오류시 DataThrowable을 사용하는 코드 스니펫에 예외 핸들링 추가

* fix: 잘못된 파라미터 수정

* feat: 클라이언트에서 사용하는 hintThrowable 추가

* feat: AdventureRepository의 서버 통신을 DataThrowable을 사용하는 통신으로 변경

* feat: 장소등록 페이지로 이동하지 못하도록 구현

* style: 불필요한 개행 삭제

* refactor: 뷰모델 코드 통일 및 핸들링할 예외 수정

* refactor: 예외 발생 시 보여주는 방법 변경

* refactor: ViewModelProvider의 factory를 ViewModel의 동반객체로 이동

* refactor: 사용하지 않는 예외 클래스 삭제

* refactor: 인증관련 에러 삭제

* refactor: 에러 코드 변경

* feat: 소셜 로그인 기능과 인터셉터 인가 처리 및 아규먼트 리졸버 기능 추가

* feat: OAuth 연습

* feat: OAuth 연습2

* chore: 연습 코드 삭제

* feat: JWT 생성 로직

* feat: AccessToken과 RefreshToken 담고있는 AuthTokens 생성

* feat: 카카오 토큰으로 카카오로부터 유저 정보 받아오는 요청 로직 추가

* feat: 인증 정보 조회에 대한 서비스 로직 추가

* feat: 로그인 관련 요청 추가

* feat: JWT에서 멤버 ID 추출하는 기능 추가

* feat: 인터셉터에서 Authorization 헤더에서 토큰 추출해서 memberId 조회하는 기능 추가

* feat: 멤버 회원가입 시, 플레이어 함께 생성하도록 추가

chore: 네이밍 변경

Co-authored-by: chaewon121<[email protected]>

* refactor: Member에 Password 삭제

test: Basic 헤더에서 Bearer + 토큰으로 변경

Co-authored-by: chaewon121<[email protected]>

* chore: 패키지 구조 변경

Co-authored-by: chaewon121<[email protected]>

* test: AuthInterceptor 테스트 추가

Co-authored-by: chaewon121<[email protected]>

* test: AuthArgumentResolver 테스트 추가

Co-authored-by: chaewon121<[email protected]>

* test: AuthController 테스트 추가

Co-authored-by: chaewon121<[email protected]>

* test: AuthService 테스트 추가

Co-authored-by: chaewon121<[email protected]>

* chore: 필요없는 프로필 삭제

Co-authored-by: chaewon121<[email protected]>

* feat: 서브모듈 추가

Co-authored-by: chaewon121<[email protected]>

* feat: 예외 처리 추가

Co-authored-by: chaewon121<[email protected]>

* remove: 테스트 프로필 삭제

Co-authored-by: chaewon121<[email protected]>

* chore: 스타일 수정

* test: pull 후 테스트 통과되도록 수정


Co-authored-by: chaewon121 <[email protected]>

* feat: 난독화를 위해 모든 Dto 필드에 SerialName을 추가 (#245)

* fix: AuthInfo에 기본 생성자 추가

* fix: 서브모듈 업데이트

* feat: 앱 아이콘 설정 (#253)

* fix: 메인으로 돌아갈 시 해당 액티비티가 사라지도록 수정 (#255)

* feat: 사용자가 GPS 기능을 껐을 때 이를 인지하고 키도록 유도하는 기능 구현 (#258)

* feat: 장치 구성 변경 대응 (#250)

* feat: 화면을 세로모드로 고정

* feat: 다크모드를 사용해도 다크테마가 나오지 않도록 변경

* feat: 난독화 방지를 위한 ProGuard 수정 (#259)

* refactor: 좌표 간 거리를 M 단위로 변경 및 힌트/시도횟수 변경

* refactor: 좌표간 거리를 m 단위로 변경

* refactor: 힌트 최대 사용 개수와 최대 시도 횟수 변경

* fix: 서브모듈 최신화

* feat: Firebase Analytics 서버 통신 에러 로그 추가 (#260)

* refactor: 게임 종료 타입에 따른 점수 계산 기능 수정

* refactor: 메서드 명 변경

* refactor: 게임 시작 위치와 목적지의 직선 거리 구하는 기능 추가

* refactor: 게임 종료 타입에 따른 점수 계산 기능 수정

* refactor: 게임 결과에 따른 점수 계산 기능 수정

* refactor: gameScore 관련 패키지 네이밍 변경

* refactor: enum을 클래스의 상수로 빼놓은 것 수정

* refactor: gamescore 도메인에 스프링 의존성 제거

* refactor: 스코어 정책 못 찾을 때 예외 발생하도록 변경

feat: InternalException과 Exception에 대한 핸들러 추가

* chore: 스타일 수정

---------

Co-authored-by: dooboocookie <[email protected]>

* feat: 로깅 기능 추가 (#268)

* feat: 이어하기 기능 추가 (#263)

* feat: 이어하기 기능 구현

* feat: 뒤로가기 버튼을 2초내에 두 번 눌려야 종료되도록 기능 구현

* feat: splash를 거치면 login 액티비티로 이동하도록 수정

* feat: splash에서 adventure를 받아온 경우 BeginAdventureActivity까지 전달

- 이를 통해 이어하기가 가능하도록 기능 구현

* feat: 진행중인 게임이 있는 경우 이어하기가 표시되도록 변경

* feat: 게임결과 화면에서 뒤로가기 버튼 클릭 시 BeginAdventureActivity로 이동하도록 구현

* refactor: 버전에 따른 분기처리 함수에 Compat suffix 추가

* refactor: 문자열 strings.xml로 이동

* refactor: 사진 저장 경로 수정  (#269)

* refactor: 이미지 저장하는 경로와 URL 경로 수정

* chore: 서브모듈 업데이트

* chore: 프로덕트 서버 배포

* chore: prod 서버 배포

* chore: prod 서버 배포

* fix: OnAdventureActivity 수정 (#265)

* chore: lottie 의존성 추가

* design: 로티 애니메이션과 뷰 추가

* feat: 로딩 기능 추가

* feat: 뷰모델 불필요한 로직 정리

* feat: 중복 값에는 갱신되지 않는 라이브데이터 생성

* feat: 로티를 지도 위로 띄우기 위해 elevation을 적용

* feat: 로티 배경 흐린 색으로 수정

* design: string 리소스 추가

* feat: 힌트 잔여횟수 표시하도록 변경, 정답 도전 잔여 시도 횟수 표기, 토스트에서 스낵바를 띄우도록 변경, 목적지가 없을 시 종료

* design: 불필요한 + 버튼 삭제

* design: margin값 변경

* feat: snackbar를 toast로 변경

* feat: 로그인 시 사용자의 토큰이 로그에 보여지지 않도록 수정 (#271)

* feat:  스플래시에서 받아온 게임을 넘겨주는 기능 삭제 (#274)

* refactor: 로그 경로 변경

* chore: 서브모듈 수정

* fix: 잘못된 로직 수정 (#276)

* feat:  스플래시에서 받아온 게임을 넘겨주는 기능 삭제

* fix: 잘못된 로직 수정

* feat: 시작 액티비티 변경

* feat: BeginAdventureActivity에서 진행중인 게임이 있는지 판단하는 기능 구현 (#277)

* design: 로딩을 위한 스켈레톤 UI 생성

* feat: 진행중인 상태의 게임을 받아오고 로딩하는 과정을 추가

* feat: 작업중

* rename: 로티 파일 이름 변경

* design: 스켈레톤 뷰 지우고 로티 뷰 추가

* feat: 로티 로딩뷰로 수정

* style: 로그 삭제

* feat: 뷰 진행 플로우 변경

* refactor: 직접 만든 로직을 이미 존재하는 코틀린 api로 대체

* fix: 에러 수정

* fix: 사진 저장 시 1번 회원으로만 저장되는 오류 수정

* fix: 사진 저장 시 1번 회원으로만 저장되는 오류 수정

* chore: 서브모듈 업데이트

* chore: 서브모듈 업데이트

* chore: 추천 범위 500km로 수정

* test: 테스트 fixture 및 builder 추가 및 적용

* fix: 잘못된 거리 계산 수정

* feat: 테스트 Builder 패턴 적용 및 Fixture 생성

remove: 기존의 Fixture 파일 삭제

* test: 테스트 Builder 적용 및 기존의 cascade 옵션 삭제

* fix: application.yml 수정

* chore: 리커시브 컴페리전 이그노어 필드 추가

---------

Co-authored-by: dooboocookie <[email protected]>

* feat: Refresh Token 구현 및 자동 로그인 API, 회원 탈퇴 API, 로그아웃 API 구현

* test: 액세스 토큰 재발급 e2e 테스트 작성

* fix: 로그 환경셜정 변경

* feat: 액세스 토큰 재발급 기능 추가

* refactor: 액세스 토큰 재발급 기능 리팩터링

* refactor: 최초 액세스 토큰 발급 시 AuthToken 영속화

* chore: 임시 커밋

* test: 일부 테스트 수정 및 삭제

* feat: 아규먼트 리졸버 변경 및 추가

* feat: 소셜 로그인 연결 끊기 기능 추가

* fix: 아규먼트 리졸버 스프링 빈 등록

* refactor: 기본 설정파일 수정

* chore: 서브모듈 업데이트

* refactor: 멤버, 플레이어 삭제 필드 추가

* feat: 멤버, 플레이어 삭제 기능 추가

* feat: 토큰 삭제 기능 추가

* feat: AuthToken에 멤버 필드 추가

* feat: 로그아웃 API 추가

* chore: 패키지 구조 변경

* test: 회원탈퇴 로그아웃 E2E 테스트 추가

* chore: 서브모듈 업데이트

* refactor: 소프트 딜리트 @SqlDelete로 수정

refactor: cascade 옵션 PERSIST로 수정

test: 회원탈퇴 로그아웃 서비스, 컨트롤러 테스트스 작성

* chore: 충돌 해결

* chore: 서브모듈 업데이트

* chore: 충돌 해결

---------

Co-authored-by: zillionme <[email protected]>

* test: 작성되지 않은 테스트 코드 추가

* fix: 잘못된 거리 계산 수정

* feat: 테스트 Builder 패턴 적용 및 Fixture 생성

remove: 기존의 Fixture 파일 삭제

* test: 테스트 Builder 적용 및 기존의 cascade 옵션 삭제

* test: 없는 예외 테스트 추가

* test: StatisticTest 와 gameServiceTest 추가

* Update backend_dev_pr_workflow.yml

* fix: Thread.sleep 추가

* Update GameControllerTest.java

* Update GameControllerTest.java

* Update backend_dev_pr_workflow.yml

* Update backend_dev_pr_workflow.yml

* Update backend_dev_pr_workflow.yml

* Update GameControllerTest.java

* Update backend_dev_pr_workflow.yml

* Update backend_dev_pr_workflow.yml

* test: 테스트 fixture 및 builder 추가 및 적용

* fix: 잘못된 거리 계산 수정

* feat: 테스트 Builder 패턴 적용 및 Fixture 생성

remove: 기존의 Fixture 파일 삭제

* test: 테스트 Builder 적용 및 기존의 cascade 옵션 삭제

* fix: application.yml 수정

* chore: 리커시브 컴페리전 이그노어 필드 추가

---------

Co-authored-by: dooboocookie <[email protected]>

* feat: Refresh Token 구현 및 자동 로그인 API, 회원 탈퇴 API, 로그아웃 API 구현

* test: 액세스 토큰 재발급 e2e 테스트 작성

* fix: 로그 환경셜정 변경

* feat: 액세스 토큰 재발급 기능 추가

* refactor: 액세스 토큰 재발급 기능 리팩터링

* refactor: 최초 액세스 토큰 발급 시 AuthToken 영속화

* chore: 임시 커밋

* test: 일부 테스트 수정 및 삭제

* feat: 아규먼트 리졸버 변경 및 추가

* feat: 소셜 로그인 연결 끊기 기능 추가

* fix: 아규먼트 리졸버 스프링 빈 등록

* refactor: 기본 설정파일 수정

* chore: 서브모듈 업데이트

* refactor: 멤버, 플레이어 삭제 필드 추가

* feat: 멤버, 플레이어 삭제 기능 추가

* feat: 토큰 삭제 기능 추가

* feat: AuthToken에 멤버 필드 추가

* feat: 로그아웃 API 추가

* chore: 패키지 구조 변경

* test: 회원탈퇴 로그아웃 E2E 테스트 추가

* chore: 서브모듈 업데이트

* refactor: 소프트 딜리트 @SqlDelete로 수정

refactor: cascade 옵션 PERSIST로 수정

test: 회원탈퇴 로그아웃 서비스, 컨트롤러 테스트스 작성

* chore: 충돌 해결

* chore: 서브모듈 업데이트

* chore: 충돌 해결

---------

Co-authored-by: zillionme <[email protected]>

* chore: 충돌 해결

---------

Co-authored-by: kokodak <[email protected]>
Co-authored-by: kokodakadokok <[email protected]>
Co-authored-by: dooboocookie <[email protected]>
Co-authored-by: dooboocookie <[email protected]>
Co-authored-by: zillionme <[email protected]>

* feat: 버전 변경 (#290)

* feat: 로깅하기 (#291)

* 임시저장

* 임시저장

* feat: 환경 설정별 로깅 추가

* refactor: 로그 파일 및 warn, error 로그 메시지 수정

* refactor: db 로그 출력 분리

* refactor: db 로그 레벨 수정

* chore: 서브모듈 업데이트

* chore: 워크 플로우 수정

* feat: 장소 업로드 기능 구현 (#301)

* refactor: Part를 PartMap으로 변경

* feat: 업로드 화면으로 이동하는 기능 구현

* feat: 정보를 서버로 전송하는 기능 구현

- 필요한 정보를 RequestBody 형태로 만들고 Map에 저장하여 전송하는 방식

* feat: 정보를 성공, 실패했을 때의 로직 구현

* feat: 원하는 예외만 핸들링 하도록 구현

* feat: 잡은 예외에 토스트로 알맞는 문구를 띄워주는 기능 구현

* fix: 자료형 변경

* refactor: 문자열 string.xml 로 추출

* refactor: toRequestBody 변수 삭제

* refactor: key값 companion object에 저장

* fix: 위치관련 버그 수정 (#302)

* feat: 업로드 화면으로 들어간 시점에 위치를 받아오는 기능 구현

* feat: 업로드 화면으로 이동하는 기능 구현

* feat: 위치 로딩을 기다리도록 하기 위한 로딩 로티 추가

* feat: 위치를 받아오고 저장할 때까지 로딩로티를 보여주는 기능 구현

* refactor: branch 변경 (#311)

* refactor: 네트워크 작업 코루틴으로 변경 (#312)

* refactor: Service함수 suspend로 변경

* feat: 값을 반환하거나 예외를 던지는 Response 확장함수 구현

* refactor: 반환 값 Response, suspend 적용

* refactor: 코루틴 적용

* refactor: ViewModel이 Application을 참조하지 않도록 변경 (#307)

* Delete .idea directory

* chore: 전체 gitignore 지정 (#320)

* refactor: Login 뷰에서 진행하는 네트워크 작업 코루틴으로 변경 (#328)

* feat: service와 repository에 suspend 추가

* refactor: repository 내 코루틴 사용

* refactor: repository 생성 시 Dispatcher 전해주도록 수정

* refactor: 코루틴 사용

* refactor: 불필요한 인자 제거

* refactor: 불필요한 로그 제거

* refactor: 불필요한 import 제거

* refactor: my page뷰에서 진행하는 네트워크 작업 코루틴으로 변경 (#323)

* refactor: suspend 함수로 수정 및 반환 값을 Response로 수정

* refactor: DefaultStatisticsRepository의 네트워크 작업을 Response의 확장함수로 선언한 getValueOrThrow를 사용하도록 변경

* refactor: DefaultStatisticsRepository에서 하는 네트워크 작업을 코루틴을 사용하도록 변경

* refactor: suspend 함수로 수정 및 반환 값을 Response로 수정

* refactor: PlaceRepository에서 하는 네트워크 작업을 Response의 확장함수로 선언한 getValueOrThrow를 사용하도록 변경

* refactor: PlaceRepository에서 하는 네트워크 작업을 코루틴을 사용하도록 변경

* refactor: PlaceRepository 변경사항 적용

* style: ktlint 적용

* style: ktlint 적용

* feat: Setting 뷰 구현 (#331)

* design: Setting 페이지 이동 버튼 생성

* feat: Setting 뷰 구현

* feat: 설정으로 이동하는 기능 구현

* feat: 뒤로가기 기능 추가

* feat: manifest에 activity 추가

* fix: History 뷰의 리사이클러뷰 image 오류 문제 해결 (#317)

* fix: History 뷰dml 리사이클러뷰 image 오류 문제 해결

* design: 뒤로가기 버튼 위치 변경

* refactor: Adventure 도메인에 해당하는 네트워크 작업 코루틴으로 변경 (#315)

* refactor: AdventureService의 함수들에 suspend 키워드 추가

* refactor: AdventureRepository의 함수들을 callback 구조에서 coroutine을 통한 반환값을 뱉는 형태로 변경

* refactor: AdventureRepository 변경에 따른ViewModel 변경

* refactor: 에러 상수화 (리뷰 반영)

* feat: 장소 업로드 시 로딩 창이 뜨는 기능 구현 (#308)

* feat: SingleLiveData 추가

* feat: 업로드 상태를 3가지로 관리하는 enum 클래스 생성

* feat: 전송이 완료될 때까지 로딩 로티가 보이는 기능 구현

* refactor: 전송 이벤트의 변경을 ViewModel에서만 관리하도록 변경

* refactor: 업로드 상태를 뷰모델에서 관리하도록 변경

* refactor: 뷰의 visibility 관리를 함수로 추출

* fix: 마이페이지 글자 깨지는 오류 수정 (#333)

* chore: 전체 gitignore 지정

* fix: 마이페이지 글자 크기 계산 로직 오류 수정

* feat: AdventureHistoryViewModel 테스트 추가 (#340)

* feat: ViewModelTest를 위한 Dependency 추가

* feat: LiveData 테스트를 위한 Class 추가

* test: 내 게임 결과 목록이 잘 불러와지는 지 확인 하는 뷰모델 테스트 추가

* style: ktlint 체크

* refactor: fake 객체 위치 변경

* feat: 회원 탈퇴 기능 구현 (#335)

* feat: 서버와 회원 탈퇴 통신을 해주는 service 추가

* feat: 카카오 sdk의 unlink 메서드 추가

* feat: 회원 탈퇴 기능 추기

* feat: 회원탈퇴 버튼 클릭 시 회원 탈퇴가 되도록 하는 기능 구현

* feat: Service의 API 주소 수정

* refactor: Service의 반환 값 수정

* feat: 로그 수정

* refactor: ktlint 수정

* refactor: 메서드 반환 값이 non-nullable 하도록 수정

* refactor: 변수명 변경

* refactor: 에러 코드 상수화

* refactor: 회원 탈퇴 repository 메서드 내 runCatching 삭제

* feat: 회원 탈퇴 후 로그인 창으로 이동 시 백 스택에 쌓인 뷰를 리셋해주는 기능 구현

* feat: 회원 탈퇴 다이얼로그 생성

* feat: RankViewModel 테스트 추가 (#337)

* feat: ViewModelTest를 위한 Dependency 추가

* feat: LiveData 테스트를 위한 Class 추가

* feat: 내 랭킹을 조회해오는 메서드 테스트 추가

* feat: 전체 랭킹을 조회 해오는 메서드 테스트 추가

* feat: 로그아웃 기능 구현  (#341)

* feat: 로그아웃 요청 및 처리 로직 추가

* feat: DELETE 요청인 경우 body가 null이어도 에러를 반환하지 않도록 구현

* feat: 로그아웃 기능 버튼에 연결

* style: 로그아웃 성공시 출력할 문구 추가

* feat: 로그인 상태, 에러를 관리하는 라이브데이터 추가

* feat: 뷰모델 데이터 구독 및 적절한 처리 로직 구현

* chore: 사용하지 않는 파일 삭제

- Call의 확장함수 삭제

* feat: EncryptedSharedPreferences에 저장된 Access, Refresh 토큰 삭제

* feat: 로그아웃 클릭 시 다이얼로그창이 뜨는 기능 구현

* feat: 로그아웃 성공 후 뒤로가기 클릭 시 이전 액티비티가 나오지 않도록 기능 구현

* refactor: 문구 수정

* refactor: 코드 통일

* refactor: return 삭제

* refactor: GameService.endGame() 리팩토링 (#304)

* refactor: game 도메인 패키지와 gaemResult 도메인 패키지 분리

* refactor: Game.endGame() 메서드 Game이 갖는 상태에 대해서만 처리하도록 변경

- ResultType, 즉 성공 실패 여부는 Game이 알 요소가 아니므로 메서드 내에서 계산하는 부분 삭제

* refactor: Game.endGame() 메서드 Game이 갖는 상태에 대해서만 처리하도록 변경

- ResultType, 즉 성공 실패 여부는 Game이 알 요소가 아니므로 메서드 내에서 계산하는 부분 삭제

* refactor: GameFinishService 게임 결과 생성하는 서비스 인터페이스 추가 및 GameResultService로 결과 생성하는 로직 구현

* refactor: PlayerService에 점수 더하는 로직 추가

* refactor: 서비스 메서드에 대한 NoRollbackFor 제거 후 새로운 트랜잭션 열어서 횟수 차감하는 서비스 로직 추가

* fix: NoRollbackFor 원복

* refactor: endGame() 메서드의 동작 분리

* chore: GameResultService 패키지 변경

* refactor: GameManageService 도메인 서비스 생성

* refactor: GameManageService 도메인 서비스 삭제하고 메서드 도메인으로 넣음

* refactor: Game 시도횟수 줄일 때 검증 추가

* test: GameTest endGame 관련 테스트 추가

* test: GameResultService 테스트 추가

* test: PlayerService 점수 추가 로직 테스트 추가

* test: GameServiceTest 게임 종료 로직 테스트 추가

* chore: 워크플로우 수정

* chore: 워크플로우 수정

* chore: 테스트 통과하도록 수정

* chore: game과 gameresult 패키지의 persistence 패키지를 repository로 변경

* chore: setDone() 메서드 네이밍 변경

* chore: 컨벤션으로 메서드 호출 순서대로 메서드 명시

* refactor: 종료되지 않은 게임에 대한 에러를 GameException으로 변경

* refactor: endGame 메서드 진행중 게임 검증을 제일 처음에 진행하도록 변경

* refactor: findPlayerById 재활용하도록 수정

* feat: AdventureResultViewModel 테스트 추가 (#338)

* feat: ViewModelTest를 위한 Dependency 추가

* feat: LiveData 테스트를 위한 Class 추가

* test: 성공한 게임 결과가 잘 불러와지는 지 확인 하는 뷰모델 테스트 추가

* test: 실패한 게임 결과가 잘 불러와지는 지 확인 하는 뷰모델 테스트 추가

* test: 내 랭킹 결과가 잘 불러와지는 지 확인 하는 뷰모델 테스트 추가

* style: ktlint 체크

* style: ktlint 체크

* style: ktlint 체크

* refactor: 리포지터리에 의존성 주입 라이브러리 적용 (#349)

* feat: Hilt 의존성 추가

* feat: by viewModels 를 사용하기 위해 의존성 추가

* refactor: Hilt를 사용하여 의존성 주입 자동화

* refactor: 불필요한 로깅 삭제

* refactor: datasource 의존성 주입 라이브러리 사용 (#352)

* refactor: retrofit 의존성 주입 라이브러리 적용 (#353)

* feat: DataSource Module 추가

* feat: Service Module 추가

* refactor: Repository에 의존성 주입을 자동화하기 위해 수정

* refactor: Repository에 Service 주입 자동화

* refactor: lint check

* feat: 자동로그인 기능 구현 및 스플래시 분리 (#346)

* chore: 전체 gitignore 지정

* feat: AuthInterceptor에서 소셜 로그인은 제외하는 로직 추가, Bearer prefix를 빼먹어서 붙임

* feat: bearer를 붙인 토큰을 반환하도록 변경

* feat: 서버 통신에 필요한 dto 생성 및 refresh api 요청 함수 작성

* feat: 토큰 refresh 요청을 위한 레포지토리 로직 작성

* design: splash가 분리되면서 splash layout design 변경

* feat: 스플래시에서 토큰을 리프레시하고 다음 화면을 정하는 분기처리 로직 추가

* feat: 스플래시 액티비티를 따로 분리함

* feat: AuthRepository에 refresh 기능 선언 추가

* fix: 마이페이지 글자 크기 계산 로직 오류 수정

* style: 로그 삭제

* feat: response의 바디를 한번 확인하면 다시 사용할 수 없는 (closed 이슈)를 해결

* feat: 스플래시 로직을 수정하여 토큰 여부에 따라 화면을 분기

* feat: 로그인 액티비티 시작하는 intent flag 수정

* feat: Interceptor 로직 수정

* feat: 토큰 확인용 api 변경 및 에러로깅 추가

* feat: 사용하지 않는 변수 삭제

* feat: UploadViewModel 테스트 추가 (#343)

* feat: ViewModelTest를 위한 Dependency 추가

* feat: LiveData 테스트를 위한 Class 추가

* feat: Robolectric 추가

* test: UploadViewModel test 추가

* chore: 오타 삭제

* refactor: 양방향 데이터 바인딩을 통해 뷰모델에서 안드로이드 의존성 제거

* refactor: lint 적용

* refactor: 필요없는 코드 삭제

* refactor: 전송을 위한 데이터가 다 채워졌는지 검사를 뷰모델에서 진행하도록 변경

* test: 안드로이드 의존성 없이 테스트 진행

* test: 뷰모델 테스트 진행

* test: 테스트를 위한 의존성 추가

* test: 필요하지 않은 구문 삭제

* fix: 데브 브랜치 머지 워크 플로우 수정

* hotfix: PlayerRepository.findAll() 호출 시 N+1 문제 수정 (#360)

* refactor: Player의 Member 필드 지연로딩으로 변경

* refactor: PlayerRepository.findAll() Fetch Join 진행

* test: 지연 로딩으로 인한 테스트 에러 임시 수정

* refactor: 디자인 수정을 위한 공통 요소 추가 (#378)

* style: 메인 색상 추가

* style: 메인 글꼴 추가

- 던파 비트비트체 ver2

* style: 프로젝트 전체 색상 변경

* style: 아이콘 추가

* refactor: 폰트명 변경

* refactor: rect_main 삭제, 테마 배경색을 color로 지정

* feat: 장소 검수 기능 뼈대코드 설계 및 구현 (#373)

* feat: 검수가 필요한 장소 엔티티 구현

* feat: 장소 검수 컨트롤러 구현

* feat: 장소 검수 Repository 구현

---------

Co-authored-by: kokodak <[email protected]>

* feat: 장소 좋아요 기능 도메인 설계 및 뼈대코드 작성 (#344)

* feat: 좋아요/싫어요 뼈대코드 도메인 설계

* chore: 좋아요 도메인 패키지 이동

* feat: 장소 통계 도메인 생성

- 역정규화로 인한 통계 테이블 분리

* feat: 장소 좋아요 JpaRepository 생성

* test: PlaceLike 테스트 픽스쳐, 엔티티 빌더 생성

* feat: PlaceStatics JpaRepository 생성

* feat: PlaceStatics 생성자 추가

* test: PlaceStatistics 테스트 픽스처, 엔티티 빌더 생성

* chore: 불필요한 개행 삭제

---------

Co-authored-by: kokodak <[email protected]>
Co-authored-by: dooboocookie <[email protected]>

* fix: OkHttpClient의 interceptor를 AuthInterceptor로 변경 (#375)

* feat: 장소 등록 검수 관리자 페이지 제작 및 인가 인터셉터 추가 (#374)

* feat: 관리자 관련 인가처리하는 인터셉터 구현

* feat: HttpMethod 와 PathPattern에 따라서 인터셉터 연결 여부를 결정하는 인터셉터 추가

* feat: HttpMethod 와 PathPattern에 따라서 인터셉터 연결 여부를 결정하는 인터셉터 추가

* feat: HttpMethod를 가변인자로 받을 수 있고 안보내면 전체 HttpMethod를 다 매핑하도록 수정

* refactor: 기존 AuthInterceptor 매핑 PathMatcherInterceptor로 변경

* test: RequestPatternTest 추가

* test: PathMatcherInterceptorTest 추가

* feat: manager 페이지에 대해서 CORS 설정

* chore: 네이밍 변경

* refactor: Auth 헤더의 값이 id:password 들어오지 않을 때 검증 추가와 예외 정의

* refactor: Auth 헤더의 값이 id:password 들어오지 않을 때 검증 추가와 예외 정의

* refactor: stream 대신 asList로 리스트 변환하도록 변경

* refactor: PathMatcher를 관리하는 정적 클래스 생성

* test: Path는 맞고 Method는 틀린 경우 테스트 케이스 추가

* refactor: 메서드 호출 순서에 맞게 선언 순서 배치

* chore: stream 제거하고 새로 ArrayList 생성하도록 변경

* chore: Controller 목객체로 변경

* chore: trim()을 stip()으로 변경

* [BE] fix: 나의 통계 조회 시 성능 저하 문제 해결 (#364)

* refactor: 게임 결과 조회 n+1 문제 수정

* feat: gameRepository 테스트코드 작성

* refactor: 쿼리문 가독성 있게 수정

* refactor: gameResult 의 game  객체 지연 로딩 추가

* fix: 테스트 오류 수정

* fix: 트렌젝셔널 추가

* refactor: 게임결과 조회시 목적지 조회도 함께 조회되도록 쿼리 수정

* fix: 게임 통계 조회 시 실패 게임도 거리 집계되는 문제 해결 (#382)

* refactor: 게임 결과 조회 n+1 문제 수정

* feat: gameRepository 테스트코드 작성

* refactor: 쿼리문 가독성 있게 수정

* refactor: gameResult 의 game  객체 지연 로딩 추가

* fix: 테스트 오류 수정

* fix: 트렌젝셔널 추가

* fix: 실패한 게임 통계에 거리 잡히지 않도록 수정

* refactor: GameRecord 레코드로 변환

* test: 테스트 시, 거리에 대한 컬럼도 테스트

---------

Co-authored-by: chaewon121 <[email protected]>
Co-authored-by: chaewon121 <[email protected]>

* fix: 모든 게임 결과 조회 시, 진행중 게임 있으면 예외 발생하는 사항 수정 (#383)

* refactor: 게임 결과 조회 n+1 문제 수정

* feat: gameRepository 테스트코드 작성

* refactor: 쿼리문 가독성 있게 수정

* refactor: gameResult 의 game  객체 지연 로딩 추가

* fix: 테스트 오류 수정

* fix: 트렌젝셔널 추가

* fix: 게임을 통해 게임 결과를 가져오는 방식에서 게임결과들을 플레이어 아이디로 조회

* test: GameService의 게임 통계 테스트에 진행중 게임 데이터 추가하고 테스트

---------

Co-authored-by: chaewon121 <[email protected]>
Co-authored-by: chaewon121 <[email protected]>

* Refactor/#391 모험 기록 뷰 디자인 변경 (#396)

* design: color resource 추가

* design: 성공, 실패를 보여주는 라벨 추가

* design: 뷰 제목 변경을 위해 strings resource 변경

* design: drawable resource 이름변경으로 인한 코드 수정

* design: 폰트 변경

* design: color resource 이름 변경

* feat: 앱 강제 업데이트 기능 구현 (#400)

* feat: firebase-config 의존성 추가

* feat: 확장함수 패키지 생성, 이동 및 추가

* feat: 확인 다이얼로그 추가

- 강제 업데이트를 위해 외부가 클릭되어도 다이얼로그가 꺼지지 않도록 구현

* feat: 강제 업데이트 기능 구현

* refactor: 함수명 변경

* refactor: text gravity 수정

* refactor: 다이얼로그 title 글씨 크기 수정

* refactor: 다이얼로그 패키지 이동

* refactor: 로그인 뷰 디자인 변경 (#399)

* design: 빌딩과 별 drawable 추가

* design: strings resource 변경

* design: 로그인 디자인 변경

* refactor: 불필요한 상태바 설정 코드 삭제

* refactor: 업로드 뷰 디자인 변경 (#381)

* refactor: 업로드 뷰 디자인 변경

* refactor: 사용하지 않는 변수 삭제

* refactor: AppCompatButton 사용해서 배경색 지정하도록 변경

* refactor: editText에 hint 추가

* refactor: ktlint

* refactor: 버튼 배경 변경

* refactor: editText 밑줄 삭제

* refactor: editText marginTop 수정

* refactor: 이미지뷰 marginTop 수정

* fix: 버튼 id 수정

* refactor: 사용하지 않는 함수 삭제

* refactor: 설정 뷰 디자인 변경 (#397)

* design: 폰트 적용

* design: strings resource 추가

* design: 빌딩과 별 drawable 추가

* design: 백그라운드에 빌딩과 별 이미지 추가

* refactor: strings resource 띄어쓰기 수정

* [BE] refactor: 로깅 구체화 하기 (#318)

* feat: 로그 필터 구현

* fix: application prod를 local로 수정

* feat: logback gradle 의존성 추가

* feat: 기존 로깅 파일 삭제

* feat: logback xml 파일 설정

* feat: 로그 필터 구현

* feat: mdc 필터 구현

* feat: 필터 빈등록

* feat: exceptionHandler 수정

* feat: 깃허브 설정

* refactor: mdc 이넘 추가

* refactor: info 로그 출력 message추가

* refactor: 추가 메서드 삭제

* refactor: 사용하지 않는 상수 삭제

* chore: 쿼리 튜닝 및 성능 조회를 위한 변경사항

* chore: 쿼리 정보 로그 삭제

* feat: 로깅 추가 (#359)

* feat: 로그 필터 구현

* fix: application prod를 local로 수정

* feat: logback gradle 의존성 추가

* feat: 기존 로깅 파일 삭제

* feat: logback xml 파일 설정

* feat: 로그 필터 구현

* feat: mdc 필터 구현

* feat: 필터 빈등록

* feat: exceptionHandler 수정

* feat: 깃허브 설정

* refactor: mdc 이넘 추가

* refactor: info 로그 출력 message추가

* refactor: 추가 메서드 삭제

* refactor: 사용하지 않는 상수 삭제

* chore: 쿼리 튜닝 및 성능 조회를 위한 변경사항

* chore: 쿼리 정보 로그 삭제

---------

Co-authored-by: chaewon121 <[email protected]>

* fix: 워크플로우 수정

* hotfix: PlayerRepository.findAll() 호출 시 N+1 문제 수정 (#360)

* refactor: Player의 Member 필드 지연로딩으로 변경

* refactor: PlayerRepository.findAll() Fetch Join 진행

* test: 지연 로딩으로 인한 테스트 에러 임시 수정

* refactor: 코드컨벤션 젹용

* refactor: 날짜 수정

* refactor: mdc 필터 제거

* refactor: 사용하지 않는 mdc토큰 제거

* refactor: 로깅 전략 변경에 따른 코드 수정

* refactor: xml파일에서 mdc 출력 삭제

* refactor: 환경분리 및 패턴 수정

* fix: 환경분리 오류 수정

* refactor: mdc 요소 추가

* chore: 워크플로우 수정

* fix: 트렌젝션 테스트에 추가

* fix: 에러로그 출력 오류 수

* refactor: info로그 수정

* refactor: warn로그 수정

* refactor: error로그 수정

* refactor: 사용하지 않는 enum 삭제

* refactor: 주석 제거

* refactor: 패키지 이동

* refactor: 사용하지 않는 코드 제거

* refactor: warn 레벨 info 로 수정

---------

Co-authored-by: dooboocookie <[email protected]>
Co-authored-by: dooboocookie <[email protected]>

* refactor: my page 뷰 디자인 변경 (#395)

* refactor: 통계 뷰 변경, 리사이클러뷰 사용

* refactor: 패키지 구조 변경

* refactor: 리사이클러뷰 반영

* refactor: 다른이름의 같은 속성의 파일을 하나로 사용하도록 변경

* refactor: 아이템마다 배경이 다르게 지정되도록 변경

* refactor: StatisticsModel 생성 코드를 StatisticsModel 내부로 이동

* refactor: String 상수화

* refactor: 내가 추가한 장소 뷰 디자인 수정

* refactor: 마진 수정

* refactor: 내가 추가한 장소 커스텀 뷰 수정

- 뷰타입에 따라 분리하지 않음
- 리사이클러뷰에서 뷰홀더를 하나로 사용

* refactor: 리사이클러뷰 가로 스크롤로 변경

* refactor: 글씨 크기, 마진 변경

* feat: 장소를 추가한 적 없는 유저에게는 다른 뷰가 보이도록 함

* refactor: 마진 수정

* refactor: ktlint

* refactor: drawable 변경

* refactor: 아이콘 변경

* refactor: apply 적용

* refactor: marginTop 추가

* refactor: 모험 결과 뷰 디자인 변경 (#402)

* design: 성공, 실패를 나타내주는 라벨 drawable 생성

* design: main blue 색을 이용한 그라데이션 배경 resource 추가

* design: 버튼 drawable resource 추가

* design: 모험 결과 디자인 변경

* refactor: string 한글로 변경

* refactor: margin 변경

* refactor: drawable 이름 변경

* fix: 장소 추천 범위 정상화 (#411)

* fix: 장소 추천 범위 300m로 정상화

* test: 300미터 추천 못할 떄 테스트 보완

* refactor: 게임 시작 뷰 디자인 변경 (#408)

* chore: 전체 gitignore 지정

* feat: 버튼 이미지 추가

* feat: BeginActivity에서 자주 쓰이는 Text style 생성

* feat: BeginActivity 뷰 구현 중

* feat: button drawable을 png에서 vector asset으로 변경 및 네이밍 변경

* feat: BeginAdventureActivity 뷰 레이아웃 변경
- setting 버튼 추가
- 빌딩 이미지 화면 사이즈에 맞춤
- 기타 마진 및 패딩 변경

* feat: BeginAdventureActivity 변경된 뷰에 따라 클릭리스너 연결 코드 변경

* feat: 다이얼로그 버튼 배경 변경

* feat: 임시로 설정해놓은 visibility 원상복구

* feat: 사용하지 않는 resource 삭제

* feat: bg_yellow_button drawable 변경

* feat: 사용하지 않는 파일 삭제

* feat: 버튼 백그라운드 적용

* feat: 버튼 백그라운드 적용

* feat: 업로드 화면에서 뒤로가기 기능 구현 (#413)

* feat: 게임 입장 시 사진이 먼저 뜨는 기능 구현 (#407)

* feat: 검수 중인 장소에 대한 장소 등록 허가 API 구현 (#398)

* feat: 임시용 TemporaryPlaceService 생성

* refactor: 바뀐 요구사항에 맞게 createPlace 로직 리팩터링

* refactor: 바뀐 API 명세에 따라 컨트롤러 로직 리팩터링

* fix: 잘못된 base64 디코딩 과정 수정

* feat: 장소 등록 API에 매니저 인터셉터 적용

* feat: 등록할 장소 기준 반경 20M 내에 또 다른 등록된 장소가 존재한다면 예외를 터뜨리도록 수정

* test: 주변 반경 20M 내에 등록된 장소가 있을 때 예외 발생 확인을 위한 테스트 코드 추가

* refactor: collect() 에서 toList() 로 변경

* chore: 주석 삭제

* feat: 검수 중인 장소에 대한 등록 승인 거절 API 구현 (#401)

* refactor: 바뀐 API 명세에 따라 컨트롤러 로직 리팩터링

* feat: 리베이스 충돌 해결

* feat: 검수 장소에 대한 테스트 빌더 구현

* feat: 검수 장소 삭제 API 구현

* feat: 검수 장소 삭제 API 에 ManagerAuthInterceptor 적용

* feat: 검수 장소에서 Player 에 대해 지연로딩 적용

* test: mocking 삭제 및 상태 검증 테스트로 변경

* test: 행위 검증에서 상태 검증 테스트로 변경

* feat: 검수할 장소 등록/ 조회 API 구현 (#404)

* fix : ManagerAuthInterceptor 디코딩 수정

* feat: 인터셉터에 검수중 장소 조회 path 등록

* feat: 검수할 장소 등록 기능 추가

* feat: 검수할 장소 등록 API 구현

* feat: 검수할 장소 목록 조회 기능 구현

* feat: 검수할 장소 목록 조회 API 구현

* fix: 서비스 객체 빈 등록 및 인터셉터 추가

* test: TemporaryPlaceBuilder 및 TemporaryPlaceFixture 작성

* test: ManagerAuthInterceptorTest 디코딩 문제 수정

* feat: TemporaryPlace예외 처리 추가 및 적용

* test: 검수할 장소 등록 테스트 추가

* test: 필요없는 테스트 삭제

* test: 20미터에 이미 등록된 목적지가 있다면 예외응답 테스트

* refactor: 필요없는 메서드 삭제

* refactor: PlaceCheckService 패키지 변경 및 예외 수정

* test: 검수할 장소 목록 조회 기능 테스트

* refactor: 콘솔 로깅 디버그 레벨로 변경

* refactor: TemporaryPlace관련 조회 쿼리 n+1문제 리팩터링

* refactor: TemporaryPlaceResponse에 플레이어 정보 추가

* chore: 개행 제거

* test: TemporaryPlaceControllerTest 수정

* refactor: 서비스 메서드명 변경

* refactor: TemporaryPlaceResponse 필드명 변경

* refactor: 검수할 장소 조회 오래된 순으로 정렬 순서 변경

---------

Co-authored-by: dooboocookie <[email protected]>

* refactor: 버튼 디자인 일관성 있도록 변경 (#417)

* refactor: 버튼 drawable 추가

* refactor: 버튼 background 변경

* refactor: 버튼 background 변경

* refactor: 버튼 background 변경

* refactor: 버튼 background 변경

* refactor: 게임 시작 뷰 디자인 변경 (#408)

* chore: 전체 gitignore 지정

* feat: 버튼 이미지 추가

* feat: BeginActivity에서 자주 쓰이는 Text style 생성

* feat: BeginActivity 뷰 구현 중

* feat: button drawable을 png에서 vector asset으로 변경 및 네이밍 변경

* feat: BeginAdventureActivity 뷰 레이아웃 변경
- setting 버튼 추가
- 빌딩 이미지 화면 사이즈에 맞춤
- 기타 마진 및 패딩 변경

* feat: BeginAdventureActivity 변경된 뷰에 따라 클릭리스너 연결 코드 변경

* feat: 다이얼로그 버튼 배경 변경

* feat: 임시로 설정해놓은 visibility 원상복구

* feat: 사용하지 않는 resource 삭제

* feat: bg_yellow_button drawable 변경

* feat: 사용하지 않는 파일 삭제

* feat: 버튼 백그라운드 적용

* feat: 버튼 백그라운드 적용

* feat: 업로드 화면에서 뒤로가기 기능 구현 (#413)

* feat: 게임 입장 시 사진이 먼저 뜨는 기능 구현 (#407)

* refactor: 불필요한 속성 제거

* refactor: 불필요한 속성 제거

* refactor: guideline 추가해 뷰 배치

---------

Co-authored-by: k_dragonm <[email protected]>
Co-authored-by: krrong <[email protected]>

* refactor: 스플래시 디자인 변경 (#416)

* refactor: 뷰 id 변경

* refactor: 안드로이드 12에서 나오는 스플래시가 보이지 않는 것처럼 구현

* refactor: 불필요한 코드 삭제

* refactor: warning 제거 애노테이션 추가

* refactor: 불필요한 파일 삭제

* refactor: 기본 스플래시를 사용하도록 변경

* refactor: 스플래시 액티비티 디자인 변경

* refactor: 아이콘 변경

* refactor: 인게임 뷰 디자인 변경 (#418)

* chore: 전체 gitignore 지정

* feat: 목적지와의 남은 거리를 나타내는 텍스트 리디자인

* feat: 아이콘 생성

* feat: strings resource화

* feat: 인게임 뷰 리디자인 적용

* feat: 폴라로이드 다이얼로그 디자인 변경

* feat: NaagaAlertDialog의 positive 버튼과 negative 버튼의 위치 변경 및 색상 변경

* feat: 버튼 백그라운드 이미지 적용

* feat: 로티 visibility 원상복구

* feat: 로딩시 거리가 null로 보여지는 것을 0으로 변경

* feat: 버튼 마진값 조절

* feat: 사용하지 않는 아이콘 삭제

* chore: release/v2.0 변경 사항 적용 (#425)

* chore: dev_backend 커밋 내역 Merge

* chore: 워크플로우 수정
chore: 로그 경로 수정

---------

Co-authored-by: kokodak <[email protected]>

* refactor: NaagaAlertDialog와 ConfirmDialog 통일 (#421)

* chore: 전체 gitignore 지정

* feat: NaagaAlertDialog에서 Cancelable 여부를 정할 수 있도록 변경

* feat: ConfirmDialog를 삭제하고 AlertDialog로 대체

* feat: 함수 네이밍 변경 및 사용하지 않는 함수 삭제

* chore: 다이얼로그를 한 패키지에 모음

* feat: 사용되지 않는 다이얼로그의 layout 삭제

* refactor: 장소 등록 api 수정 (#369)

* refactor: 장소 등록을 검수할 수 있도록 검수중으로 등록한다

* refactor: 변경된 API 명세 반영

* refactor: string 변경

* feat: 장소등록 성공시 토스트 메시지를 띄워줌

* refactor: 인게임 버튼 drawable resource 변경 (#424)

* chore: 전체 gitignore 지정

* feat: 버튼의 배경 resource를 변경

* feat: 하단 버튼들의 margin값 변경

* refactor: permission dialog 통일 (#426)

* refactor: 다이얼로그 패키지 이동

* refactor: 다이얼로그 패키지 이동

* refactor: 다이얼로그 폰트 변경

* refactor: 사용하지 않는 파일 삭제

* refactor: string 정리

* refactor: 함수 분리

* feat: 문의하기 기능 구현 (#427)

* feat: strings resource 추가

* feat: 문의하기를 누르면 나아가 공식 계정으로 이메일이 보내 지는 기능 구현

* refactor: 이메일 제목 strings에 추가

* feat: 버전코드 및 버전이름 수정 (#431)

* feat: 쪽지 기능 뼈대코드 설계 및 구현 (#389)

* feat: 쪽지 도메인 생성

* feat: Letter JpaRepository 생성

* test: Letter Fixture, Builder 생성

* feat: LetterController 생성

* chore: 불필요한 개행 삭제

* refactor: BaseEntity 상속

* chore: 코드 컨벤션 적용

* hotfix: 액세스 토큰 리프레시 및 자동 로그인 로직 수정  (#438)

* [ALL] 버전 1 출시 main 브랜치 머지 (#299)

* chore: 안드로이드 프로젝트 폴더 생성 (#2) (#3)

* feat: 안드로이드 프로젝트 초기 세팅 (#5)

* chore: 안드로이드 프로젝트 폴더 생성 (#2)

* feat: 안드로이드 프로젝트 초기 세팅

* chore: gitignore 수정 및 불필요한 파일 삭제

* feat: 프로젝트 초기 세팅 (#7)

* fix: 초기 설정 삭제 (#10)

* feat: 백엔드 프로젝트 초기 세팅 (#11)

* feat: 프로젝트 초기 세팅

* chore: .DS_Store 파일 삭제 및 gitignore 추가

* chore: .DS_Store 파일 삭제 및 gitignore 추가

* chore: 패키지 구조 설정 (#12)

* [BE] feat: 엔티티 설계 (#15)

* chore: 프로퍼티 파일 수정

Co-authored-by: dooboocookie <[email protected]>
Co-authored-by: chaewon121 <[email protected]>
Co-authored-by: zillionme <[email protected]>

* feat: Member 엔티티 생성

Co-authored-by: dooboocookie <[email protected]>
Co-authored-by: chaewon121 <[email protected]>
Co-authored-by: zillionme <[email protected]>

* feat: Place 엔티티 생성

- Position 도메인 생성

Co-authored-by: dooboocookie <[email protected]>
Co-authored-by: chaewon121 <[email protected]>
Co-authored-by: zillionme <[email protected]>

* feat: Game 엔티티 생성

Co-authored-by: dooboocookie <[email protected]>
Co-authored-by: chaewon121 <[email protected]>
Co-authored-by: zillionme <[email protected]>

* feat: Position의 동등성 기능 추가

---------

Co-authored-by: dooboocookie <[email protected]>
Co-authored-by: chaewon121 <[email protected]>
Co-authored-by: zillionme <[email protected]>

* feat: 초기 resource 파일 세팅 (#16)

* feat: DTO 생성 (#18)

* feat: 위치를 나타내는 Dto 생성

* feat: 목적지를 나타내는 Dto 생성

* chore: gitkeep 파일 삭제

* feat: Domain 설계 및 생성  (#21)

* refactor: 좌표를 나타내는 Dto 이름 변경

* feat: 좌표를 저장하는 도메인 클래스 생성

* feat: 목적지를 저장하는 도메인 클래스 생성

* feat: 도메인 repository 인터페이스 생성

* feat: 네이버 맵을 화면에 띄우는 기능 구현 (#23)

* feat: 네이버 맵을 사용하기 위한 의존성을 gradle에 추가

* feat: manifest에 네이버 맵을 사용하기 위한 메타 데이터 추가

* feat: 액티비티 네이밍 변경, 네이버 맵을 화면에 띄우는 기능 구현

* chore: .gitignore 수정

* chore: 네이버 지도 사용을 위해 gradle.properties에 제티파이어를 추가하여 버전 차이 문제를 해결

* feat: 회원 인증 기능 구현 (#26)

* feat: 회원정보 추출 기능 구현

* feat: 회원 인증 어노테이션 커스텀 구현

* feat: 인터셉터 추가

* refactor: argumentResolver 리팩토링

* feat: 설정정보 인터셉터 추가

* refactor: 회원 정보 조회 예외처리 중복 수정

* feat: 위치 권한 요청 기능 구현 (#27)

* chore: repository 패키지 위치 이동

* feat: 모험시작 액티비티 생성

- 필요한 위치권한 Manifest에 등록
- 위치권한 요청

* design: UI관련 resource 추가

* feat: 게임 시작 기능 액티비티 추가 및 권한 요청 기능 구현

* design: 문자열 strings 리소스화

* design: 배경 및 버튼 색상 변경

* feat: 네이버지도에서 현재 위치를 잡는 기능 구현 (#28)

* feat: 위치 권한을 승인한 경우 모험 액티비티로 이동하는 기능 구현

* feat: 내 위치를 잡으면 트래킹하도록 기능 구현

* feat: isLocationButtonEnabled 활성화 구현

* feat: 장소 추천 기능 구현 (#29)

* chore: 프로퍼티 파일 수정

* feat: 위치 기준으로 반경 거리내의 장소 추천 쿼리 작성

* feat: Game 엔티티 빈 생성자 추가

* refactor: 패키지명 수정

* chore: 더미 데이터 추가

* feat: Game 엔티티 생성

* feat: Place 서비스 계층 생성

feat: 장소 선정 로직 기능 구현

* feat: GameRepository 생성

* feat: Game 서비스 계층 생성

feat: 장소 선정 기능 구현

* feat: Place 응답 DTO 구현

* feat: Game 컨트롤러 계층 생성

* style: 코드 정렬

* feat: 목적지와 현재위치 사이 거리를 계산하여 사용자에게 보여주는 기능 구현 (#35)

* feat: repository 목 구현체 생성

* feat: OnAdventureViewModel 생성

* refactor: 거리 반환값의 자료형을 Int로 수정

* feat: 목적지와 현재위치 사이 거리를 계산하여 사용자에게 보여주는 기능 구현

* feat: Coordinate를 받아 해당 위치에 좌표를 찍는 기능 구현 (#39)

- 목적지를 임시로 상수처리
- 추후 목적지를 서버에서 받아 마커를 찍는 방식으로 수정 필요

* feat: 사진 버튼을 클릭하면 사진 다이얼로그를 띄우는 기능 구현 (#40)

* design: close icon 추가

* feat: 화면에 관련된 유틸 파일과 메서드 생성

* design: OnAdventure 액티비티에서 사진을 보여주기 위한 다이얼로그 UI 구현

* feat: 목적지에 대한 사진을 띄워주는 DestinationPhotoDialog 구현

* refactor: LocationDialogFragment의 메서드를 DisplayUtil로 분리

* style: 코드 정렬

* feat: 생성시 액티비티로부터 사진을 받아오는 기능 구현

* design: 사진 아이콘 버튼 추가

* feat: 액티비티에서 사진 아이콘 버튼 클릭시 다이얼로그를 띄우는 로직 구현

* feat: 사진이 로딩중 문구 strings 리소스화

* feat: 뷰모델로부터 얻어온 사진을 넘기도록 로직 수정

* refactor: 다이얼로그 및 변수 네이밍 변경

* refactor: strings 리소스화

* refactor: 객체 네이밍 변경

* feat: 목적지에 도착 시 도착 버튼 활성화 기능 구현 (#41)

* design: 비활성화 버튼 color resource 추가

* design: 버튼의 상태에 따라 버튼 UI가 변경 되는 selector 생성

* feat: 목적지 도달 시 모험 종료 버튼 활성화 기능 추가

* refactor: 기존에 있는 drawable 활용해 selector 생성

* refactor: 도착 버튼 string을 resource에 추가

* �refactor: API 명세 변경으로 인한 기능 수정 (#43)

* refactor: 조회 쿼리의 결과를 List로 받도록 수정

* feat: 인증 관련 예외 기능 추가

* feat: 게임 관련 예외 기능 추가

* feat: 장소 관련 예외 기능 추가

* feat: 회원 관련 예외 기능 추가

* feat: 수정된 API 명세에 맞춰 게임 서비스 로직 수정

* feat: 수정된 API 명세에 맞춰 게임 서비스 로직 수정

* feat: 수정된 API 명세에 맞춰 장소 서비스 로직 수정

* feat: 수정된 API 명세에 맞춰 회원 서비스 로직 수정

* feat: 수정된 API 명세에 맞춰 게임 서비스 로직 수정

* feat: 게임에 대한 응답 DTO 생성

* feat: 수정된 API 명세에 맞게 컨트롤러 수정

* feat: 수정된 API 명세에 맞게 컨트롤러 수정

* style: import문 최적화

* refactor: 기존 런타임 예외를 인증 커스텀 예외로 수정

* refactor: 사용하지 않은 메서드 삭제

* refactor: 상수 이름 변경

* refactor: final 키워드 추가

* refactor: @Transactional 어노테이션에 readOnly 속성 추가

* refactor: 패키지 수정

---------

Co-authored-by: kokodak <[email protected]>

* feat: 서버통신 초기세팅 (#44)

* feat: Adventure 도메인 클래스 생성

* feat: Adventure 상태를 갖는 enum 클래스 생성

* feat: 기능 변경에 따른 repository 변경

* chore: 사진 다이얼로그 패키지 위치 변경

* feat: AdventureDto 클래스 생성

* feat: Dto와 domain 클래스간의 mapper 구현

* refactor: repository 이름 변경

* feat: repository 기능 변경으로 인한 mock repository 변경

* feat: retrofit service 인터페이스 생성

* feat: adventure ERROR 상태 클래스 추가

* feat: Repository 변경에 따른 ViewModel 변경 및 서버 통신 오류 처리

* feat: Retrofit 객체 생성 및 interceptor 구현

* chore: AdventureService 패키지 위치 변경

* feat: 목적지 도착 여부 확인 기능 구현 (#47)

* feat: 좌표사이의 거리를 키로미터로 계산하는 로직 구현

* feat: 도착여부 판단 및 접근 권한 검증 기능 구현

* feat: 장소의 유효범위 여부 검증 구현

* feat: 게임 종료기능 api 구현

* refactor: 게임 관련 예외를 사용하도록 변경

* refactor: 인증 관련 예외 추가 및 적용

* style: final 키워드 추가 및 코드 정렬

* fix: 파라미터명 수정

* feat: 백엔드 ci workflows 초안 작성 (#49)

* chore: step 이름 추가 (#50)

* [BE] �fix: 백엔드 ci workflows 초안 작성 (#51)

* chore: step 이름 추가

* fix: default working directory 추가

* fix: working directory 상대경로로 변경 (#52)

* chore: step 이름 추가

* fix: default working directory 추가

* fix: working directory 상대경로로 변경

* feat: 서버에 모험 시작을 요청하는 기능 구현 (#48)

* refactor: AdventureRepository 수정

* feat: Coordinate 객체의 Domain to Dto 매핑 함수 생성

* feat: Result의 failure에서 사용할 나아가 팀만의 Throwable 생성

* feat: 서버통신이 성공적이지 않을 때에 대한 객체와 서버통신 코드를 단순화할 메서드 생성

* feat: AdventureRepository의 beginAdventure 함수 구현

* refactor: 코드 방식 변경 get() -> []

* feat: MockRepository의 beginAdventure 함수 구현

* refactor: 타입을 표현해줌

* feat: 실제 base url 등록

* feat: http 통신 허용

* fix: json 변환 과정 수정

* fix: TODO 주석처리

* feat: 코루틴 의존성 추가

* feat: 모험을 시작하는 서버통신 구현

* feat: 모험이 끝났을 때 서버에게 모험이 종료 됐음을 알려주는 기능 구현 (#53)

* feat: 모험 종료 시 서버에게 데이터를 받아 올 Dto 생성

* feat: 모험 종료 시 서버에게 받아 온 Dto mapper 생성

* refactor: 데이터 반환 값 타입 변경

* feat: AdventureRepository의 endAdventure 구현

* feat: 모험 종료 시 서버와 통신해 현재 모험 상태를 받아온 후 상황에 맞게 분기 처리 해주는 기능 구현

* refactor: mock Repository의 endAdventure 함수 구현

* fix: onClick에서 사용된 함수에게 인자를 넣어 Databinding 오류 해결

* feat: 서버에서 목적지를 받아오는 기능 구현 (#54)

* refactor: 게임 정보를 가져오는 서비스 수정

* feat: 서버에서 목적지를 받아오는 기능 구현

* fix: 목적지 도착 버튼 클릭 시 발생하는 오류 수정 (#56)

* fix: RetrofitService Path 수정

* fix: Serializable 어노테이션 추가

* refactor: iteration 명칭 변경 및 타입 명시 제거

* feat: 안드로이드 프로젝트에 firebase 추가 (#75)

* feat: 필요 없는 파일 삭제

잘못 올린 파일을 삭제합니다.

* chore: gitignore 수정 (#78)

* feat: 안드로이드 CI 자동화 (#77)

* chore: ktlint를 위한 config 파일 추가

* chore: ci 자동화를 위한 yml 파일 추가

* style: ktlint에 걸린 코드 정렬

* chore: ci 자동화 json 파일 추가

* style: ktlint에 걸린 코드 정렬

* style: ktlint에 걸린 코드 정렬

* chore: ci 자동화 json 파일 추가

* style: ktlint에 걸린 코드 정렬

* style: ktlint에 걸린 코드 정렬

* chore: ci 자동화 파일 수정

* style: ktlint 규칙 변경에 따른 수정

* feat: 스플래시 화면에서 진행 중인 모험이 있는지 판단하고 분기 하는 기능 구현 (#58)

* chore: apk 및 aab 추출을 위한 파일

* design: splash를 위한 스타일 생성

* feat: 레포지토리에 모험 상태를 통해 모험 목록을 받아오는 기능 추가

* feat: 모험 상태를 통해 모험목록을 받아오는 retrofit 인터페이스 작성

* feat: 모험 상태를 통해 모험 목록을 반환하는 레포지토리 기능 구현

* feat: 이전 액티비티로부터 OnAdventureActivity로 화면을 전환할때 필요한 인텐트를 반환하는 함수 작성

* feat: 스플래시 액티비티와 뷰모델(및 팩토리) 생성

- 스플래시에서 서버통신을 통해 현재 진행 중인 모험이 있는지 확인한다.
- 현재 진행 중인 모험이 있다면 해당 모험과 함께 OnAdventureActivity로 이동한다.
- 현재 진행 중인 게임이 없다면 BeginAdventureActivity로 이동한다.

* feat: 화면간 데이터 이동을 위한 uiModel 생성

- gradle에 parcelize 플러그인 추가
- AdventureUiModel 및 Mapper 생성
- CoordinateUiModel 및 Mapper 생성
- DestinationUiModel 및 Mapper 생성

* feat: parcelable한 데이터를 인텐트로부터 받기 쉽게할 유틸 함수 작성

* feat: OnAdventureActivity가 열리는 두 가지 경우에 따라 모험을 지정

- 이미 모험이 진행 중이면 이전 화면으로부터 모험을 전달 받고 모험을 서버에 요청하지 않는다.
- 진행 중인 모험이 없다면 서버로부터 모험을 요청한다.

* refactor: OnAdventureActivity에서 Intent를 생성해주므로 해당 함수를 이용하도록 변경

* [AN] feat: registerForActivityResult 분기처리 기능 구현 (#72)

* design: 대락적인 위치 권한만 허용됐을 시 보여줄 문구 string 리소스로 추가

* feat: Dialog 내에서 권한을 체크하여 대략적인 위치 권한이 있는 상태와 전혀 없는 상태를 구분하여 다른 문구를 보여주도록 구현

* feat: BeginAdventureActivity 권한 코드 수정

- 유저가 권한 요청을 허용 및 거절 했을 시 토스트 메시지로 즉각적인 피드백을 주도록 구현
- 함수 분리
- 다이얼로그 태그 상수화

* feat: BeginAdeventureActivity UI 변경사항 적용 (#71)

* design: 랭크, 마이페이지, 업로드 아이콘 추가

* design: 기존의 background를 지정하고 tint로 색을 지정하는 방식은 elevation을 반영하지 못해 색이 있는 shape을 새로 생성함

* design: BeginAdventureActivity에서 사용될 style 생성

* design: BeginAdventureActivity xml 레이아웃 작성

* feat: AdventureResultActivity 구현 (#80)

* design: 모험 결과 상태에 따른 스탬프 drawable 리소스 추가

* design: 모험 결과 페이지에 필요한 strings 리소스 추가

* feat: 모험 결과에 따라 다른 UI가 띄워지는 액티비티 구현

* fix: manifest 오류 수정

* feat: 3차 데모데이 엔티티 설계 (#84)

* feat: BaseEntity 생성

* feat: Player 도메인 생성

* feat: Hint 도메인 생성

Co-authored-by: dooboocookie <[email protected]>

* feat: GameResult 도메인 생성

Co-authored-by: dooboocookie <[email protected]>

* style: import문 최적화

Co-authored-by: dooboocookie <[email protected]>

* feat: 스프링 부트 어플리케이션에 @EnableJpaAuditing 추가

Co-authored-by: dooboocookie <[email protected]>

* refactor: 게임 도메인 수정

Co-authored-by: dooboocookie <[email protected]>

* refactor: 장소 도메인 생성

Co-authored-by: dooboocookie <[email protected]>

* refactor: Score 도메인 생성

Co-authored-by: dooboocookie <[email protected]>

* refactor: Place에 BaseEntity 상속 추가

* refactor: Member에 BaseEntity 상속 추가 및 생성자 추가

---------

Co-authored-by: dooboocookie <[email protected]>

* feat: OnAdventureActivity UI 변경사항 적용 (#73)

* design: OnAdventureActivity에서 사용하는 아이콘 추가

* rename: drawable 컨벤션 유지

* design: 색상 추가

* design: 원 형태의 백그라운드 추가

* design: 문구 변경

* feat: OnAdventureActivity UI 변경사항 적용

* feat: 서버로부터 받아온 목적지에 핀을 꽂는 기능 제거

* rename: 일관성을 위한 아이콘 이름 수정

* design: 하단 버튼 높이 통일

* design: 흰색 배경 drawable 생성

* design: 버튼 그림자 생성

* feat: 충돌 해결

* feat: 충돌 해결

* feat: 충돌해결

* [AN] feat: UploadActivity 구현

* chore: gitignore 수정

* design: 카메라, 좌표 아이콘 추가

* design: 출력 문구 추가

* design: 마진 사이즈 추가

* feat: UploadActivity 구현

* feat: UploadActivity의 인텐트를 가져오는 함수 구현

* chore: string.xml 변수명 변경

* refactor: 사진이 들어갈 이미지뷰와 카메라 아이콘을 분리

* feat: 카메라 권한 요청 기능 구현 (#92)

* design: 카메라 권한 관련 아이콘 추가

* feat: 카메라 권한 추가

* feat: dataBinding 사용하도록 xml 변경

* feat: 카메라 위치권한을 요구하는 다이얼로그 생성

* feat: 카메라 권한이 없는 경우 권한 요청 다이얼로그를 띄우는 기능 구현

* chore: 레이아웃 id 컨벤션 유지

* refactor: 다이얼로그의 tag를 다이얼로그 클래스에 위치하도록 통일

* refactor: 매직넘버 상수화

* rename: drawable 파일명 변경

* feat: 명세서 기준으로 Dto들 생성 (#89)

* feat: 명세서 기준으로 Dto들 생성

* feat: 변경된 API 명세에 맞춰 Dto 변경

* feat: 디바이스의 위치를 받아와 뷰에 보여주는 기능 구현 (#93)

* feat: 디바이스의 위치를 받아와 뷰에 보여주는 기능 구현

* refactor: 좌표를 문자열로 반환하는 기능 함수분리

* feat: 도메인 모델 생성 (#91)

* refactor: ERROR를 NONE으로네이밍 변경

* feat: 도메인 객체 생성 (미완)

* feat: 도메인 객체 수정 및 추가 생성

* feat: 도메인 수정

* rename: 패키지명 수정

* feat: 통계 path 레트로핏 서비스 구현 #101

* feat: 서버에서 Rank 관련 데이터를 받아올 때 사용될 service 생성 (#100)

* feat: 3차 데모데이용 Game Path 레트로핏 서비스 생성 (#102)

* feat: 장소 path 레트로핏 서비스 구현 (#103)

* feat: AdventureHistoryActivity 구현 (#106)

* design: AdventureHistory 뷰에 필요한 string resource 추가

* design: AdventureHistory 뷰에 필요한 drawable resource 추가

* design: 리사이클러뷰에 들어갈 Item 레이아웃 생성

* feat: 모험 기록을 보여 주는 리사이클러뷰 어댑터 생성

* feat: AdventureHistory 액티비티 구현

* feat: AdventureHistoryActivity에 모험 기록을 보여줄 리사이클러뷰 구현

* feat: 뒤로가기 버튼 구현

* refactor: 함수 이름 변경

* refactor: 이름이 길어질 때 줄여쓰기가 되도록 기능 추가

* refactor: Mock 데이터 생성 방법 수정

* refactor: 불필요한 함수 인자 삭제

* feat: RankRepository 생성 (#109)

* refactor: Service 명 수정

* feat: RankRepository Interface 구현

* feat: PlayerDto를 도메인 객체로 바꿔주는 도메인 mapper 생성

* feat: RankDto를 도메인 객체로 바꿔주는 도메인 mapper 생성

* feat: 서버와 Rank 데이터를 주고 받기 위해 팔요한 rank service 객체 생성

* feat: RankRepository 구현체 생성

* refactor: 함수 인자 표시

* feat: StatisticsRepository 생성 (#110)

* rename: 파일명 수정

* feat: StatisticsRepository 인터페이스 생성

* feat: 서버와의 Statistics 관련 통신을 위한 service 객체 생성

* feat: StatisticsDto 객체를 도메인 객체로 바꿔주는 Mapper 생성

* feat: StatisticsRepository 구현체 생성

* refactor: 함수 인자 표시

* feat: 3차 데모데이 기획 변경에 맞는 AdventureRepository 설계 및 구현 (#111)

* feat: 3차 데모데이 기획 변경에 맞는 AdventureRepository 설계 및 구현

* chore: 잘못 위치한 파일 위치 변경

* feat: PlaceRepository 생성 (#118)

* feat: 장소 repository interface 생성

* feat: 서비스풀에 장소 서비스 추가

* feat: place mapper 생성

* feat: 장소 repository 구현체 생성

* refactor: 오류처리 변경에 따른 repository 코드 수정

* feat: 통계 path api 목서버 구현 (#116)

* feat: 랭크 path api 목서버 구현 (#117)

* feat: 랭크 path api 목서버 구현

* feat: 필요없는 변수 변환 로직 제거

* feat: RankActivity 구현 (#119)

* feat: RankActivity 생성

* feat: RankActivity의 Intent를 생성해주는 함수 구현

* feat: 내 순위 및 전체 순위 목 데이터를 라이브 데이터 값으로 넣어주는 기능 구현

* design: RankActivity에 필요한 string resource 추가

* design: 내 순위 및 전체 순위를 보여주는 뷰 구현

* feat: 전체 순위를 띄워줄 리사이클러뷰 생성 및 구현

* feat: LiveData를 이용해 리사이클러뷰에 리스트 전달

* feat: 창 닫기 버튼 추가 구현

* refactor: Manifest 내의 rankActivity 위치 이동

* refactor: 컨벤션에 맞게 id 변경

* design: elevation을 활용해 그림자 추가

* refactor: dimens 적용

* refactor: 그림자 적용

* feat: 카메라로 찍은 사진을 뷰에 띄우고 Uri 추출기능 구현 (#120)

* feat: 촬영한 사진을 이미지뷰에 보여주는 기능 구현

* feat: 촬영한 사진의 Uri 추출 기능 구현

* refactor: 권한 요청 로직 수정 및 함수 위치 변경

- 업로드 화면으로 이동 시 시스템 권한 요구 상자 팝업(카메라, 위치)
- 거절한 권한에 대해 권한요청 다이얼로그 프래그먼트 팝업

* feat: 좌표 이미지를 클릭하여 좌표를 받아 보여주는 기능 구현

* feat: 닫기 버튼 추가

* feat: 3차 데모데이 뼈대 코드 추가 (#130)

* refactor: AuthInterceptor에서 인증처리만 하도록 변경

* feat: PlayerException 추가

* feat: Player를 MemberId로 조회하는 기능 추가

* refactor: 로그인 된 PlayerId를 받는 ArgumentResolver 구현

* refactor: PlayerService 적용

refactor: Request DTO 와 Command DTO 분리

* feat: MyPageActivity 구현 (#121)

* refactor: ERROR를 NONE으로네이밍 변경

* feat: 도메인 객체 생성 (미완)

* feat: 도메인 객체 수정 및 추가 생성

* feat: 인터넷 권한 추가

* feat: 마이페이지의 아이템에 필요한 리사이클러뷰 구현

* feat: 마이페이지에 재사용이 여러번 될 가능성이 있는 뷰를 커스텀 뷰로 제작

* feat: 마이페이지 액티비티 생성

* style: 개행

* feat: 마이페이지 아이템의 두가지 경우의 레이아웃을 따로 제작

* feat: 레이아웃이 두개로 나눠짐에 따라 어댑터 수정중

* feat: 마이페이지 커스텀 아이템 레이아웃 수정

* feat: 마이페이지 커스텀 아이템 내부 리사이클러뷰 구현 방식 변경 (멀티 뷰홀더 적용)

* feat: 마이페이지 뷰 구현

* feat: 도메인 모델을 UI모델로 변경할 매퍼 함수 생성

* design: mypage 레이아웃 디자인 변경

* feat: 뒤로가기 클릭리스너 추가

* remove: 중복된 객체 삭제

* refactor: view의 id 수정

* feat: Statistics 도메인 객체 수정으로 인해 자료형 변환 로직 추가

* fix: BaseEntity에 맞춘 data.sql 수정 (#133)

* [BE] refac…
  • Loading branch information
14 people authored Nov 17, 2023
1 parent ce5d6a3 commit 451eae6
Show file tree
Hide file tree
Showing 47 changed files with 1,393 additions and 1,623 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
@Component
public class AuthTokenGenerator {

private static final long ACCESS_TOKEN_EXPIRE_TIME = 1000L * 60 * 60 * 24 * 30; // 30일
private static final long REFRESH_TOKEN_EXPIRE_TIME = 1000L * 60 * 60 * 24 * 30; // 30일
private static final long ACCESS_TOKEN_EXPIRE_TIME = 1000L * 20; // 20초
private static final long REFRESH_TOKEN_EXPIRE_TIME = 1000L * 60 * 1; // 1분

private final JwtProvider jwtProvider;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
@Service
public class LetterService {

private static final double LETTER_RADIUS = 0.1;
private static final double LETTER_RADIUS = 0.05;

private final LetterRepository letterRepository;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,24 @@
package com.now.naaga.player.application;

import static com.now.naaga.player.exception.PlayerExceptionType.PLAYER_NOT_FOUND;

import com.now.naaga.member.domain.Member;
import com.now.naaga.player.application.dto.AddScoreCommand;
import com.now.naaga.player.application.dto.CreatePlayerCommand;
import com.now.naaga.player.application.dto.DeletePlayerCommand;
import com.now.naaga.player.application.dto.EditPlayerNicknameCommand;
import com.now.naaga.player.domain.Player;
import com.now.naaga.player.domain.Rank;
import com.now.naaga.player.exception.PlayerException;
import com.now.naaga.player.persistence.repository.PlayerRepository;
import com.now.naaga.player.presentation.dto.PlayerRequest;
import com.now.naaga.score.domain.Score;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.List;

import static com.now.naaga.player.exception.PlayerExceptionType.PLAYER_NOT_FOUND;

@Transactional
@Service
public class PlayerService {
Expand All @@ -26,6 +29,14 @@ public PlayerService(final PlayerRepository playerRepository) {
this.playerRepository = playerRepository;
}

public Player editPlayerNickname(final EditPlayerNicknameCommand editPlayerNicknameCommand) {
final Long playerId = editPlayerNicknameCommand.playerId();
final String newNickname = editPlayerNicknameCommand.nickname();
final Player player = findPlayerById(playerId);
player.editNickname(newNickname);
return player;
}

@Transactional(readOnly = true)
public Player findPlayerById(final Long id) {
return playerRepository.findById(id)
Expand Down Expand Up @@ -82,7 +93,9 @@ private int calculateTopPercent(final List<Player> players,
}

public Player create(final CreatePlayerCommand createPlayerCommand) {
final Player player = new Player(createPlayerCommand.nickname(), new Score(0), createPlayerCommand.member());
final String nickname = createPlayerCommand.nickname();
final Member member = createPlayerCommand.member();
final Player player = Player.create(nickname, new Score(0), member);
return playerRepository.save(player);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.now.naaga.player.application.dto;

import com.now.naaga.player.presentation.dto.EditPlayerRequest;
import com.now.naaga.player.presentation.dto.PlayerRequest;

public record EditPlayerNicknameCommand(Long playerId,
String nickname) {

public static EditPlayerNicknameCommand of(final PlayerRequest playerRequest,
final EditPlayerRequest editPlayerRequest) {
return new EditPlayerNicknameCommand(
playerRequest.playerId(),
editPlayerRequest.nickname()
);
}
}
63 changes: 49 additions & 14 deletions backend/src/main/java/com/now/naaga/player/domain/Player.java
Original file line number Diff line number Diff line change
@@ -1,29 +1,32 @@
package com.now.naaga.player.domain;

import static java.lang.Boolean.FALSE;

import com.now.naaga.common.domain.BaseEntity;
import com.now.naaga.member.domain.Member;
import com.now.naaga.player.exception.PlayerException;
import com.now.naaga.player.exception.PlayerExceptionType;
import com.now.naaga.score.domain.Score;
import jakarta.persistence.AttributeOverride;
import jakarta.persistence.Column;
import jakarta.persistence.Embedded;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.OneToOne;
import java.util.Objects;
import jakarta.persistence.*;
import org.hibernate.annotations.SQLDelete;
import org.hibernate.annotations.Where;

import java.util.Objects;
import java.util.regex.Pattern;

import static java.lang.Boolean.FALSE;

@SQLDelete(sql = "UPDATE player SET deleted = true WHERE id = ?")
@Where(clause = "deleted = false")
@Entity
public class Player extends BaseEntity {

private static final int NICKNAME_MAX_SIZE = 20;

private static final int NICKNAME_MIN_SIZE = 2;

private static final Pattern NICKNAME_PATTERN = Pattern.compile("^.*[^가-힣a-zA-Z0-9\\s]+.*$");

private static final String UNAVAILABLE_REGEX = "[^가-힣a-zA-Z0-9\\s]+";

@GeneratedValue(strategy = GenerationType.IDENTITY)
@Id
private Long id;
Expand All @@ -50,14 +53,46 @@ public Player(final String nickname,
this(null, nickname, totalScore, member, FALSE);
}

public Player(final Long id, final String nickname, final Score totalScore, final Member member, final boolean deleted) {
public Player(final Long id,
final String nickname,
final Score totalScore,
final Member member,
final boolean deleted) {
validateNickname(nickname);
this.id = id;
this.nickname = nickname;
this.totalScore = totalScore;
this.member = member;
this.deleted = deleted;
}

public static Player create(final String nickname,
final Score score,
final Member member) {
final String modifiedNickname = modifyToValidNickname(nickname);
return new Player(modifiedNickname, score, member);
}

private static String modifyToValidNickname(final String nickname) {
final String modifiedNickname = nickname.replaceAll(UNAVAILABLE_REGEX, "");
if (modifiedNickname.length() > 20) {
return modifiedNickname.substring(0, NICKNAME_MAX_SIZE);
}
return modifiedNickname;
}

public void editNickname(final String newNickname) {
validateNickname(newNickname);
this.nickname = newNickname;
}

private void validateNickname(final String nickname) {
final boolean isUnavailableNickname = NICKNAME_PATTERN.matcher(nickname).matches();
if(isUnavailableNickname || nickname.length() < NICKNAME_MIN_SIZE || nickname.length() > NICKNAME_MAX_SIZE) {
throw new PlayerException(PlayerExceptionType.UNAVAILABLE_NICKNAME);
}
}

public void addScore(Score score) {
this.totalScore = this.totalScore.plus(score);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,12 @@ public enum PlayerExceptionType implements BaseExceptionType {
HttpStatus.NOT_FOUND,
"해당 플레이어는 존재하지 않습니다."
),
;

UNAVAILABLE_NICKNAME(
306,
HttpStatus.BAD_REQUEST,
"올바르지 않은 닉네임"
);

private final int errorCode;
private final HttpStatus httpStatus;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package com.now.naaga.player.persistence.repository;

import com.now.naaga.player.domain.Player;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

import java.util.List;

public interface PlayerRepository extends JpaRepository<Player, Long> {

List<Player> findByMemberId(final Long memberId);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
package com.now.naaga.player.presentation;

import static com.now.naaga.common.exception.CommonExceptionType.INVALID_REQUEST_PARAMETERS;

import com.now.naaga.auth.presentation.annotation.Auth;
import com.now.naaga.common.exception.CommonException;
import com.now.naaga.player.application.PlayerService;
import com.now.naaga.player.application.dto.EditPlayerNicknameCommand;
import com.now.naaga.player.domain.Player;
import com.now.naaga.player.domain.Rank;
import com.now.naaga.player.presentation.dto.PlayerRequest;
import com.now.naaga.player.presentation.dto.RankResponse;
import com.now.naaga.player.presentation.dto.*;
import jakarta.validation.Valid;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.stream.Collectors;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("/ranks")
import static com.now.naaga.common.exception.CommonExceptionType.INVALID_REQUEST_PARAMETERS;

@RestController
public class PlayerController {

Expand All @@ -26,14 +26,32 @@ public PlayerController(final PlayerService playerService) {
this.playerService = playerService;
}

@GetMapping("/my")
@PatchMapping("/profiles/my")
public ResponseEntity<EditPlayerResponse> editPlayer(@Auth final PlayerRequest playerRequest,
@RequestBody @Valid final EditPlayerRequest editPlayerRequest) {
final EditPlayerNicknameCommand editPlayerNicknameCommand = EditPlayerNicknameCommand.of(playerRequest, editPlayerRequest);
final Player player = playerService.editPlayerNickname(editPlayerNicknameCommand);
final EditPlayerResponse editPlayerResponse = EditPlayerResponse.from(player);
return ResponseEntity
.status(HttpStatus.OK)
.body(editPlayerResponse);
}

@GetMapping("/profiles/my")
public ResponseEntity<PlayerResponse> findMyInfo(@Auth final PlayerRequest playerRequest) {
final Player player = playerService.findPlayerById(playerRequest.playerId());
final PlayerResponse playerResponse = PlayerResponse.from(player);
return ResponseEntity.ok(playerResponse);
}

@GetMapping("/ranks/my")
public ResponseEntity<RankResponse> findMyRank(@Auth final PlayerRequest playerRequest) {
final Rank rank = playerService.getRankAndTopPercent(playerRequest);
final RankResponse rankResponse = RankResponse.of(rank);
return ResponseEntity.ok(rankResponse);
}

@GetMapping
@GetMapping("/ranks")
public ResponseEntity<List<RankResponse>> findAllRank(@RequestParam(name = "sort-by") final String sortBy,
@RequestParam(name = "order") final String order) {
if (!sortBy.equalsIgnoreCase("RANK") || !order.equalsIgnoreCase("ASCENDING")) {
Expand All @@ -42,9 +60,8 @@ public ResponseEntity<List<RankResponse>> findAllRank(@RequestParam(name = "sort

final List<Rank> ranks = playerService.getAllPlayersByRanksAscending();
final List<RankResponse> rankResponseList = ranks.stream()
.map(RankResponse::of)
.collect(Collectors.toList());
.map(RankResponse::of)
.collect(Collectors.toList());
return ResponseEntity.ok(rankResponseList);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.now.naaga.player.presentation.dto;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;

public record EditPlayerRequest(@NotBlank @Pattern(regexp = "^[가-힣a-zA-Z0-9\\s]+$") String nickname) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.now.naaga.player.presentation.dto;

import com.now.naaga.player.domain.Player;

public record EditPlayerResponse(String nickname) {

public static EditPlayerResponse from(final Player player) {
return new EditPlayerResponse(player.getNickname());
}
}
13 changes: 0 additions & 13 deletions backend/src/test/java/com/now/naaga/NaagaApplicationTests.java

This file was deleted.

Loading

0 comments on commit 451eae6

Please sign in to comment.