-
Notifications
You must be signed in to change notification settings - Fork 0
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
Feat: 시니또용 마이페이지와 관련된 로직 및 테스트 코드 구현 #36
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
시니또 조회와 관련해서 코멘트 하나 남겼습니다! 고생하셨어요~~
src/main/java/com/example/sinitto/sinitto/controller/SinittoController.java
Outdated
Show resolved
Hide resolved
sinittoRepository.save(sinitto); | ||
} | ||
|
||
@Transactional(readOnly = true) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
회원 정보를 조회하는 readSinitto에서 사용자(member Entity)조회와 시니또(Sinitto Entity) 조회를 하나로 해도 될 지 잘 모르겠네요. 시니어-보호자는 일대다 관계라 따로 하고 시니또-계좌정보는 일대일 관계라 이대로 해도 될 것 같기도 하고... 다른분들은 어떻게 생각하시는지 궁금합니다!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
저도 이 부분도 수정, 삭제 api처럼 분리할까 고민하다가 시니또 전체정보(Member, Sinitto)를 조회하는 경우가 있으면 api 요청을 따로 두 번 해야할 것 같아서 일단 그대로 뒀습니다!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
피그마를 기준으로 생각해보면 현재 시점에서는 동시에 조회해도 큰 문제는 없어보이기도 하고, 도훈님 말씀대로 시니또-계좌정보 같이 묶어 생각해도 타당한거 같습니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
그럼 일단 그대로 두고 계좌정보를 따로 조회하는 경우가 생기면 그때 추가하도록 하겠습니다!!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
전반적으로 잘 작성된 것 같습니다 👍 고생하셨습니다.
방금 추가하신 계좌 controller관련 간단한 코멘트 하나 남겼습니다 :)
@Operation(summary = "계좌정보 등록", description = "시니또가 계좌정보 등록합니다.") | ||
@PostMapping("/bank") | ||
public ResponseEntity<String> createSenior(@MemberId Long memberId, @RequestBody SinittoRequest sinittoRequest) { | ||
sinittoService.createSinittoBankInfo(memberId, sinittoRequest); | ||
return ResponseEntity.ok("계좌등록되었습니다."); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
계좌 정보 관련 api의 request dto는 필요한 필드가 한정적이라 따로 생성하는건 어떠신가요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
오 좋은 것 같아요! 계좌정보 dto 추가하고 적용해두었어요
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
고생많으셨습니다! 👍 약간의 수정사항이 보여서 코멘트 한번 참고해주시면 정말 감사하겠습니다!
src/main/java/com/example/sinitto/sinitto/controller/SinittoController.java
Outdated
Show resolved
Hide resolved
src/main/java/com/example/sinitto/sinitto/service/SinittoService.java
Outdated
Show resolved
Hide resolved
src/main/java/com/example/sinitto/sinitto/controller/SinittoController.java
Outdated
Show resolved
Hide resolved
src/main/java/com/example/sinitto/sinitto/controller/SinittoController.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
코멘트 남긴 사항들을 잘 반영해주셔서 감사합니다! 정말 고생 많으셨습니다 👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
확인했습니다 :) 고생하셨습니다
* 3주차 산출물 * Chore: 스프링 초기 설정 - .gitignore 파일 추가 - build.gradle 파일 추가후 dependencies 설정 - 자바21 * Feat: 팀원 모두 참여한 초기 Swagger (#3) * Feat: 팀원 모두 참여한 초기 Swagger - controller, dto 코드 구현 - Swagger setting - dto의 getter는 스웨거를 위한 것 * Refactor: HelloCallController '요청' 관련 리팩토링(RequestBody->PathVariable) - RequestBody로 helloCallId 받던걸 PathVariable로 받도록 변경 - 쓸모 없어진 클래스 제거 * Refactor: CallbackController '요청' 관련 리팩토링(RequestBody->PathVariable) - RequestBody로 callbackId 받던걸 PathVariable로 받도록 변경 - 쓸모 없어진 클래스 제거 * Refactor: PointRequest 로 통일 - PointWithdrawRequest -> PointRequest - 둘 다 `int price;`만 가지고 있음 - 쓸모 없어진 클래스 제거 * 4주차 최종 산출물(Weekly-4->Develop) (#18) * Refactor: class DTO를 record DTO로 수정 (#11) * Refactor: CallbackResponse class를 record로 변경 * Refactor: GuardController관련 DTO들 record로 변경 * Refactor: GuardGuidelineController관련 DTO들 record로 변경 * Refactor: HelloCallController관련 DTO들 record로 변경 * Refactor: PointController관련 DTO들 record로 변경 * Refactor: SinittoController관련 DTO들 record로 변경 * Refactor: MemberController관련 DTO들 record로 변경 * Refactor: ReviewController관련 DTO들 record로 변경 * Refactor: AuthController관련 DTO들 record로 변경 * Refactor: SinittoGuideline 관련 클래스 제거 - Sinitto가이드라인은 프론트에서 구현하기때문에 Sinitto가이드라인 관련 클래스는 불필요함 * Refactor: record 스타일 통일 * Refactor: package 재구성 (#12) * Feat: MemberId위한 MethodArgumentResolver 구현 (#13) - MemberId Annotation 구현 - MemberIdArgumentResolver class 구현 - WebConfig class 구현 후 MemberIdArgumentResolver 세팅 * Feat: 초기 Entity 구현 (#15) * Feat: 초기 Entity 구현 - @EnableJpaAuditing 하여 @EntityListeners(AuditingEntityListener.class) 활성화 - 속성 구성 - 연관관계 구성 * Feat: 엔티티 속성에 @NotNull 적용 * Refactor: Senior의 GuardGuideLine에 대한 `@OneToMany` 제거 - GuardGuideLine에서 Senior를 `ManyToOne`으로 매핑해 놓았다. * Feat: `@OnDelete`로 CASCADE 적용하여 연관 엔티티 삭제 시 일관성 유지 * Feat: 4주차 최종 산출물 * Chore: 잘못된 머지 결과 수정 * Chore: 잘못된 머지 결과 수정(중복 SwaggerConfig 제거) * Chore: 잘못된 머지 결과 수정(중복 SwaggerConfig 제거) * Feat: Resolver JWT 데이터 추출 로직 추가, 카카오 로그인 및 JWT 로직 구현 (#29) * feat: UnauthorizedException 정의 및 RestControllerAdvice 작성을 위한 MemberControllerAdvice 생성, Unauthorized에 대한 global exception 구현 * feat: JWT 생성 및 refresh 로직 구현, Resolver에서 MemberId 반환 로직 구현 * refactor: 코드 리팩토링 * feat: 카카오 요청 api 및 카카오 토큰 저장 로직 구현, 카카오 토큰 만료시 자동 리프레쉬 로직 구현 * fix: 이미 카카오토큰이 저장된 경우, 업데이트만 수행하도록 수정 * fix: 파일 이름 오타 수정 * feat: 카카오 로그인을 경유하는 서버 회원가입 및 로그인 비즈니스 로직 구현, Bean 순환 참조 문제 해결 위한 읜존성 제거 * refactor: 인증 관련 로직 member -> auth 로 위치 변경 * feat: 카카오 로그인 및 멤버 회원가입 controller 구현, 임시 CORS 오류 해결 * test: member와 auth 도메인에 대한 단위테스트, repo테스트 추가 및 기본생성자 접근 권한을 protected로 변경 * refactor: 코드 자동 리팩토링 * fix: 멤버 여부 확인 find -> exist로 변환 후 테스트코드 추가, advice에 basePackage 적용 * fix: jwt.secret 값을 dev 속성으로 위치 변경 및 KakaoProperties frontendUri 필드 삭제 * Feat: 보호자용 마이페이지와 관련된 로직 구현 (#31) * feat : SeniorRepository 인터페이스 추가 * feat : GuardService 클래스 추가 * feat : SeniorNotFoundException 클래스 추가 * feat : GuardControllerAdvice 클래스 추가 * feat : GuardController에 있는 api 구현 * feat : updateMember 메소드 추가 * feat : mapToResponse 메소드, updateSenior 메소드 추가 및 getter 추가 * feat : SeniorTest 클래스 추가 Senior 엔티티에 대한 테스트 코드 * feat : SeniorRepositoryTest 클래스 추가 SeniorRepository에 대한 테스트 코드 * refactor : basePackage 추가 * feat : findByIsSinitto 메소드 추가 모든 보호자 불러오는데 사용 * refactor : Transactional 어노테이션 추가 및 업데이트 시 save 메소드 제거 * refactor : responseEntity 리턴하도록 변경 * refactor : 주석 제거 * Feat: 콜백서비스 기능 구현 (#32) * Feat: 콜백 리스트(페이징) 보기 기능 구현 - 필요한 getter 구현 - CallbackResponse에 callbackId, seniorId 추가 - 당장 isSiniito() 가 필요하여 Member 코드 수정. 추후 충돌 가능성 존재 - Senior 도 필요한 getter 가 있어 수정. 추후 충돌 가능성 존재 - 예외 처리 할 Advice 구현 - 필요한 레포지토리 구현 - 콜백 리스트 보기 기능 비즈니스 로직(서비스층) 구현 - 테스트 구현 * Build: Twilio SDK 의존성 추가 * Feat: 가독성 향상을 위해 Callback의 String status -> Enum 타입으로 변경 - 하드코딩 방지 - 가독성 향상 - 유지 관리 용이 * Chore: 필요없어진 기능(콜백 상세보기) 제거 * Feat: 콜백 수락, 취소, 완료 기능 구현 - 콜백에 할당된 멤버를 식별위해 assignedMemberId 속성를 Callback에 추가 - enum CallbackStatus 내부 속성 이름 변경 - 공통 ForbiddenException 클래스 구현. forbidden응답을 할 예외에 상속용 * Feat: Callback 생성자에 assignedMemberId 추가 * Feat: Member, Senior 에 생성자 추가 * Feat: SeniorRepository 생성 - 테스트할 때 save()가 필요해 생성 - 시니어 추가 기능 만들때 어차피 추가 되는것으로 판단 * Test: CallbackServce, Callback 테스트 구현 - 서비스층은 mockito 를 활용한 테스트 - Callback Entity 는 `@DataJpaTest`활용한 테스트 * Feat: Twilio 관련 도움주는 역할하는 TwilioHelper.java 구현 * Feat: Callback 엔티티에 예외처리 더 꼼꼼히 구현 - 외부 CallbackStatus Enum을 내부 Status Enum으로 변경 - Callback 에 changeStatusToWaiting 구현 - 테스트 더 추가 * Feat: Twilio 활용한 콜백 등록(추가) 기능 구현 - 테스트 구현 * Test: TwilioHelperTest에 DisplayName 추가 * Feat: Callback Entity 의 메서드에 더 촘촘한 예외 처리 - 더 자세한 테스트 추가 * Test: CallbackServiceTest에 Display 설정 - 불필요하다 판단한 테스트 제거 * Refactor: 메서드 이름 형식 통일 * Feat: 더 풍부한 예외 메시지 추가 * Fix: 잘못 상속한 부분 수정 * Fix: 본인이 만든 SeniorRepository 제거 - 서로 다른 패키지에 만들어서 SeniorRepository가 2개가되어 애플리케이션이 실행이 안되었음 * Feat: 더 디테일한 에러 응답을 위해 `ResponseEntity` 적용 * Refactor: Callback 초기화시 assignedMemberId `null`초기화로 변경 * Feat: 조회 전용 서비스 메서드에 `@Transactional(readOnly = true)` 도입 * Feat: Swagger에서 JWT 활용 기능 활성화 (#35) * Feat: Swagger 설정에 SecuritySchme 추가 * Feat: Swagger 문서에 memberId 숨기기위해 `@MemberId`에 `@Parameter(hidden=true)` 붙임 * Feat: Member, Auth 도메인 에서는 JWT 제외 시키기 위한 내용 추가 - 전역으로 `SecurityRequirement().addList("bearerAuth")`를 설정해놓음. 이를 피하기 위한 `security = @securityrequirement(name = "JWT제외")` * Feat: 시니또용 마이페이지와 관련된 로직 및 테스트 코드 구현 (#36) * feat: 시니또용 마이페이지와 관련된 로직 및 테스트 코드 구현 * refactor: [미구현] 표시 삭제 * feat: 시니또 계좌정보 관련 api 추가 * refactor: 코드 컨벤션에 맞게 수정 * fix: updateMember 메서드 오류 수정 * feat: 계좌정보 dto 분리 --------- Co-authored-by: JIHO LEE <161289673+GitJIHO@users.noreply.github.com> Co-authored-by: 2iedo <162278702+2iedo@users.noreply.github.com> Co-authored-by: eunsoni <135586807+eunsoni@users.noreply.github.com>
#️⃣ 연관된 이슈
📝 작업 내용
💬 리뷰 요구사항
⏰ 현재 버그
✏ Git Close