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

[AN/USER] feat: 예매 실패 케이스 처리(#369) #593

Merged
merged 4 commits into from
Nov 1, 2023
Merged

Conversation

SeongHoonC
Copy link
Member

📌 관련 이슈

✨ PR 세부 내용

image image image image

@SeongHoonC SeongHoonC added AN 안드로이드에 관련된 작업 USER labels Oct 31, 2023
@SeongHoonC SeongHoonC self-assigned this Oct 31, 2023
@SeongHoonC SeongHoonC linked an issue Oct 31, 2023 that may be closed by this pull request
@github-actions github-actions bot requested review from EmilyCh0 and re4rk October 31, 2023 05:08
@SeongHoonC SeongHoonC changed the title [AN/USER] feat: 예매 실패 케이스 처리(# [AN/USER] feat: 예매 실패 케이스 처리(#369) Oct 31, 2023
Copy link
Collaborator

@re4rk re4rk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다!

@@ -105,8 +109,14 @@ class TicketReserveViewModel @Inject constructor(
it.toTicketReserveItem()
}

private fun Throwable.logNetworkFailure(key: String) {
analyticsHelper.logNetworkFailure(key, message.toString())
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이거는 Throwable 확장함수로 뺄 수 있지 않을까요??

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이미 Throwable 확장함수인데 Util 로 빼는걸 말씀하시는거겠죠..?

단순히 코드 간결성을 위한 함수 분리입니다.

개인적으로 기본 타입의 확장함수를 Util 로 빼는 것은 지양하고 싶습니다.

Copy link
Member

@EmilyCh0 EmilyCh0 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다 👍

Comment on lines +37 to +46
.onFailure { throwable ->
val message = throwable.message ?: "ERROR_UNKNOWN"
val error: Throwable = when {
"NEED_STUDENT_VERIFICATION" in message -> ErrorCode.NEED_STUDENT_VERIFICATION()
"RESERVE_TICKET_OVER_AMOUNT" in message -> ErrorCode.RESERVE_TICKET_OVER_AMOUNT()
"TICKET_SOLD_OUT" in message -> ErrorCode.TICKET_SOLD_OUT()
else -> throwable
}
return Result.failure(error)
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이거는 여기에서 처리하는 게 좋을까요 뷰모델에서 처리하는 게 좋을까요? 🤔

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

에러 코드에 따라 다른 Throwable 를 던지는게 데이터 레이어의 역할이라 생각해서 이 부분에서 처리했습니다!

Comment on lines +5 to +8
class NEED_STUDENT_VERIFICATION : ErrorCode()
class RESERVE_TICKET_OVER_AMOUNT : ErrorCode()
class TICKET_SOLD_OUT : ErrorCode()
class UNKNOWN : ErrorCode()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

object로 바꾸는 건 어떤가요??

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

object 로 변경을 고려했었습니다. 그 이유는 이것입니다.

  1. 메모리 관리 차원에서 별 차이 없다. (object 라도 static 은 아니라서 사용될 때 메모리 할당)
  2. 생성자 인자가 없으니 생성해서 사용할 필요가 있을까?

그럼에도 class 를 사용한 이유는 다른 Throwable 객체(Exception(), IlegalArgumentException() 등)와 통일성 있게 작성하기 위해서 입니다.

@SeongHoonC SeongHoonC merged commit 0027082 into dev Nov 1, 2023
6 checks passed
@SeongHoonC SeongHoonC deleted the feat/#369 branch November 1, 2023 07:08
seokjin8678 added a commit that referenced this pull request Nov 16, 2023
* [AN/USER] feat: 티켓 예매 디자인 수정 (#567) (#570)

* feat: 티켓 예매 바텀 시트 화면 디자인 수정

* feat: 포스터 크기 수정

* refactor: 티켓을 선택하면 INVISIBLE로 변환

* refactor: 화면 겹치는 현상 제거

* refactor: 불필요한 공백 제거

---------

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

* [AN/USER] feat: 페스타고 유저 앱 버전 변경 (#571) (#572)

* [BE] chore: 개발 환경의 서브 모듈을 업데이트 (#573) (#574)

* refactor: 사용하지 않게된 클래스를 제거한다. (#513)

* [BE] feat: 회원의 학생 인증 정보 조회 API 구현 (#496) (#531)

* refactor: 메서드 네이밍 수정 (verifiacte -> verify)

* feat: 학생 인증 정보 조회 기능 구현

* refactor: findByMemberIdWithFetch INNER JOIN으로 수정

* refactor: inner line return 으로 수정

* refactor: 캐싱된 Response 반환

* [AN/USER] fix: 예매 완료 화면 버그 픽스 (#575) (#576)

* fix: getParcelableExtraCompat

* update: 버전 변경

* [ALL] 프로젝트 README 추가 (#552) (#577)

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* docs: 기능 간단 소개 작성

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* docs: update

* Update README.md

줄바꿈 수정

* docs: Update README.md

* Update README.md

백엔드 기술스택 추가

* Update README.md

- JUnit5 오타 수정

* Update README.md

백엔드 기술스택 flyway 추가

* 인프라 아키텍처 사진 추가

* Update infra structure image

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

---------

Co-authored-by: xxeol2 <[email protected]>
Co-authored-by: Hyun-Seo Oh / 오현서 <[email protected]>
Co-authored-by: 해시 <[email protected]>
Co-authored-by: Guga <[email protected]>

* [AN/USER] refactor: ViewModel Test Code Dispatcher Rule 추가 (#590)

* feat: coroutine dispatcher main rule 추가

* refactor: 티켓 예매 화면 ViewModel 테스트 리팩터링

* refactor: 티켓 목록 화면 ViewModel 테스트 리팩터링

* refactor: 티켓 기록 화면 ViewModel 테스트 리팩터링

* refactor: 티켓 입장 화면 ViewModel 테스트 리팩터링

* refactor: 학생 인증 화면 ViewModel 테스트 리팩터링

* refactor: 로그인 화면 ViewModel 테스트 리팩터링

* refactor: 학교 선택 화면 ViewModel 테스트 리팩터링

* refactor: 마이페이지 화면 ViewModel 테스트 리팩터링

* refactor: 홈 화면 ViewModel 테스트 리팩터링

* refactor: 축제 목록 화면 ViewModel 테스트 리팩터링

* refactor: 마이페이지 화면 ViewModel 테스트 재변경

* [AN/USER] feat: 버튼 더블 클릭 막기(#584) (#585)

* feat: SingleClick Util 추가

* feat: 바텀 시트 바깥 클릭 막기

* feat: single 클릭 적용

* refactor: SingleClick 메서드명 변경

* refactor: xml 파일 호출 순서 맞추기

* [AN/USER] feat: 홈 화면에서 뒤로가기 누르면 곧바로 종료되지 않는다. (#588)

* feat: 홈화면 뒤로가기 상수 추가

* feat: 홈화면 뒤로가기 두 번 클릭 시 종료

* [AN/USER] feat: SingleLivedata 제거 (#586) (#587)

* refactor: 사용하지않는 SingleLiveData 제거

* refactor: 사용하지않는 Event 제거

* [AN/USER] feat: 예매 실패 케이스 처리(#369) (#593)

* feat: 에러 코드를 구분한다

* feat: API 요청 실패 결과에 따라 에러 코드를 예외로 던진다

* feat: 티켓 예매 요청에 실패하면 예외 이벤트가 발생한다.

* feat: 에러 코드에 따라 다른 메세지를 띄운다

* [AN/USER] refactor: 네트워크 에러 로깅을 확장함수 없이 직접 처리한다(#595) (#596)

refactor: 네트워크 에러 로깅을 확장함수 없이 직접 처리한다

* [BE] feat: 축제 조회 필터링 구현(#602) (#603)

* feat: specification 정의

* feat: FestivalFilter 정의

* feat: 축제 진행 상태에 따른 Controller, Service 생성

* refactor: private 생성자를 lombok 을 통해 생성

* chore: 괄호 제거

* chore: 변수 상수화

* chore: given 절 타입 명시

* feat: 축제 조회 ALL 삭제 및 기본값을 진행 중으로 변경

* feat: 축제 당일이 Progress에 포함되도록 변경 및 Spec 리팩터링

* feat: 축제 진행 상황별 정렬 조건 추가

* chore: 메서드 순서 변경

* chore: index 추가

* chore: 에러 메시지 변경

* chore: test 개행 변경 및 변수 재활용

* [AN/USER] feat: 홈화면 필터링 기능을 제공한다 (#600) (#606)

* feat: 축제 목록 필터 이름 상수화

* feat: 축제 목록 칩 색깔 및 텍스트 스타일 작성

* feat: 축제 목록 칩으로 필터링하기 화면 그리기

* feat: 축제 필터 분류 정의

* feat: FestivalRepository 필터링 요청 가능하도록 재정의

* feat: 축제 목록 ViewModel 에 축제 필터링 기능 적용

* feat: 축제 목록 Fragment 에 필터링 기능 적용

* feat: 축제 목록 필터링 API 연동 작업

* feat: 페스타고 홈화면 아이콘 추가

* refactor: 칩 색깔 selector 네이밍 수정

* refactor: 축제 목록 칩 색깔 네이밍 변경

* feat: 필터링 칩 다크모드 적용

* feat: 필터링 상태를 ViewModel 에서 관리하지 않는다

* feat: 현재 선택된 칩의 필터링에 해당하는 리스트를 요청한다

* fix: Loading 이 아니면 구성 변경 시 축제 목록을 재요청하지 않는다

* [BE] refactor: /stages/{stageId}/tickets API의 N+1을 해결한다.(#517) (#578)

* refactor: findAllByStageId fetch 조인으로 변경

* refactor: fetch join 메서드 사용하도록 변경

* chore: Inner 조건 명시하도록 변경

* [BE] 도메인 엔티티의 예외를 정의, 적용하고 테스트 패키지 구조를 정리한다. (#482) (#515)

* feat: DomainValidException 추가

* fix: DomainValidException -> ValidException 변경, 수정

* feat: Validator 검증 로직 추가

* refactor: 검증 로직 도메인에 적용

* refactor: ValidException 에러코드 수정, Validator 로직 추가

* feat: Admin 검증 추가

* feat: EntryCode 검증 추가

* refactor: 검증 로직 대폭 개선

* test: 테스트 코드 패키지 구조에 맞게 이동

* test: 테스트 코드 추가

* test: Member 테스트 코드 추가

* fix: EntryState IllegalArgumentException 변경

* fix: 테스트 코드 깨짐 수정

* refactor: Validator 호출 시 필드명 변수로 추출

* feat: IllegalArgumentException을 대체하는 UnexpectedException 추가, 적용

* feat: OAuth2Clients 중복 추가 시 에러 로그 추가

* feat: UnexpectedException 예외 핸들러 추가

---------

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

* [BE] test properties show sql 관련 설정 삭제 (#605) (#607)

test: 테스트 로그에 쿼리 로그 제거하도록 변경

* [BE] refactor: 사용하지 않는 AdminService 제거 (#610) (#611)

* test: 테스트 코드에 서비스 클래스 제거

* refactor: AdminService 삭제

* refactor: AdminDTO 삭제

* style: 개행 수정

* [BE] 학교 정보 API에 Swagger Annotation을 추가 (#597) (#598)

feat: SchoolController에 Swagger 정보 추가

Co-authored-by: hyunseo <>

* [AN/USER] feat: 축제 목록 화면 UX 개선(#614) (#615)

* [AN] release: v1.2.0 (#618) (#619)

chore: release v1.2.0

---------

Co-authored-by: re4rk <[email protected]>
Co-authored-by: 해시 <[email protected]>
Co-authored-by: Hyun-Seo Oh / 오현서 <[email protected]>
Co-authored-by: xxeol2 <[email protected]>
Co-authored-by: seokjin8678 <[email protected]>
Co-authored-by: Guga <[email protected]>
seokjin8678 pushed a commit that referenced this pull request Nov 16, 2023
* feat: 에러 코드를 구분한다

* feat: API 요청 실패 결과에 따라 에러 코드를 예외로 던진다

* feat: 티켓 예매 요청에 실패하면 예외 이벤트가 발생한다.

* feat: 에러 코드에 따라 다른 메세지를 띄운다
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
AN 안드로이드에 관련된 작업 USER
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

[AN] 예매 실패 케이스 처리
3 participants