Skip to content

Commit

Permalink
Main push (#167)
Browse files Browse the repository at this point in the history
* Feat(#29) 필터 기능 구현

* Refactor(#29): GenericFilterBean로 filter 기능 확장

* Refactor(#29): WebConfig 위치 변경

* Refactor(#6): AuthService getIdToken 메서드 추가 구현

* Refactor(#6): validateNotFoundEmail 메서드 예외 메시지 추가 작성

* Refactor(#6): validateNotFoundEmail 메서드 객체지향 생활 체조 9가지 원칙 규칙 4 적용

* Feat(#29): getUserIdFromToken 메서드 구현

* Refactor(#29): getUserEmailFromToken로 수정

* Refactor(AJD-Archive#6): generateAccessToken 메서드 분리

* Refactor(AJD-Archive#6): createMember 메서드 분리

* Refactor(AJD-Archive#6): AuthService 들여쓰기 수정

* Refactor(AJD-Archive#6): AuthService 상수 static 추가

* Test(#18): test yml 파일 추가, 적용

* Test(#20): yml 파일 적용 코드 추가

* Feat(#29): 어노테이션 구현

* Refactor(#29): 클래스 이름 수정

* Test(#18): BlockControllerTest Restdocs 적용

* Refeactor(#6): 커스텀 예외처리 추가 구현

* Feat(#11): Block 상태별 전체 조회, 단건 조회 기능 구현

* Feat(#11): Block 상태별 전체 조회, 단건 조회 기능 구현

* Test(#18): Block 상태별 전체 조회, 단건 조회 테스트 코드 구현

* Refactor(#11): 불필요 코드 제거

* Test(#20): AuthService 테스트코드 작성

* Test(#20): AuthService 테스트코드 작성

* Test(#20): AuthController 테스트코드 작성

* Test(44): LoginCheckFilter 테스트코드 작성

* Test(#44): LoginCheckFilter 테스트코드 작성

* Test(#20): GoogleAuthService 테스트코드 수정

* Test(#44): LoginCheckFilter 테스트코드 주석 수정

* Test(#44): urrentUserEmailArgumentResolver 테스트코드 작성

* Feat(#11): Block 논리 삭제 기능 구현, Block 상태별 전체조회 Query 수정

* Test(#18): Block 논리 삭제 테스트 코드 구현

* Test(#18): Block 논리 삭제 Restdocs 수정

* Test(#18): Block 테스트 코드 구현

* Test(#18): Repository 테스트를 위한 h2 의존성 추가

* Test(#18): BlockRepository 테스트 코드 구현

* Refactor: 중복 클레스 제거

* Test: TokenProvider 목킹 의존성 주입 추가

* Feat(#48): 프로필 정보 조회 기능 구현

* Refactor(#48): MemberController 위치 변경

* Refactor(#48): mypage 반환 값 변경

* Feat(#48): 프로필 정보 수정 구현

* Feat(#52): 프로필 정보 조회 테스트

* Feat(#52): 프로필 정보 변경 테스트

* Refactor(#52): 프로필 조회 관련 url 수정

* Feat(#50): Validation 의존성 추가

* Refactor: RestTemplate 의존성 주입으로 수정

* Feat(#50): Challenge 구현

* Feat(#50): Cycle 구현

* Feat(#50): CycleDetail 구현

* Feat(#48): 회원가입시 랜덤 닉네임 부여

* Refactor(#50): 생성자에 status 추가

* Feat(#50): ChallengeSaveReqDto 구현

* Feat(#50): ChallengeInfoResDto 구현

* Feat(#50):CycleList를 json 배열로 저장하기 위한 CycleDetailsConverter 구현

* Feat(#50): ChallengeRepository 구현

* Feat(#50): customException 구현

* Feat(#50): customException 구현

* Feat(#50): ChallengeService 구현

* Feat(#50): ChallengeController 구현

* Test(#50): ChallengeTest 작성

* Test(#50): CycleDetailsConverterTest 작성

* Test(#50): ChallengeServiceTest 작성

* Refactor(#48): 닉네임 관련 객체들 빈으로 등록

* Refactor(#48): 닉네임 중복 확인 로직 데이터베이스 접근 방법으로 수정

* Refactor(#48): 닉네임 중복 확인 로직 로직 추가

* Refactor(#48): 닉네임 부여 방식 수정

* Refactor(#50): 날짜 타입을 String에서 LocalDate타입으로 변경

* Refactor(#50):생성 요청 dto 날짜 타입을 String에서 LocalDate타입으로 변경

* Feat(#50): ChallengeController.class 추가

* Refactor(#48): 닉네임 타임아웃 예외처리 수정

* Refacor(): Staus 필드 명 변경

* Refactor():챌린지 생성 메서드 명 변경

* Refactor():챌린지 생성 메서드 명 변경

* Feat(): MemberNotFoundException 추가

* Refactor(#50): Status.ACTIVE로 변경

* Refactor(#50): Status.ACTIVE로 변경

* Feat(#50): challengeService 추가

* Feat(#50): DELETED로 변경

* Refactor(#48): 회원가입시 닉네임 이름 동일화 코드 수정

* Refactor: status 수정

* Refactor: status 수정

* Refactor: MockBean 수정

* Refactor(#48): 닉네임 중복 가능하게 로직 수정

* Refactor(#11): RequestParam에 name 속성 추가

* Refactor: 닉네임 반환 테스트코드 수정

* Refactor: 쓰지 않는 timeout 예외처리 삭제

* Refactor: 쓰지 않는 timeout 예외처리 삭제

* Refactor(#48): 닉네임 중복 가능명사, 형용사 주입 오류 수정

* Refactor(#52): 닉네임 생성 테스트코드

* Update README.md

* Feat(#48): 회원가입시 랜덤 태그 부여

* Feat(#48): 랜덤 태그 중복 처리

* Feat(#48): 랜덤 태그 중복 처리

* Refactor(#48): return 개행 수정

* Refactor(#52): tag 생성 테스트코드

* Refactor(#52): MemberController 테스트코드 작성

* Refactor(#52): 개행 수정

* Refactor(#11): Block 사용자 선언, dto 정적 팩토리 메소드 수정

* Refactor(#18): ControllerTest Header 추가, mockMvc 설정

* Refactor(#48): MemberCustomRepository 이름 수정

* Feat(#62): Dashboard 도메인 구현, Block에 dashboard 연관 관계 추가

* Feat(#62): PersonalDashboard 저장, 수정 기능 구현

* Test(#62): PersonalDashboardService 저장, 수정 테스트코드 구현

* Refactor(#62): PersonalDashboard 수정 요청값 추가

* Refactor(#62): 개인 대시보드 Save DTO에 Validation 예외 추가

* Refactor(#62): 블록 생성 수정(대시보드 요청 추가)

* Test(#62): 블록 생성 수정(대시보드 요청 추가)

* Test(#62): 개인 대시보드 생성, 수정 테스트 코드 구현, 블록 컨트롤러 어노테이션 수정, Dto 어노테이션 수정

* Refactor(#48): MemberCustomRepositoryImpl 이름 수정

* Feat(#62): 개인 대시보드 삭제 기능 구현

* Refactor(#48): config 위치 수정

* Test(#62): 개인 대시보드 삭제 테스트 코드 구현

* Refactor(#62): 블록 리스트 요청시 대시보드 아이디 추가 구현

* Test(#62): 블록 리스트 요청시 대시보드 아이디 추가 테스트 구현

* Feat(#62): 개인 대시보드 전체, 상세 조회 기능 구현

* Test(#62): 개인 대시보드 전체, 상세 조회 테스트 코드 구현

* Docs(#62): 개인 대시보드 Restdocs 정적 페이지 구현

* Feat(#62): 개인 대시보드 상세 보기에 블록 진행도 추가

* Test(#62): 개인 대시보드 상세 보기 테스트에 블록 진행도 추가

* Test(#62): 개인 대시보드 Entity, Repository 테스트 코드 구현

* Refactor(#62): 개인 대시보드 queryDSL 코드 수정

* Test(#62): 개인 대시보드 ControllerTest 반환 추가

* Docs(#52): 내 프로필 정보 조회 API 문서 작성

* Docs(#52): 로그인, 토큰 재발급 API 문서 작성

* Refactor(#11): 블록 삭제 기능 메시지 변경

* Refactor(#18): 블록 삭제 테스트 DisplayName 수정

* Refactor(#11): 블록 Type 추가

* Feat(#67 #62): 팀 대시보드 기능 구현, 테스트 코드 구현, 개인 대시보드 삭제 메시지, queryDSL 수정 (#68)

* Feat(#67): 팀 대시보드 도메인 구현

* Feat(#67): 팀 대시보드 저장 기능 구현

* Feat(#67): 팀 대시보드 수정 기능 구현

* Refactor(#62): 개인 대시보드 삭제 기능 메시지 변경

* Refactor(#62): 개인 대시보드 삭제 예외 처리 추가

* Refactor(#62): 개인 대시보드 queryDSL 수정

* Test(#62): 개인 대시보드 삭제 테스트 DisplayName 수정

* Feat(#67): 팀 대시보드 삭제 기능 구현

* Feat(#67): 팀 대시보드 전체, 상세 조회 기능 구현

* Refactor(#62): 개인 대시보드 정적 팩토리 메소드명 수정

* Feat(#67): 팀 대시보드 참여, 탈퇴 기능 구현

* Feat(#67): 팀 대시보드 초대 멤버 리스트 불러오는 기능 구현

* Test(#67): 팀 대시보드 컨트롤러 테스트 코드 구현

* Test(#67): 팀 대시보드 테스트 코드 구현

* Test(#67): 팀 대시보드 서비스 테스트 코드 구현

* Test(#67): 팀 대시보드 레포지토리 테스트 코드 구현

* Test(#62): 개인 대시보드 서비스 테스트 코드 수정

* Test(#67): 팀 대시보드 서비스 테스트 코드 수정

* Docs(#67): 팀 대시보드 Restdocs 정적 페이지 추가

* Refactor(#11 #18): 블록 반환 값 추가, 반환 값 추가로 인한 테스트 코드 수정 (#71)

* Refactor(#11): 블록 반환 값 추가

* Refactor(#18): 블록 반환 값 추가로 인한 테스트 코드 수정

* Feat(#50): 챌린지 전체 조회, 상세 조회, 삭제, 검색 기능 추가 (#64)

* Feat(#50): 수정 메서드, 상태 변경 메서드 추가

* Feat(#50): 멤버-챌린지 연관관계 설정

* Feat(#50): 챌린지 커스텀 레포지토리 인터페이스 추가

* Feat(#50): 챌린지 커스텀 레포지토리 구현체 추가

* Feat(#50): 챌린지 커스텀 레포지토리 상속받도록 추가

* Refactor(#50): dto단에서 예외처리하도록 변경

* Refactor(#50): 정적 팩토리 메서드 네이밍, 매개변수 변경

* Feat(#50): ChallengeListResDto 추가

* Feat(#50): ChallengeListResDto 추가

* Feat(#50): 조회, 상세조회, 수정, 삭제, 검색 기능 추가

* Feat(#50): 조회, 상세조회, 수정, 삭제, 검색 api 추가

* Feat(#50): ChallengeAccessDeniedException 추가

* Feat(#50): ChallengeNotFoundException 추가

* Refactor(#50): 메서드  추가

* Refactor(#50): 메서드 추가

* Refactor(#50): 커스텀 예외에서 메시지 처리하도록 변경

* Test(#50): 수정, 상태 변경 로직 테스트 추가

* Test(#50): ChallengeServiceTest 조회, 수정, 삭제, 검색 메서드 테스트 추가

* Test(#50): ChallengeServiceTest 조회, 수정, 삭제, 검색 api 테스트 및 레스트독스 적용

* Docs(#50): challenge.adoc 추가

* Docs(#50): index.adoc 추가

* Test(#50): ControllerTest ChallengeController.class 추가

* Feat(#50): Valid 어노테이션 추가

* Style(#50): 코즈 포맷팅 수정

* Refactor(#50): startDate, endDate @NotNull 적용

* Style(#50): 경로변수 카멜케이스로 변경

* Style(#50): 메서드 명 변경

* Style(#50): 매개변수명 변경

* Refactor(#50): 상세조회에 readOnly옵션 설정

* Feat(#50): cycle 필드 저장하도록 변경

* Feat(#50): 블록 엔티티에 챌린지 매핑 및 상태 수정 메서드 추가

* Feat(#50): CycleDetail value 추가

* Feat(#50): status 계산을 위한 ChallengeBlockStatusUtil 추가

* Feat(#50): 매일 자정에 챌린지 블록 상태를 업데이트 하기 위한 스케줄러 설정

* Feat(#50): 챌린지 참여 메서드 추가

* Feat(#50): 챌린지 참여 메서드 추가

* Test(#50): ChallengeBlockStatusUtilTest 추가

* Test(#50): 챌린지 참여 메서드 테스트 추가

* Feat(#50): findByType 추가

* Docs(#50): 챌린지 참여 문서화

* Style(#50): 불필요한 공백 라인 제거

* Test(#50): 블록 도메인에 타입 필드 추가에 따른 챌린지 컨트롤러 테스트 코드 수정 (#72)

* Feat(#50): 수정 메서드, 상태 변경 메서드 추가

* Feat(#50): 멤버-챌린지 연관관계 설정

* Feat(#50): 챌린지 커스텀 레포지토리 인터페이스 추가

* Feat(#50): 챌린지 커스텀 레포지토리 구현체 추가

* Feat(#50): 챌린지 커스텀 레포지토리 상속받도록 추가

* Refactor(#50): dto단에서 예외처리하도록 변경

* Refactor(#50): 정적 팩토리 메서드 네이밍, 매개변수 변경

* Feat(#50): ChallengeListResDto 추가

* Feat(#50): ChallengeListResDto 추가

* Feat(#50): 조회, 상세조회, 수정, 삭제, 검색 기능 추가

* Feat(#50): 조회, 상세조회, 수정, 삭제, 검색 api 추가

* Feat(#50): ChallengeAccessDeniedException 추가

* Feat(#50): ChallengeNotFoundException 추가

* Refactor(#50): 메서드  추가

* Refactor(#50): 메서드 추가

* Refactor(#50): 커스텀 예외에서 메시지 처리하도록 변경

* Test(#50): 수정, 상태 변경 로직 테스트 추가

* Test(#50): ChallengeServiceTest 조회, 수정, 삭제, 검색 메서드 테스트 추가

* Test(#50): ChallengeServiceTest 조회, 수정, 삭제, 검색 api 테스트 및 레스트독스 적용

* Docs(#50): challenge.adoc 추가

* Docs(#50): index.adoc 추가

* Test(#50): ControllerTest ChallengeController.class 추가

* Feat(#50): Valid 어노테이션 추가

* Style(#50): 코즈 포맷팅 수정

* Refactor(#50): startDate, endDate @NotNull 적용

* Style(#50): 경로변수 카멜케이스로 변경

* Style(#50): 메서드 명 변경

* Style(#50): 매개변수명 변경

* Refactor(#50): 상세조회에 readOnly옵션 설정

* Feat(#50): cycle 필드 저장하도록 변경

* Feat(#50): 블록 엔티티에 챌린지 매핑 및 상태 수정 메서드 추가

* Feat(#50): CycleDetail value 추가

* Feat(#50): status 계산을 위한 ChallengeBlockStatusUtil 추가

* Feat(#50): 매일 자정에 챌린지 블록 상태를 업데이트 하기 위한 스케줄러 설정

* Feat(#50): 챌린지 참여 메서드 추가

* Feat(#50): 챌린지 참여 메서드 추가

* Test(#50): ChallengeBlockStatusUtilTest 추가

* Test(#50): 챌린지 참여 메서드 테스트 추가

* Feat(#50): findByType 추가

* Docs(#50): 챌린지 참여 문서화

* Style(#50): 불필요한 공백 라인 제거

* feat(#50): 블록 도메인에 타입 추가에 따른 테스트 코드 수정

* Refactor(#11 #18): 블록 시작 시간 속성 추가 (#75)

* Refactor(#11): 블록 반환 값 추가

* Refactor(#18): 블록 반환 값 추가로 인한 테스트 코드 수정

* Refactor(#11): 블록 시작 시간 속성 추가

* Test(#18): 블록 시작 시간 속성이 추가됨으로써 테스트 코드 수정

* Feat(#67 #62): 팀 대시보드 기능 구현, 테스트 코드 구현, 개인 대시보드 삭제 메시지, queryDSL 수정 (#68)

* Feat(#67): 팀 대시보드 도메인 구현

* Feat(#67): 팀 대시보드 저장 기능 구현

* Feat(#67): 팀 대시보드 수정 기능 구현

* Refactor(#62): 개인 대시보드 삭제 기능 메시지 변경

* Refactor(#62): 개인 대시보드 삭제 예외 처리 추가

* Refactor(#62): 개인 대시보드 queryDSL 수정

* Test(#62): 개인 대시보드 삭제 테스트 DisplayName 수정

* Feat(#67): 팀 대시보드 삭제 기능 구현

* Feat(#67): 팀 대시보드 전체, 상세 조회 기능 구현

* Refactor(#62): 개인 대시보드 정적 팩토리 메소드명 수정

* Feat(#67): 팀 대시보드 참여, 탈퇴 기능 구현

* Feat(#67): 팀 대시보드 초대 멤버 리스트 불러오는 기능 구현

* Test(#67): 팀 대시보드 컨트롤러 테스트 코드 구현

* Test(#67): 팀 대시보드 테스트 코드 구현

* Test(#67): 팀 대시보드 서비스 테스트 코드 구현

* Test(#67): 팀 대시보드 레포지토리 테스트 코드 구현

* Test(#62): 개인 대시보드 서비스 테스트 코드 수정

* Test(#67): 팀 대시보드 서비스 테스트 코드 수정

* Docs(#67): 팀 대시보드 Restdocs 정적 페이지 추가

* Refactor(#11 #18): 블록 반환 값 추가, 반환 값 추가로 인한 테스트 코드 수정 (#71)

* Refactor(#11): 블록 반환 값 추가

* Refactor(#18): 블록 반환 값 추가로 인한 테스트 코드 수정

* Feat(#50): 챌린지 전체 조회, 상세 조회, 삭제, 검색 기능 추가 (#64)

* Feat(#50): 수정 메서드, 상태 변경 메서드 추가

* Feat(#50): 멤버-챌린지 연관관계 설정

* Feat(#50): 챌린지 커스텀 레포지토리 인터페이스 추가

* Feat(#50): 챌린지 커스텀 레포지토리 구현체 추가

* Feat(#50): 챌린지 커스텀 레포지토리 상속받도록 추가

* Refactor(#50): dto단에서 예외처리하도록 변경

* Refactor(#50): 정적 팩토리 메서드 네이밍, 매개변수 변경

* Feat(#50): ChallengeListResDto 추가

* Feat(#50): ChallengeListResDto 추가

* Feat(#50): 조회, 상세조회, 수정, 삭제, 검색 기능 추가

* Feat(#50): 조회, 상세조회, 수정, 삭제, 검색 api 추가

* Feat(#50): ChallengeAccessDeniedException 추가

* Feat(#50): ChallengeNotFoundException 추가

* Refactor(#50): 메서드  추가

* Refactor(#50): 메서드 추가

* Refactor(#50): 커스텀 예외에서 메시지 처리하도록 변경

* Test(#50): 수정, 상태 변경 로직 테스트 추가

* Test(#50): ChallengeServiceTest 조회, 수정, 삭제, 검색 메서드 테스트 추가

* Test(#50): ChallengeServiceTest 조회, 수정, 삭제, 검색 api 테스트 및 레스트독스 적용

* Docs(#50): challenge.adoc 추가

* Docs(#50): index.adoc 추가

* Test(#50): ControllerTest ChallengeController.class 추가

* Feat(#50): Valid 어노테이션 추가

* Style(#50): 코즈 포맷팅 수정

* Refactor(#50): startDate, endDate @NotNull 적용

* Style(#50): 경로변수 카멜케이스로 변경

* Style(#50): 메서드 명 변경

* Style(#50): 매개변수명 변경

* Refactor(#50): 상세조회에 readOnly옵션 설정

* Feat(#50): cycle 필드 저장하도록 변경

* Feat(#50): 블록 엔티티에 챌린지 매핑 및 상태 수정 메서드 추가

* Feat(#50): CycleDetail value 추가

* Feat(#50): status 계산을 위한 ChallengeBlockStatusUtil 추가

* Feat(#50): 매일 자정에 챌린지 블록 상태를 업데이트 하기 위한 스케줄러 설정

* Feat(#50): 챌린지 참여 메서드 추가

* Feat(#50): 챌린지 참여 메서드 추가

* Test(#50): ChallengeBlockStatusUtilTest 추가

* Test(#50): 챌린지 참여 메서드 테스트 추가

* Feat(#50): findByType 추가

* Docs(#50): 챌린지 참여 문서화

* Style(#50): 불필요한 공백 라인 제거

* Test(#50): 블록 도메인에 타입 필드 추가에 따른 챌린지 컨트롤러 테스트 코드 수정 (#72)

* Feat(#50): 수정 메서드, 상태 변경 메서드 추가

* Feat(#50): 멤버-챌린지 연관관계 설정

* Feat(#50): 챌린지 커스텀 레포지토리 인터페이스 추가

* Feat(#50): 챌린지 커스텀 레포지토리 구현체 추가

* Feat(#50): 챌린지 커스텀 레포지토리 상속받도록 추가

* Refactor(#50): dto단에서 예외처리하도록 변경

* Refactor(#50): 정적 팩토리 메서드 네이밍, 매개변수 변경

* Feat(#50): ChallengeListResDto 추가

* Feat(#50): ChallengeListResDto 추가

* Feat(#50): 조회, 상세조회, 수정, 삭제, 검색 기능 추가

* Feat(#50): 조회, 상세조회, 수정, 삭제, 검색 api 추가

* Feat(#50): ChallengeAccessDeniedException 추가

* Feat(#50): ChallengeNotFoundException 추가

* Refactor(#50): 메서드  추가

* Refactor(#50): 메서드 추가

* Refactor(#50): 커스텀 예외에서 메시지 처리하도록 변경

* Test(#50): 수정, 상태 변경 로직 테스트 추가

* Test(#50): ChallengeServiceTest 조회, 수정, 삭제, 검색 메서드 테스트 추가

* Test(#50): ChallengeServiceTest 조회, 수정, 삭제, 검색 api 테스트 및 레스트독스 적용

* Docs(#50): challenge.adoc 추가

* Docs(#50): index.adoc 추가

* Test(#50): ControllerTest ChallengeController.class 추가

* Feat(#50): Valid 어노테이션 추가

* Style(#50): 코즈 포맷팅 수정

* Refactor(#50): startDate, endDate @NotNull 적용

* Style(#50): 경로변수 카멜케이스로 변경

* Style(#50): 메서드 명 변경

* Style(#50): 매개변수명 변경

* Refactor(#50): 상세조회에 readOnly옵션 설정

* Feat(#50): cycle 필드 저장하도록 변경

* Feat(#50): 블록 엔티티에 챌린지 매핑 및 상태 수정 메서드 추가

* Feat(#50): CycleDetail value 추가

* Feat(#50): status 계산을 위한 ChallengeBlockStatusUtil 추가

* Feat(#50): 매일 자정에 챌린지 블록 상태를 업데이트 하기 위한 스케줄러 설정

* Feat(#50): 챌린지 참여 메서드 추가

* Feat(#50): 챌린지 참여 메서드 추가

* Test(#50): ChallengeBlockStatusUtilTest 추가

* Test(#50): 챌린지 참여 메서드 테스트 추가

* Feat(#50): findByType 추가

* Docs(#50): 챌린지 참여 문서화

* Style(#50): 불필요한 공백 라인 제거

* feat(#50): 블록 도메인에 타입 추가에 따른 테스트 코드 수정

* Refactor(#11): 블록 시작 시간 속성 추가

* Fix: 컨플릭 수정

* Fix: 컨플릭 수정

---------

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

* Test (#76)

* Feat(#67): 팀 대시보드 도메인 구현

* Feat(#67): 팀 대시보드 저장 기능 구현

* Feat(#67): 팀 대시보드 수정 기능 구현

* Refactor(#62): 개인 대시보드 삭제 기능 메시지 변경

* Refactor(#62): 개인 대시보드 삭제 예외 처리 추가

* Refactor(#62): 개인 대시보드 queryDSL 수정

* Test(#62): 개인 대시보드 삭제 테스트 DisplayName 수정

* Feat(#67): 팀 대시보드 삭제 기능 구현

* Feat(#67): 팀 대시보드 전체, 상세 조회 기능 구현

* Refactor(#62): 개인 대시보드 정적 팩토리 메소드명 수정

* Feat(#67): 팀 대시보드 참여, 탈퇴 기능 구현

* Feat(#67): 팀 대시보드 초대 멤버 리스트 불러오는 기능 구현

* Test(#67): 팀 대시보드 컨트롤러 테스트 코드 구현

* Test(#67): 팀 대시보드 테스트 코드 구현

* Test(#67): 팀 대시보드 서비스 테스트 코드 구현

* Test(#67): 팀 대시보드 레포지토리 테스트 코드 구현

* Test(#62): 개인 대시보드 서비스 테스트 코드 수정

* Test(#67): 팀 대시보드 서비스 테스트 코드 수정

* Docs(#67): 팀 대시보드 Restdocs 정적 페이지 추가

* Feat(#70): 팀 문서, 팀 파일 CRUD 구현 (#73)

* Feat(#70): 팀 문서, 팀 파일 CRUD 구현 초안

* Test(#70): 팀 파일 repositoryTest 구현

* Test(#70): 팀 파일 Controller, Service, domain 구현

* Test(#70): 레스트독스 적용

* Feat(#70): 팀 문서 CRUD 완성

* Test(#70): DocumentRepository Test 구현

* Test(#70): DocumentRepositoryTest 구현

* Refactor(#70): Document 주석 삭제

* Test(#70): DocumentTest 구현

* Test(#70): DocumentServiceTest 구현

* Test(#70): DocumentControllerTest 구현

* Refactor(#70): document update 전용 dto 생성

* Refactor(#70): 컨밴션 수정

* Refactor(#70): 띄어쓰기 컨밴션 수정

* Refactor(#70): 띄어쓰기 컨밴션 수정

* Feature(#74): 알림 기능 구현 (#77)

* Feat(#74): 알림 엔티티 구현

* Feat(#74): 알림 레포지토리 구현

* Feat(#74): NotificationInfoResDto 구현

* Feat(#74): NotificationListResDto 구현

* Feat(#74): NotificationNotFoundException  구현

* Feat(#74): service 로직 구현

* Feat(#74): controller 로직 구현

* Feat(#74): spring-boot-starter-web-services 의존성 추가

* Feat(#74): 알림-멤버 매핑

* Feat(#74): 챌린지 참여 할 때 알림가도록 추가

* Feat(#74): 챌린지 생성될때마다 알림가도록 변경

* Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경

* Feat(#74):notificationService 추가

* Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경

* Refactor(#74):  emitter를 SseEmitterManager 에서 관리하도록 변경

* Style(#74): 불필요한 공백 라인 제거

* Style(#74): 줄바꿈 추가

* Style(#74): 마지막 공백 라인 추가

* Style(#74): SseEmitterManager 추가

* Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결

* Test(#74): NotificationServiceTest 구현

* Feat(#74): 파라미터 name 설정

* Feat(#74): JsonIgnore 어노테이션 삽입

* Feat(#74): isRead 필드 업데이트 메서드 로직 수정

* Test(#74): NotificationController 추가

* Feat(#74): JsonIgnore 어노테이션 삭제

* Fix(#74): Member 필드 삭제

* Test(#74): NotificationController 테스트 구현

* Test(#74): 문서 생성 경로 변경

* Test(#74): 알림 조회 문서 헤더 필드 생성

* Docs(#74): 알림 문서화

* Feat(#81): 챌린지 카테고리 추가 (#83)

* Feat(#74): 카테고리 검색 메서드 추가

* Test(#81):

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 클래스 추가

* Feat(#81): 챌린지 엔티티에 카테고리 필드 추가

* Feat(#81): 카테고리 필드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 필드 추가

* Test(#81): 챌린지 카테고리 검색 테스트

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Refactor: 컨벤션에 맞게 수정 (#80)

* Feat(#70): 팀 문서, 팀 파일 CRUD 구현 초안

* Test(#70): 팀 파일 repositoryTest 구현

* Test(#70): 팀 파일 Controller, Service, domain 구현

* Test(#70): 레스트독스 적용

* Feat(#70): 팀 문서 CRUD 완성

* Test(#70): DocumentRepository Test 구현

* Test(#70): DocumentRepositoryTest 구현

* Refactor(#70): Document 주석 삭제

* Test(#70): DocumentTest 구현

* Test(#70): DocumentServiceTest 구현

* Test(#70): DocumentControllerTest 구현

* Refactor(#70): document update 전용 dto 생성

* Refactor(#70): 컨밴션 수정

* Refactor(#70): 띄어쓰기 컨밴션 수정

* Refactor(#70): 띄어쓰기 컨밴션 수정

* Refactor: 컨벤션에 맞게 수정

* Refactor: 컨벤션에 맞게 수정

* Feat(#48): 마이페이지 챌린지, 팀 대시보드 조회 (#82)

* Feat(#48): 마이페이지 챌린지, 팀 대시보드 조회

* Refactor(#48): 컨벤션 리팩토링

* Refactor(#48): 컨벤션 리팩토링

* Refactor(#48): 어노테이션 순서 수정

* Feat(#48): 챌린지 이메일로 조회하는 로직 추가, 마이페이지에서 조회하기 로직 추가

* Refactor(#48): 줄바꿈 수정

* Test(#48): 마이페이지 팀 대시보드, 챌린지 조회 테스트코드, 문서 작업

* Feat(#62): 사용자의 개인 대시보드 카테고리 조회 기능 구현 (#84)

* Feat(#62): 사용자의 개인 대시보드 카테고리 조회 기능 구현

* Test(#62): 사용자의 개인 대시보드 카테고리 조회 테스트 코드 구현

* Feat(#86): 블록 순번 속성 추가, 순번 지정, 순번 변경 api 기능 구현, 테스트 코드 구현 (#87)

* Feat(#86): 블록 순번 속성 추가, 순번 지정, 순번 변경 api 기능 구현

* Test(#86): 블록 순번 속성 추가와 지정함으로써 테스트 코드 구현

* Docs(#86): restdocs 문서 추가

* Docs(#86): restdocs 문서 수정을 위한 테스트 코드 수정

* Refactor(#86): 블록의 대시보드 반환을 위한 dType 속성, 반환 값 추가

* Style: 끝 줄 추가

* Refactor(#88): 개인, 팀 대시보드 전체 조회 페이지네이션 제거 (#89)

* Feat(#62): 사용자의 개인 대시보드 카테고리 조회 기능 구현

* Test(#62): 사용자의 개인 대시보드 카테고리 조회 테스트 코드 구현

* Feature(#74): 알림 기능 구현 (#77)

* Feat(#74): 알림 엔티티 구현

* Feat(#74): 알림 레포지토리 구현

* Feat(#74): NotificationInfoResDto 구현

* Feat(#74): NotificationListResDto 구현

* Feat(#74): NotificationNotFoundException  구현

* Feat(#74): service 로직 구현

* Feat(#74): controller 로직 구현

* Feat(#74): spring-boot-starter-web-services 의존성 추가

* Feat(#74): 알림-멤버 매핑

* Feat(#74): 챌린지 참여 할 때 알림가도록 추가

* Feat(#74): 챌린지 생성될때마다 알림가도록 변경

* Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경

* Feat(#74):notificationService 추가

* Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경

* Refactor(#74):  emitter를 SseEmitterManager 에서 관리하도록 변경

* Style(#74): 불필요한 공백 라인 제거

* Style(#74): 줄바꿈 추가

* Style(#74): 마지막 공백 라인 추가

* Style(#74): SseEmitterManager 추가

* Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결

* Test(#74): NotificationServiceTest 구현

* Feat(#74): 파라미터 name 설정

* Feat(#74): JsonIgnore 어노테이션 삽입

* Feat(#74): isRead 필드 업데이트 메서드 로직 수정

* Test(#74): NotificationController 추가

* Feat(#74): JsonIgnore 어노테이션 삭제

* Fix(#74): Member 필드 삭제

* Test(#74): NotificationController 테스트 구현

* Test(#74): 문서 생성 경로 변경

* Test(#74): 알림 조회 문서 헤더 필드 생성

* Docs(#74): 알림 문서화

* Feat(#81): 챌린지 카테고리 추가 (#83)

* Feat(#74): 카테고리 검색 메서드 추가

* Test(#81):

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 클래스 추가

* Feat(#81): 챌린지 엔티티에 카테고리 필드 추가

* Feat(#81): 카테고리 필드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 필드 추가

* Test(#81): 챌린지 카테고리 검색 테스트

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Refactor: 컨벤션에 맞게 수정 (#80)

* Feat(#70): 팀 문서, 팀 파일 CRUD 구현 초안

* Test(#70): 팀 파일 repositoryTest 구현

* Test(#70): 팀 파일 Controller, Service, domain 구현

* Test(#70): 레스트독스 적용

* Feat(#70): 팀 문서 CRUD 완성

* Test(#70): DocumentRepository Test 구현

* Test(#70): DocumentRepositoryTest 구현

* Refactor(#70): Document 주석 삭제

* Test(#70): DocumentTest 구현

* Test(#70): DocumentServiceTest 구현

* Test(#70): DocumentControllerTest 구현

* Refactor(#70): document update 전용 dto 생성

* Refactor(#70): 컨밴션 수정

* Refactor(#70): 띄어쓰기 컨밴션 수정

* Refactor(#70): 띄어쓰기 컨밴션 수정

* Refactor: 컨벤션에 맞게 수정

* Refactor: 컨벤션에 맞게 수정

* Feat(#48): 마이페이지 챌린지, 팀 대시보드 조회 (#82)

* Feat(#48): 마이페이지 챌린지, 팀 대시보드 조회

* Refactor(#48): 컨벤션 리팩토링

* Refactor(#48): 컨벤션 리팩토링

* Refactor(#48): 어노테이션 순서 수정

* Feat(#48): 챌린지 이메일로 조회하는 로직 추가, 마이페이지에서 조회하기 로직 추가

* Refactor(#48): 줄바꿈 수정

* Test(#48): 마이페이지 팀 대시보드, 챌린지 조회 테스트코드, 문서 작업

* Refactor(#88): 개인, 팀 대시보드 전체 조회 페이지네이션 제거

---------

Co-authored-by: DongkyunKim <[email protected]>
Co-authored-by: choi inho <[email protected]>

* Fix(#92): Build시에 Q클래스 생성되지 않는 버그 (#93)

* Revert "Refactor(#88): 개인, 팀 대시보드 전체 조회 페이지네이션 제거 (#89)" (#94)

This reverts commit dc3dd78f1e0b9ba8ef4c1efccb8417b2fe512cfc.

* Refactor(#88): 개인, 팀 대시보드 전체 조회 페이지네이션 제거 (#95)

* Revert "Refactor(#88): 개인, 팀 대시보드 전체 조회 페이지네이션 제거 (#89)"

This reverts commit dc3dd78f1e0b9ba8ef4c1efccb8417b2fe512cfc.

* Refactor(#88): 개인, 팀 대시보드 전체 조회 페이지네이션 제거

* �Docs(#90): api 명세서에 enum 항목 설명 추가 (#91)

* Feat(#74): 카테고리 검색 메서드 추가

* Test(#81):

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 클래스 추가

* Feat(#81): 챌린지 엔티티에 카테고리 필드 추가

* Feat(#81): 카테고리 필드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 필드 추가

* Test(#81): 챌린지 카테고리 검색 테스트

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Docs(#90): enum 항목 설명 추가

* Refactor(#18): 테스트 코드 페이지, 사이즈 파라미터 추가 (#98)

* Refactor(#74): 팀 대시보드 초대 시 알림 발송 API 추가 (#99)

* Feat(#74): 알림 엔티티 구현

* Feat(#74): 알림 레포지토리 구현

* Feat(#74): NotificationInfoResDto 구현

* Feat(#74): NotificationListResDto 구현

* Feat(#74): NotificationNotFoundException  구현

* Feat(#74): service 로직 구현

* Feat(#74): controller 로직 구현

* Feat(#74): spring-boot-starter-web-services 의존성 추가

* Feat(#74): 알림-멤버 매핑

* Feat(#74): 챌린지 참여 할 때 알림가도록 추가

* Feat(#74): 챌린지 생성될때마다 알림가도록 변경

* Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경

* Feat(#74):notificationService 추가

* Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경

* Refactor(#74):  emitter를 SseEmitterManager 에서 관리하도록 변경

* Style(#74): 불필요한 공백 라인 제거

* Style(#74): 줄바꿈 추가

* Style(#74): 마지막 공백 라인 추가

* Style(#74): SseEmitterManager 추가

* Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결

* Test(#74): NotificationServiceTest 구현

* Feat(#74): 파라미터 name 설정

* Feat(#74): JsonIgnore 어노테이션 삽입

* Feat(#74): isRead 필드 업데이트 메서드 로직 수정

* Test(#74): NotificationController 추가

* Feat(#74): JsonIgnore 어노테이션 삭제

* Fix(#74): Member 필드 삭제

* Test(#74): NotificationController 테스트 구현

* Test(#74): 문서 생성 경로 변경

* Test(#74): 알림 조회 문서 헤더 필드 생성

* Docs(#74): 알림 문서화

* Refactor(#74): 어노테이션 변경

* Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현

* Refactor(#74): 매직 넘버 상수화

* Test(#74): notificationService 필드 추가

* Feat(#74): 팀원 초대 api 추가

* Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가

* Test(#74): 팀원 초대 테스트

* Refactor(#74): 팀 대시보드 생성 및 수정 시 팀 초대 알림 가도록 변경 (#102)

* Feat(#74): 알림 엔티티 구현

* Feat(#74): 알림 레포지토리 구현

* Feat(#74): NotificationInfoResDto 구현

* Feat(#74): NotificationListResDto 구현

* Feat(#74): NotificationNotFoundException  구현

* Feat(#74): service 로직 구현

* Feat(#74): controller 로직 구현

* Feat(#74): spring-boot-starter-web-services 의존성 추가

* Feat(#74): 알림-멤버 매핑

* Feat(#74): 챌린지 참여 할 때 알림가도록 추가

* Feat(#74): 챌린지 생성될때마다 알림가도록 변경

* Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경

* Feat(#74):notificationService 추가

* Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경

* Refactor(#74):  emitter를 SseEmitterManager 에서 관리하도록 변경

* Style(#74): 불필요한 공백 라인 제거

* Style(#74): 줄바꿈 추가

* Style(#74): 마지막 공백 라인 추가

* Style(#74): SseEmitterManager 추가

* Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결

* Test(#74): NotificationServiceTest 구현

* Feat(#74): 파라미터 name 설정

* Feat(#74): JsonIgnore 어노테이션 삽입

* Feat(#74): isRead 필드 업데이트 메서드 로직 수정

* Test(#74): NotificationController 추가

* Feat(#74): JsonIgnore 어노테이션 삭제

* Fix(#74): Member 필드 삭제

* Test(#74): NotificationController 테스트 구현

* Test(#74): 문서 생성 경로 변경

* Test(#74): 알림 조회 문서 헤더 필드 생성

* Docs(#74): 알림 문서화

* Refactor(#74): 어노테이션 변경

* Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현

* Refactor(#74): 매직 넘버 상수화

* Test(#74): notificationService 필드 추가

* Feat(#74): 팀원 초대 api 추가

* Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가

* Test(#74): 팀원 초대 테스트

* Refactor(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경

* Test(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경

* Fix(#74): 충돌 수정

* Feat(#100): 삭제된 블록 조회, 영구 삭제 기능, 테스트 코드 구현 (#101)

* Refactor(#18): 테스트 코드 페이지, 사이즈 파라미터 추가

* Feat(#100): 삭제된 블록 조회, 영구 삭제 기능 구현

* Test(#100): 삭제된 블록 조회, 영구 삭제 테스트 코드 구현

* Test(#100): 영구 삭제 테스트 코드 수정

* Docs(#100): 삭제된 블록, 영구 삭제 문서화

* Refactor(#104): Response에 챌린지 id 추가 (#105)

* Feat(#74): 카테고리 검색 메서드 추가

* Test(#81):

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 클래스 추가

* Feat(#81): 챌린지 엔티티에 카테고리 필드 추가

* Feat(#81): 카테고리 필드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 필드 추가

* Test(#81): 챌린지 카테고리 검색 테스트

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Docs(#90): enum 항목 설명 추가

* Refactor(#97): 매직 넘버 상수로 변환

* Refactor(#104): responseDto에 challengeId 추가

* Refactor: authServiceFactory로 id토큰 반환하는 로직 수정, JsonNode 반환 방법 DTO 사용 (#103)

* Refactor: authServiceFactory로 id토큰 반환하는 로직 수정, JsonNode 반환 방법 DTO 사용 방법으로 변경

* Refactor: authServices로 매개변수 이름 수정

* Docs: 내 정보 수정 api 문서 작업 (#108)

* Feat(#48): 마이페이지 챌린지, 팀 대시보드 조회

* Refactor(#48): 컨벤션 리팩토링

* Refactor(#48): 컨벤션 리팩토링

* Refactor(#48): 어노테이션 순서 수정

* Feat(#48): 챌린지 이메일로 조회하는 로직 추가, 마이페이지에서 조회하기 로직 추가

* Refactor(#48): 줄바꿈 수정

* Test(#48): 마이페이지 팀 대시보드, 챌린지 조회 테스트코드, 문서 작업

* Test: mypage 수정 테스트 코드 작성(아직 미완성)

* Docs: 내 정보 수정 api 문서 작업

* Feat(#106): 팀 문서 전체적인 작업 (#107)

* Feat(#106): 팀 문서 전체적인 작업

* Feat(#106): 팀 문서 상세 조회 로직 구현

* Test(#106): 팀 문서 컨트롤러 작성

* Test(#106): 팀 문서 컨트롤러 수정 중..

* Refactor(#106): DTO 정적 팩토링 메서드 이름 변경

* Docs(#106): 팀 문서 관전 api docs 파일로 구현

* Refactor(#106): 카테고리 dto 풀어서 전달

* Refactor(#112): 사용자 사진 반환 값 추가 (#113)

* Refactor(#112): 사용자 사진 반환 값 추가

* Refactor(#112): 사용자 사진 반환 값 추가로 인한 테스트 코드 수정

* Refactor(#110): 대시보드 접근 권한 수정, 카테고리 중복 수정 (#111)

* Refactor(#110): 대시보드 접근 권한 수정, 카테고리 중복 수정

* Test(#110): 카테고리 중복 수정으로 인한 테스트 코드 수정

* Refactor(#106): 카테고리로 팀문서 조회하는 로직 수정 (#109)

* Feat(#48): 마이페이지 챌린지, 팀 대시보드 조회

* Refactor(#48): 컨벤션 리팩토링

* Refactor(#48): 컨벤션 리팩토링

* Refactor(#48): 어노테이션 순서 수정

* Feat(#48): 챌린지 이메일로 조회하는 로직 추가, 마이페이지에서 조회하기 로직 추가

* Refactor(#48): 줄바꿈 수정

* Test(#48): 마이페이지 팀 대시보드, 챌린지 조회 테스트코드, 문서 작업

* Test: mypage 수정 테스트 코드 작성(아직 미완성)

* Docs: 내 정보 수정 api 문서 작업

* Test(#106): 팀 문서 post 테스트코드 수정

* Refactor(#106): 카테고리로 팀문서 조회하는 로직 수정

* Docs: teamDocument api 문서 수정

* Test(#106): 팀 문서 post 테스트코드 수정 (#114)

* Feat(#48): 마이페이지 챌린지, 팀 대시보드 조회

* Refactor(#48): 컨벤션 리팩토링

* Refactor(#48): 컨벤션 리팩토링

* Refactor(#48): 어노테이션 순서 수정

* Feat(#48): 챌린지 이메일로 조회하는 로직 추가, 마이페이지에서 조회하기 로직 추가

* Refactor(#48): 줄바꿈 수정

* Test(#48): 마이페이지 팀 대시보드, 챌린지 조회 테스트코드, 문서 작업

* Test: mypage 수정 테스트 코드 작성(아직 미완성)

* Docs: 내 정보 수정 api 문서 작업

* Test(#106): 팀 문서 post 테스트코드 수정

* Refactor(#106): 카테고리로 팀문서 조회하는 로직 수정

* Docs: teamDocument api 문서 수정

* Test(#106): 팀 문서 post 테스트코드 수정

* Refactor: mypage 챌랜지, 팀 대시보드 조회 페이지네이션 수정 (#115)

* Feat(#48): 마이페이지 챌린지, 팀 대시보드 조회

* Refactor(#48): 컨벤션 리팩토링

* Refactor(#48): 컨벤션 리팩토링

* Refactor(#48): 어노테이션 순서 수정

* Feat(#48): 챌린지 이메일로 조회하는 로직 추가, 마이페이지에서 조회하기 로직 추가

* Refactor(#48): 줄바꿈 수정

* Test(#48): 마이페이지 팀 대시보드, 챌린지 조회 테스트코드, 문서 작업

* Test: mypage 수정 테스트 코드 작성(아직 미완성)

* Docs: 내 정보 수정 api 문서 작업

* Test(#106): 팀 문서 post 테스트코드 수정

* Refactor(#106): 카테고리로 팀문서 조회하는 로직 수정

* Docs: teamDocument api 문서 수정

* Test(#106): 팀 문서 post 테스트코드 수정

* Refactor: mypage 챌랜지, 팀 대시보드 조회 페이지네이션 수정

* Docs: 팀 대시보드와 챌린지 정보 조회 API 쿼리 정보 추가

* Fix(#110): 404에러 발생 수정 (#118)

* Refactor(#110): 대시보드 접근 권한 수정, 카테고리 중복 수정

* Test(#110): 카테고리 중복 수정으로 인한 테스트 코드 수정

* Fix(#110): 404에러 발생 수정

* Fix(#110): 404에러 발생 수정 (#119)

* Refactor(#110): 대시보드 접근 권한 수정, 카테고리 중복 수정

* Test(#110): 카테고리 중복 수정으로 인한 테스트 코드 수정

* Fix(#110): 404에러 발생 수정

* Fix(#110): 404에러 발생 수정

* Refactor: 문서 삭제

* Refactor(#10): 팀 대시보드 팀원에 대시보드 생성자 추가 (#125)

* Refactor(#110): 대시보드 접근 권한 수정, 카테고리 중복 수정

* Test(#110): 카테고리 중복 수정으로 인한 테스트 코드 수정

* Fix(#110): 404에러 발생 수정

* Fix(#110): 404에러 발생 수정

* Refactor(#10): 팀 대시보드 팀원에 대시보드 생성자 추가

* Test(#10): 팀 대시보드 팀원에 대시보드 생성자 추가로 인한 테스트 코드 수정 (#126)

* Refactor(#110): 대시보드 접근 권한 수정, 카테고리 중복 수정

* Test(#110): 카테고리 중복 수정으로 인한 테스트 코드 수정

* Fix(#110): 404에러 발생 수정

* Fix(#110): 404에러 발생 수정

* Refactor(#10): 팀 대시보드 팀원에 대시보드 생성자 추가

* Test(#10): 팀 대시보드 팀원에 대시보드 생성자 추가로 인한 테스트 코드 수정

* Refacotr(#127): 팀원이 팀 초대 수락하면 팀장한테 알람가도록 구현 및 팀 초대 api 로직 수정 (#128)

* Feat(#74): 알림 엔티티 구현

* Feat(#74): 알림 레포지토리 구현

* Feat(#74): NotificationInfoResDto 구현

* Feat(#74): NotificationListResDto 구현

* Feat(#74): NotificationNotFoundException  구현

* Feat(#74): service 로직 구현

* Feat(#74): controller 로직 구현

* Feat(#74): spring-boot-starter-web-services 의존성 추가

* Feat(#74): 알림-멤버 매핑

* Feat(#74): 챌린지 참여 할 때 알림가도록 추가

* Feat(#74): 챌린지 생성될때마다 알림가도록 변경

* Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경

* Feat(#74):notificationService 추가

* Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경

* Refactor(#74):  emitter를 SseEmitterManager 에서 관리하도록 변경

* Style(#74): 불필요한 공백 라인 제거

* Style(#74): 줄바꿈 추가

* Style(#74): 마지막 공백 라인 추가

* Style(#74): SseEmitterManager 추가

* Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결

* Test(#74): NotificationServiceTest 구현

* Feat(#74): 파라미터 name 설정

* Feat(#74): JsonIgnore 어노테이션 삽입

* Feat(#74): isRead 필드 업데이트 메서드 로직 수정

* Test(#74): NotificationController 추가

* Feat(#74): JsonIgnore 어노테이션 삭제

* Fix(#74): Member 필드 삭제

* Test(#74): NotificationController 테스트 구현

* Test(#74): 문서 생성 경로 변경

* Test(#74): 알림 조회 문서 헤더 필드 생성

* Docs(#74): 알림 문서화

* Refactor(#74): 어노테이션 변경

* Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현

* Refactor(#74): 매직 넘버 상수화

* Test(#74): notificationService 필드 추가

* Feat(#74): 팀원 초대 api 추가

* Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가

* Test(#74): 팀원 초대 테스트

* Refactor(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경

* Test(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경

* Fix(#74): 충돌 수정

* Refactor(#74): 메서드 분리

* Feat(): 매직 넘버 상수화

* Refactor(#127): 팀원이 팀 초대 수락하면 팀장한테 알람가도록 구현 및 팀 초대 api 로직 수정

* Refacor: 알림 연결 성공시 더미데이터 반환 (#129)

* Feat(#74): 알림 엔티티 구현

* Feat(#74): 알림 레포지토리 구현

* Feat(#74): NotificationInfoResDto 구현

* Feat(#74): NotificationListResDto 구현

* Feat(#74): NotificationNotFoundException  구현

* Feat(#74): service 로직 구현

* Feat(#74): controller 로직 구현

* Feat(#74): spring-boot-starter-web-services 의존성 추가

* Feat(#74): 알림-멤버 매핑

* Feat(#74): 챌린지 참여 할 때 알림가도록 추가

* Feat(#74): 챌린지 생성될때마다 알림가도록 변경

* Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경

* Feat(#74):notificationService 추가

* Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경

* Refactor(#74):  emitter를 SseEmitterManager 에서 관리하도록 변경

* Style(#74): 불필요한 공백 라인 제거

* Style(#74): 줄바꿈 추가

* Style(#74): 마지막 공백 라인 추가

* Style(#74): SseEmitterManager 추가

* Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결

* Test(#74): NotificationServiceTest 구현

* Feat(#74): 파라미터 name 설정

* Feat(#74): JsonIgnore 어노테이션 삽입

* Feat(#74): isRead 필드 업데이트 메서드 로직 수정

* Test(#74): NotificationController 추가

* Feat(#74): JsonIgnore 어노테이션 삭제

* Fix(#74): Member 필드 삭제

* Test(#74): NotificationController 테스트 구현

* Test(#74): 문서 생성 경로 변경

* Test(#74): 알림 조회 문서 헤더 필드 생성

* Docs(#74): 알림 문서화

* Refactor(#74): 어노테이션 변경

* Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현

* Refactor(#74): 매직 넘버 상수화

* Test(#74): notificationService 필드 추가

* Feat(#74): 팀원 초대 api 추가

* Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가

* Test(#74): 팀원 초대 테스트

* Refactor(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경

* Test(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경

* Fix(#74): 충돌 수정

* Refactor(#74): 메서드 분리

* Feat(): 매직 넘버 상수화

* Refactor(#127): 팀원이 팀 초대 수락하면 팀장한테 알람가도록 구현 및 팀 초대 api 로직 수정

* Refacor: 알림 연결 성공시 더미데이터 반환

* Refactor:  알림 이름 안보내도록 수정 (#130)

* Feat(#74): 알림 엔티티 구현

* Feat(#74): 알림 레포지토리 구현

* Feat(#74): NotificationInfoResDto 구현

* Feat(#74): NotificationListResDto 구현

* Feat(#74): NotificationNotFoundException  구현

* Feat(#74): service 로직 구현

* Feat(#74): controller 로직 구현

* Feat(#74): spring-boot-starter-web-services 의존성 추가

* Feat(#74): 알림-멤버 매핑

* Feat(#74): 챌린지 참여 할 때 알림가도록 추가

* Feat(#74): 챌린지 생성될때마다 알림가도록 변경

* Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경

* Feat(#74):notificationService 추가

* Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경

* Refactor(#74):  emitter를 SseEmitterManager 에서 관리하도록 변경

* Style(#74): 불필요한 공백 라인 제거

* Style(#74): 줄바꿈 추가

* Style(#74): 마지막 공백 라인 추가

* Style(#74): SseEmitterManager 추가

* Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결

* Test(#74): NotificationServiceTest 구현

* Feat(#74): 파라미터 name 설정

* Feat(#74): JsonIgnore 어노테이션 삽입

* Feat(#74): isRead 필드 업데이트 메서드 로직 수정

* Test(#74): NotificationController 추가

* Feat(#74): JsonIgnore 어노테이션 삭제

* Fix(#74): Member 필드 삭제

* Test(#74): NotificationController 테스트 구현

* Test(#74): 문서 생성 경로 변경

* Test(#74): 알림 조회 문서 헤더 필드 생성

* Docs(#74): 알림 문서화

* Refactor(#74): 어노테이션 변경

* Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현

* Refactor(#74): 매직 넘버 상수화

* Test(#74): notificationService 필드 추가

* Feat(#74): 팀원 초대 api 추가

* Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가

* Test(#74): 팀원 초대 테스트

* Refactor(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경

* Test(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경

* Fix(#74): 충돌 수정

* Refactor(#74): 메서드 분리

* Feat(): 매직 넘버 상수화

* Refactor(#127): 팀원이 팀 초대 수락하면 팀장한테 알람가도록 구현 및 팀 초대 api 로직 수정

* Refacor: 알림 연결 성공시 더미데이터 반환

* Refacor: 알림 이름 안보내도록 수정

* Refacor: 알림 이름 안보내도록 수정

* Refacor: 알림 이름 안보내도록 수정

* Refacor(#131): 알림 전체 조회 시 읽은 여부 true로 변경 (#132)

* Feat(#74): 알림 엔티티 구현

* Feat(#74): 알림 레포지토리 구현

* Feat(#74): NotificationInfoResDto 구현

* Feat(#74): NotificationListResDto 구현

* Feat(#74): NotificationNotFoundException  구현

* Feat(#74): service 로직 구현

* Feat(#74): controller 로직 구현

* Feat(#74): spring-boot-starter-web-services 의존성 추가

* Feat(#74): 알림-멤버 매핑

* Feat(#74): 챌린지 참여 할 때 알림가도록 추가

* Feat(#74): 챌린지 생성될때마다 알림가도록 변경

* Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경

* Feat(#74):notificationService 추가

* Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경

* Refactor(#74):  emitter를 SseEmitterManager 에서 관리하도록 변경

* Style(#74): 불필요한 공백 라인 제거

* Style(#74): 줄바꿈 추가

* Style(#74): 마지막 공백 라인 추가

* Style(#74): SseEmitterManager 추가

* Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결

* Test(#74): NotificationServiceTest 구현

* Feat(#74): 파라미터 name 설정

* Feat(#74): JsonIgnore 어노테이션 삽입

* Feat(#74): isRead 필드 업데이트 메서드 로직 수정

* Test(#74): NotificationController 추가

* Feat(#74): JsonIgnore 어노테이션 삭제

* Fix(#74): Member 필드 삭제

* Test(#74): NotificationController 테스트 구현

* Test(#74): 문서 생성 경로 변경

* Test(#74): 알림 조회 문서 헤더 필드 생성

* Docs(#74): 알림 문서화

* Refactor(#74): 어노테이션 변경

* Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현

* Refactor(#74): 매직 넘버 상수화

* Test(#74): notificationService 필드 추가

* Feat(#74): 팀원 초대 api 추가

* Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가

* Test(#74): 팀원 초대 테스트

* Refactor(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경

* Test(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경

* Fix(#74): 충돌 수정

* Refactor(#74): 메서드 분리

* Feat(): 매직 넘버 상수화

* Refactor(#127): 팀원이 팀 초대 수락하면 팀장한테 알람가도록 구현 및 팀 초대 api 로직 수정

* Refacor: 알림 연결 성공시 더미데이터 반환

* Refacor: 알림 이름 안보내도록 수정

* Refacor: 알림 이름 안보내도록 수정

* Refacor: 알림 이름 안보내도록 수정

* Refacor(#131): 알림 전체 조회 시 읽은 여부 true로 변경

* Test(#131): 알림 로직 변경에 따른 테스트 코드 수정 (#133)

* Feat(#74): 알림 엔티티 구현

* Feat(#74): 알림 레포지토리 구현

* Feat(#74): NotificationInfoResDto 구현

* Feat(#74): NotificationListResDto 구현

* Feat(#74): NotificationNotFoundException  구현

* Feat(#74): service 로직 구현

* Feat(#74): controller 로직 구현

* Feat(#74): spring-boot-starter-web-services 의존성 추가

* Feat(#74): 알림-멤버 매핑

* Feat(#74): 챌린지 참여 할 때 알림가도록 추가

* Feat(#74): 챌린지 생성될때마다 알림가도록 변경

* Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경

* Feat(#74):notificationService 추가

* Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경

* Refactor(#74):  emitter를 SseEmitterManager 에서 관리하도록 변경

* Style(#74): 불필요한 공백 라인 제거

* Style(#74): 줄바꿈 추가

* Style(#74): 마지막 공백 라인 추가

* Style(#74): SseEmitterManager 추가

* Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결

* Test(#74): NotificationServiceTest 구현

* Feat(#74): 파라미터 name 설정

* Feat(#74): JsonIgnore 어노테이션 삽입

* Feat(#74): isRead 필드 업데이트 메서드 로직 수정

* Test(#74): NotificationController 추가

* Feat(#74): JsonIgnore 어노테이션 삭제

* Fix(#74): Member 필드 삭제

* Test(#74): NotificationController 테스트 구현

* Test(#74): 문서 생성 경로 변경

* Test(#74): 알림 조회 문서 헤더 필드 생성

* Docs(#74): 알림 문서화

* Refactor(#74): 어노테이션 변경

* Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현

* Refactor(#74): 매직 넘버 상수화

* Test(#74): notificationService 필드 추가

* Feat(#74): 팀원 초대 api 추가

* Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가

* Test(#74): 팀원 초대 테스트

* Refactor(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경

* Test(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경

* Fix(#74): 충돌 수정

* Refactor(#74): 메서드 분리

* Feat(): 매직 넘버 상수화

* Refactor(#127): 팀원이 팀 초대 수락하면 팀장한테 알람가도록 구현 및 팀 초대 api 로직 수정

* Refacor: 알림 연결 성공시 더미데이터 반환

* Refacor: 알림 이름 안보내도록 수정

* Refacor: 알림 이름 안보내도록 수정

* Refacor: 알림 이름 안보내도록 수정

* Refacor(#131): 알림 전체 조회 시 읽은 여부 true로 변경

* Test(#131): 로직 변경에 따른 테스트 코드 수정

* Refactor(#131): 코드 리펙토링

* Refactor(#97): 챌린지 코드 리펙토링 (#135)

* Feat(#74): 카테고리 검색 메서드 추가

* Test(#81):

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 클래스 추가

* Feat(#81): 챌린지 엔티티에 카테고리 필드 추가

* Feat(#81): 카테고리 필드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 필드 추가

* Test(#81): 챌린지 카테고리 검색 테스트

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Docs(#90): enum 항목 설명 추가

* Refactor(#97): 매직 넘버 상수로 변환

* Refactor(#104): responseDto에 challengeId 추가

* Refactor(#97): 메서드 분리

* Refacor(#97): 싱글턴 패턴으로 변경

* Test(#97): 싱글턴 패턴으로 변경

* Refacor(#97): cycle 검증을 도메인 계층에서 하도록 변경

* Test(#97): 테스트 코드 오류 수정

* Refactor(#138): 챌린지 생성 시 생성 날짜 자동 주입 및 블록 이름 추가

* Docs(#139): 카테고리 별 검색 문서에 추가 및 쿼리 파라미터 추가 (#140)

* Feat(#74): 카테고리 검색 메서드 추가

* Test(#81):

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 클래스 추가

* Feat(#81): 챌린지 엔티티에 카테고리 필드 추가

* Feat(#81): 카테고리 필드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 필드 추가

* Test(#81): 챌린지 카테고리 검색 테스트

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Docs(#90): enum 항목 설명 추가

* Refactor(#97): 매직 넘버 상수로 변환

* Refactor(#104): responseDto에 challengeId 추가

* Refactor(#97): 메서드 분리

* Refacor(#97): 싱글턴 패턴으로 변경

* Test(#97): 싱글턴 패턴으로 변경

* Refacor(#97): cycle 검증을 도메인 계층에서 하도록 변경

* Test(#97): 테스트 코드 오류 수정

* Refactor(#138): 챌린지 생성 시 생성 날짜 자동 주입 및 블록 이름 추가

* Test(#139): 쿼리 파라미터 추가

* Docs(#139): 쿼리 파라미터 추가 및 카테거리 검색 API 추가

* Feature(#141): 이미지 업로드 기능 추가 (#142)

* Feat(#74): 카테고리 검색 메서드 추가

* Test(#81):

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 클래스 추가

* Feat(#81): 챌린지 엔티티에 카테고리 필드 추가

* Feat(#81): 카테고리 필드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 필드 추가

* Test(#81): 챌린지 카테고리 검색 테스트

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Docs(#90): enum 항목 설명 추가

* Refactor(#97): 매직 넘버 상수로 변환

* Refactor(#104): responseDto에 challengeId 추가

* Refactor(#97): 메서드 분리

* Refacor(#97): 싱글턴 패턴으로 변경

* Test(#97): 싱글턴 패턴으로 변경

* Refacor(#97): cycle 검증을 도메인 계층에서 하도록 변경

* Test(#97): 테스트 코드 오류 수정

* Refactor(#138): 챌린지 생성 시 생성 날짜 자동 주입 및 블록 이름 추가

* Test(#139): 쿼리 파라미터 추가

* Docs(#139): 쿼리 파라미터 추가 및 카테거리 검색 API 추가

* Feat(#141): 이미지 업로드 기능 추가

* Feat(#141): 의존성 추가

* Test(#141): 이미지 업로드 테스트

* Docs(#141): 문서 업데이트

* Test(#141): 이미지 업로드 테스트

* �Refcator(#141): url 고유하도록 변경 (#143)

* Feat(#74): 카테고리 검색 메서드 추가

* Test(#81):

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 클래스 추가

* Feat(#81): 챌린지 엔티티에 카테고리 필드 추가

* Feat(#81): 카테고리 필드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 필드 추가

* Test(#81): 챌린지 카테고리 검색 테스트

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Docs(#90): enum 항목 설명 추가

* Refactor(#97): 매직 넘버 상수로 변환

* Refactor(#104): responseDto에 challengeId 추가

* Refactor(#97): 메서드 분리

* Refacor(#97): 싱글턴 패턴으로 변경

* Test(#97): 싱글턴 패턴으로 변경

* Refacor(#97): cycle 검증을 도메인 계층에서 하도록 변경

* Test(#97): 테스트 코드 오류 수정

* Refactor(#138): 챌린지 생성 시 생성 날짜 자동 주입 및 블록 이름 추가

* Test(#139): 쿼리 파라미터 추가

* Docs(#139): 쿼리 파라미터 추가 및 카테거리 검색 API 추가

* Feat(#141): 이미지 업로드 기능 추가

* Feat(#141): 의존성 추가

* Test(#141): 이미지 업로드 테스트

* Docs(#141): 문서 업데이트

* Test(#141): 이미지 업로드 테스트

* Refactor(#141): url 고유하도록 변경

* Refactor(#141): url 고유하도록 변경

* Refactor(#141): url 고유하도록 변경

* Refactor(#144): 알림 전체조회 페이지네이션 삭제 (#145)

* Feat(#74): 알림 엔티티 구현

* Feat(#74): 알림 레포지토리 구현

* Feat(#74): NotificationInfoResDto 구현

* Feat(#74): NotificationListResDto 구현

* Feat(#74): NotificationNotFoundException  구현

* Feat(#74): service 로직 구현

* Feat(#74): controller 로직 구현

* Feat(#74): spring-boot-starter-web-services 의존성 추가

* Feat(#74): 알림-멤버 매핑

* Feat(#74): 챌린지 참여 할 때 알림가도록 추가

* Feat(#74): 챌린지 생성될때마다 알림가도록 변경

* Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경

* Feat(#74):notificationService 추가

* Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경

* Refactor(#74):  emitter를 SseEmitterManager 에서 관리하도록 변경

* Style(#74): 불필요한 공백 라인 제거

* Style(#74): 줄바꿈 추가

* Style(#74): 마지막 공백 라인 추가

* Style(#74): SseEmitterManager 추가

* Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결

* Test(#74): NotificationServiceTest 구현

* Feat(#74): 파라미터 name 설정

* Feat(#74): JsonIgnore 어노테이션 삽입

* Feat(#74): isRead 필드 업데이트 메서드 로직 수정

* Test(#74): NotificationController 추가

* Feat(#74): JsonIgnore 어노테이션 삭제

* Fix(#74): Member 필드 삭제

* Test(#74): NotificationController 테스트 구현

* Test(#74): 문서 생성 경로 변경

* Test(#74): 알림 조회 문서 헤더 필드 생성

* Docs(#74): 알림 문서화

* Refactor(#74): 어노테이션 변경

* Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현

* Refactor(#74): 매직 넘버 상수화

* Test(#74): notificationService 필드 추가

* Feat(#74): 팀원 초대 api 추가

* Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가

* Test(#74): 팀원 초대 테스트

* Refactor(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경

* Test(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경

* Fix(#74): 충돌 수정

* Refactor(#74): 메서드 분리

* Feat(): 매직 넘버 상수화

* Refactor(#127): 팀원이 팀 초대 수락하면 팀장한테 알람가도록 구현 및 팀 초대 api 로직 수정

* Refacor: 알림 연결 성공시 더미데이터 반환

* Refacor: 알림 이름 안보내도록 수정

* Refacor: 알림 이름 안보내도록 수정

* Refacor: 알림 이름 안보내도록 수정

* Refacor(#131): 알림 전체 조회 시 읽은 여부 true로 변경

* Test(#131): 로직 변경에 따른 테스트 코드 수정

* Refactor(#131): 코드 리펙토링

* Refactor(#144): 알림 전체조회 페이지네이션 삭제

* Feat(#146): 모든 알림 읽음으로 표시하는 api 추가 (#147)

* Feat(#74): 알림 엔티티 구현

* Feat(#74): 알림 레포지토리 구현

* Feat(#74): NotificationInfoResDto 구현

* Feat(#74): NotificationListResDto 구현

* Feat(#74): NotificationNotFoundException  구현

* Feat(#74): service 로직 구현

* Feat(#74): controller 로직 구현

* Feat(#74): spring-boot-starter-web-services 의존성 추가

* Feat(#74): 알림-멤버 매핑

* Feat(#74): 챌린지 참여 할 때 알림가도록 추가

* Feat(#74): 챌린지 생성될때마다 알림가도록 변경

* Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경

* Feat(#74):notificationService 추가

* Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경

* Refactor(#74):  emitter를 SseEmitterManager 에서 관리하도록 변경

* Style(#74): 불필요한 공백 라인 제거

* Style(#74): 줄바꿈 추가

* Style(#74): 마지막 공백 라인 추가

* Style(#74): SseEmitterManager 추가

* Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결

* Test(#74): NotificationServiceTest 구현

* Feat(#74): 파라미터 name 설정

* Feat(#74): JsonIgnore 어노테이션 삽입

* Feat(#74): isRead 필드 업데이트 메서드 로직 수정

* Test(#74): NotificationController 추가

* Feat(#74): JsonIgnore 어노테이션 삭제

* Fix(#74): Member 필드 삭제

* Test(#74): NotificationController 테스트 구현

* Test(#74): 문서 생성 경로 변경

* Test(#74): 알림 조회 문서 헤더 필드 생성

* Docs(#74): 알림 문서화

* Refactor(#74): 어노테이션 변경

* Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현

* Refactor(#74): 매직 넘버 상수화

* Test(#74): notificationService 필드 추가

* Feat(#74): 팀원 초대 api 추가

* Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가

* Test(#74): 팀원 초대 테스트

* Refactor(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경

* Test(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경

* Fix(#74): 충돌 수정

* Refactor(#74): 메서드 분리

* Feat(): 매직 넘버 상수화

* Refactor(#127): 팀원이 팀 초대 수락하면 팀장한테 알람가도록 구현 및 팀 초대 api 로직 수정

* Refacor: 알림 연결 성공시 더미데이터 반환

* Refacor: 알림 이름 안보내도록 수정

* Refacor: 알림 이름 안보내도록 수정

* Refacor: 알림 이름 안보내도록 수정

* Refacor(#131): 알림 전체 조회 시 읽은 여부 true로 변경

* Test(#131): 로직 변경에 따른 테스트 코드 수정

* Refactor(#131): 코드 리펙토링

* Refactor(#144): 알림 전체조회 페이지네이션 삭제

* Feat(#146): 모든 알림 읽음으로 표시하는 api 추가

* Refactor(#148): 챌린지 카테고리 및 키워드 검색 api 하나로 통합 (#149)

* Feat(#74): 카테고리 검색 메서드 추가

* Test(#81):

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 클래스 추가

* Feat(#81): 챌린지 엔티티에 카테고리 필드 추가

* Feat(#81): 카테고리 필드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 필드 추가

* Test(#81): 챌린지 카테고리 검색 테스트

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Docs(#90): enum 항목 설명 추가

* Refactor(#97): 매직 넘버 상수로 변환

* Refactor(#104): responseDto에 challengeId 추가

* Refactor(#97): 메서드 분리

* Refacor(#97): 싱글턴 패턴으로 변경

* Test(#97): 싱글턴 패턴으로 변경

* Refacor(#97): cycle 검증을 도메인 계층에서 하도록 변경

* Test(#97): 테스트 코드 오류 수정

* Refactor(#138): 챌린지 생성 시 생성 날짜 자동 주입 및 블록 이름 추가

* Test(#139): 쿼리 파라미터 추가

* Docs(#139): 쿼리 파라미터 추가 및 카테거리 검색 API 추가

* Feat(#141): 이미지 업로드 기능 추가

* Feat(#141): 의존성 추가

* Test(#141): 이미지 업로드 테스트

* Docs(#141): 문서 업데이트

* Test(#141): 이미지 업로드 테스트

* Refactor(#141): url 고유하도록 변경

* Refactor(#141): url 고유하도록 변경

* Refactor(#141): url 고유하도록 변경

* Refactor(#141): 불필요한 주석 제거

* Feat: 카테고리와 키워드를 통해 챌린지 검색하는 기능 추가

* Refactor(#148): 챌린지 카테고리 및 키워드 검색 api 하나로 통합

* Refactor(#150): 팀 초대 메시지에 대시보드 아이디 추가 (#151)

* Feat(#74): 알림 엔티티 구현

* Feat(#74): 알림 레포지토리 구현

* Feat(#74): NotificationInfoResDto 구현

* Feat(#74): NotificationListResDto 구현

* Feat(#74): NotificationNotFoundException  구현

* Feat(#74): service 로직 구현

* Feat(#74): controller 로직 구현

* Feat(#74): spring-boot-starter-web-services 의존성 추가

* Feat(#74): 알림-멤버 매핑

* Feat(#74): 챌린지 참여 할 때 알림가도록 추가

* Feat(#74): 챌린지 생성될때마다 알림가도록 변경

* Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경

* Feat(#74):notificationService 추가

* Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경

* Refactor(#74):  emitter를 SseEmitterManager 에서 관리하도록 변경

* Style(#74): 불필요한 공백 라인 제거

* Style(#74): 줄바꿈 추가

* Style(#74): 마지막 공백 라인 추가

* Style(#74): SseEmitterManager 추가

* Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결

* Test(#74): NotificationServiceTest 구현

* Feat(#74): 파라미터 name 설정

* Feat(#74): JsonIgnore 어노테이션 삽입

* Feat(#74): isRead 필드 업데이트 메서드 로직 수정

* Test(#74): NotificationController 추가

* Feat(#74): JsonIgnore 어노테이션 삭제

* Fix(#74): Member 필드 삭제

* Test(#74): NotificationController 테스트 구현

* Test(#74): 문서 생성 경로 변경

* Test(#74): 알림 조회 문서 헤더 필드 생성

* Docs(#74): 알림 문서화

* Refactor(#74): 어노테이션 변경

* Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현

* Refactor(#74): 매직 넘버 상수화

* Test(#74): notificationService 필드 추가

* Feat(#74): 팀원 초대 api 추가

* Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가

* Test(#74): 팀원 초대 테스트

* Refactor(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경

* Test(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경

* Fix(#74): 충돌 수정

* Refactor(#74): 메서드 분리

* Feat(): 매직 넘버 상수화

* Refactor(#127): 팀원이 팀 초대 수락하면 팀장한테 알람가도록 구현 및 팀 초대 api 로직 수정

* Refacor: 알림 연결 성공시 더미데이터 반환

* Refacor: 알림 이름 안보내도록 수정

* Refacor: 알림 이름 안보내도록 수정

* Refacor: 알림 이름 안보내도록 수정

* Refacor(#131): 알림 전체 조회 시 읽은 여부 true로 변경

* Test(#131): 로직 변경에 따른 테스트 코드 수정

* Refactor(#131): 코드 리펙토링

* Refactor(#144): 알림 전체조회 페이지네이션 삭제

* Feat(#146): 모든 알림 읽음으로 표시하는 api 추가

* Refactor(#150): 팀 초대 메시지에 대시보드 아이디 추가

* Refactor: 마이페이지 내에서 개인 대시보드 조회 기능 추가 & 상대방 프로필은 isPublic이 true인 것만 보이도록 수정 (#152)

* Refactor: 마이페이지 내에서 개인 대시보드 조회 기능 추가 & 상대방 프로필은 isPublic이 true인 것만 보이도록 수정

* Docs: mypage 대시보드 & 챌린지 목록 조회 문서 수정

* Test: mypage 개인 대시보드 확인 로직 추가 수정

* Refactor(#153): 챌린지 상세조회 반환값 수정 (#154)

* Feat(#74): 카테고리 검색 메서드 추가

* Test(#81):

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 클래스 추가

* Feat(#81): 챌린지 엔티티에 카테고리 필드 추가

* Feat(#81): 카테고리 필드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 필드 추가

* Test(#81): 챌린지 카테고리 검색 테스트

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Docs(#90): enum 항목 설명 추가

* Refactor(#97): 매직 넘버 상수로 변환

* Refactor(#104): responseDto에 challengeId 추가

* Refactor(#97): 메서드 분리

* Refacor(#97): 싱글턴 패턴으로 변경

* Test(#97): 싱글턴 패턴으로 변경

* Refacor(#97): cycle 검증을 도메인 계층에서 하도록 변경

* Test(#97): 테스트 코드 오류 수정

* Refactor(#138): 챌린지 생성 시 생성 날짜 자동 주입 및 블록 이름 추가

* Test(#139): 쿼리 파라미터 추가

* Docs(#139): 쿼리 파라미터 추가 및 카테거리 검색 API 추가

* Feat(#141): 이미지 업로드 기능 추가

* Feat(#141): 의존성 추가

* Test(#141): 이미지 업로드 테스트

* Docs(#141): 문서 업데이트

* Test(#141): 이미지 업로드 테스트

* Refactor(#141): url 고유하도록 변경

* Refactor(#141): url 고유하도록 변경

* Refactor(#141): url 고유하도록 변경

* Refactor(#141): 불필요한 주석 제거

* Feat: 카테고리와 키워드를 통해 챌린지 검색하는 기능 추가

* Refactor(#148): 챌린지 카테고리 및 키워드 검색 api 하나로 통합

* Refactor(#153): 챌린지 상세조회 반환값 수정

* Refactor(#155): 팀 대시보드 중복 참여, 참여하지 않았지만 탈퇴하려는 사용자 예외 처리, 참가자 팀 대시보드 리스트 수정 (#156)

* Refactor(#153): 챌린지 실시간 완료자 반환하도록 수정 (#157)

* Feat(#74): 카테고리 검색 메서드 추가

* Test(#81):

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 클래스 추가

* Feat(#81): 챌린지 엔티티에 카테고리 필드 추가

* Feat(#81): 카테고리 필드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 필드 추가

* Test(#81): 챌린지 카테고리 검색 테스트

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Docs(#90): enum 항목 설명 추가

* Refactor(#97): 매직 넘버 상수로 변환

* Refactor(#104): responseDto에 challengeId 추가

* Refactor(#97): 메서드 분리

* Refacor(#97): 싱글턴 패턴으로 변경

* Test(#97): 싱글턴 패턴으로 변경

* Refacor(#97): cycle 검증을 도메인 계층에서 하도록 변경

* Test(#97): 테스트 코드 오류 수정

* Refactor(#138): 챌린지 생성 시 생성 날짜 자동 주입 및 블록 이름 추가

* Test(#139): 쿼리 파라미터 추가

* Docs(#139): 쿼리 파라미터 추가 및 카테거리 검색 API 추가

* Feat(#141): 이미지 업로드 기능 추가

* Feat(#141): 의존성 추가

* Test(#141): 이미지 업로드 테스트

* Docs(#141): 문서 업데이트

* Test(#141): 이미지 업로드 테스트

* Refactor(#141): url 고유하도록 변경

* Refactor(#141): url 고유하도록 변경

* Refactor(#141): url 고유하도록 변경

* Refactor(#141): 불필요한 주석 제거

* Feat: 카테고리와 키워드를 통해 챌린지 검색하는 기능 추가

* Refactor(#148): 챌린지 카테고리 및 키워드 검색 api 하나로 통합

* Refactor(#153): 챌린지 상세조회 반환값 수정

* Refactor(#153): 챌린지 실시간 완료자 반환하도록 수정

* Fix(#158): 이전 팀 문서 삭제 (#159)

* Refactor(#153): 챌린지 주기마다 블록이 새로 생성되도록 변경 (#160)

* Feat(#74): 카테고리 검색 메서드 추가

* Test(#81):

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 클래스 추가

* Feat(#81): 챌린지 엔티티에 카테고리 필드 추가

* Feat(#81): 카테고리 필드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 필드 추가

* Test(#81): 챌린지 카테고리 검색 테스트

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Docs(#90): enum 항목 설명 추가

* Refactor(#97): 매직 넘버 상수로 변환

* Refactor(#104): responseDto에 challengeId 추가

* Refactor(#97): 메서드 분리

* Refacor(#97): 싱글턴 패턴으로 변경

* Test(#97): 싱글턴 패턴으로 변경

* Refacor(#97): cycle 검증을 도메인 계층에서 하도록 변경

* Test(#97): 테스트 코드 오류 수정

* Refactor(#138): 챌린지 생성 시 생성 날짜 자동 주입 및 블록 이름 추가

* Test(#139): 쿼리 파라미터 추가

* Docs(#139): 쿼리 파라미터 추가 및 카테거리 검색 API 추가

* Feat(#141): 이미지 업로드 기능 추가

* Feat(#141): 의존성 추가

* Test(#141): 이미지 업로드 테스트

* Docs(#141): 문서 업데이트

* Test(#141): 이미지 업로드 테스트

* Refactor(#141): url 고유하도록 변경

* Refactor(#141): url 고유하도록 변경

* Refactor(#141): url 고유하도록 변경

* Refactor(#141): 불필요한 주석 제거

* Feat: 카테고리와 키워드를 통해 챌린지 검색하는 기능 추가

* Refactor(#148): 챌린지 카테고리 및 키워드 검색 api 하나로 통합

* Refactor(#153): 챌린지 상세조회 반환값 수정

* Refactor(#153): 챌린지 실시간 완료자 반환하도록 수정

* Refactor(#153): 챌린지 주기마다 블록이 새로 생성되도록 변경

* Refactor(#153): 필요없는 주석 제거

* Fix(#161): 이미지 수정 시 null 반환하는 오류 해결 (#162)

* Feat(#74): 카테고리 검색 메서드 추가

* Test(#81):

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 클래스 추가

* Feat(#81): 챌린지 엔티티에 카테고리 필드 추가

* Feat(#81): 카테고리 필드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 필드 추가

* Test(#81): 챌린지 카테고리 검색 테스트

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Docs(#90): enum 항목 설명 추가

* Refactor(#97): 매직 넘버 상수로 변환

* Refactor(#104): responseDto에 challengeId 추가

* Refactor(#97): 메서드 분리

* Refacor(#97): 싱글턴 패턴으로 변경

* Test(#97): 싱글턴 패턴으로 변경

* Refacor(#97): cycle 검증을 도메인 계층에서 하도록 변경

* Test(#97): 테스트 코드 오류 수정

* Refactor(#138): 챌린지 생성 시 생성 날짜 자동 주입 및 블록 이름 추가

* Test(#139): 쿼리 파라미터 추가

* Docs(#139): 쿼리 파라미터 추가 및 카테거리 검색 API 추가

* Feat(#141): 이미지 업로드 기능 추가

* Feat(#141): 의존성 추가

* Test(#141): 이미지 업로드 테스트

* Docs(#141): 문서 업데이트

* Test(#141): 이미지 업로드 테스트

* Refactor(#141): url 고유하도록 변경

* Refactor(#141): url 고유하도록 변경

* Refactor(#141): url 고유하도록 변경

* Refactor(#141): 불필요한 주석 제거

* Feat: 카테고리와 키워드를 통해 챌린지 검색하는 기능 추가

* Refactor(#148): 챌린지 카테고리 및 키워드 검색 api 하나로 통합

* Refactor(#153): 챌린지 상세조회 반환값 수정

* Refactor(#153): 챌린지 실시간 완료자 반환하도록 수정

* Refactor(#153): 챌린지 주기마다 블록이 새로 생성되도록 변경

* Refactor(#153): 필요없는 주석 제거

* Refacotr(#161): 이미지 수정 시 null 반환하는 오류 해결

* Fix(#163): 매개변수 순서 수정 (#164)

* Feat(#74): 카테고리 검색 메서드 추가

* Test(#81):

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 클래스 추가

* Feat(#81): 챌린지 엔티티에 카테고리 필드 추가

* Feat(#81): 카테고리 필드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 필드 추가

* Test(#81): 챌린지 카테고리 검색 테스트

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Docs(#90): enum 항목 설명 추가

* Refactor(#97): 매직 넘버 상수로 변환

* Refactor(#104): responseDto에 challengeId 추가

* Refactor(#97): 메서드 분리

* Refacor(#97): 싱글턴 패턴으로 변경

* Test(#97): 싱글턴 패턴으로 변경

* Refacor(#97): cycle 검증을 도메인 계층에서 하도록 변경

* Test(#97): 테스트 코드 오류 수정

* Refactor(#138): 챌린지 생성 시 생성 날짜 자동 주입 및 블록 이름 추가

* Test(#139): 쿼리 파라미터 추가

* Docs(#139): 쿼리 파라미터 추가 및 카테거리 검색 API 추가

* Feat(#141): 이미지 업로드 기능 추가

* Feat(#141): 의존성 추가

* Test(#141): 이미지 업로드 테스트

* Docs(#141): 문서 업데이트

* Test(#141): 이미지 업로드 테스트

* Refactor(#141): url 고유하도록 변경

* Refactor(#141): url 고유하도록 변경

* Refactor(#141): url 고유하도록 변경

* Refactor(#141): 불필요한 주석 제거

* Feat: 카테고리와 키워드를 통해 챌린지 검색하는 기능 추가

* Refactor(#148): 챌린지 카테고리 및 키워드 검색 api 하나로 통합

* Refactor(#153): 챌린지 상세조회 반환값 수정

* Refactor(#153): 챌린지 실시간 완료자 반환하도록 수정

* Refactor(#153): 챌린지 주기마다 블록이 새로 생성되도록 변경

* Refactor(#153): 필요없는 주석 제거

* Refacotr(#161): 이미지 수정 시 null 반환하는 오류 해결

* Fix(#163): 매개변수 수정

* Feat(#165): 챌린지 탈퇴 api 추가" (#166)

* Feat(#74): 카테고리 검색 메서드 추가

* Test(#81):

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 클래스 추가

* Feat(#81): 챌린지 엔티티에 카테고리 필드 추가

* Feat(#81): 카테고리 필드 추가

* Feat(#81): 카테고리 검색 메서드 추가

* Feat(#81): 카테고리 필드 추가

* Test(#81): 챌린지 카테고리 검색 테스트

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Fix(#81): 카테고리 타입 변경

* Docs(#90): enum 항목 설명 추가

* Refactor(#97): 매직 넘버 상수로 변환

* Refactor(#104): responseDto에 challengeId 추가

* Refactor(#97): 메서드 분리

* Refacor(#97): 싱글턴 패턴으로 변경

* Test(#97): 싱글턴 패턴으로 변경

* Refacor(#97): cycle 검증을 도메인 계층에서 하도록 변경

* Test(#97): 테스트 코드 오류 수정

* Refactor(#138): 챌린지 생성 시 생성 날짜 자동 주입 및 블록 이름 추가

* Test(#139): 쿼리 파라미터 추가

* Docs(#139): 쿼리 파라미터 추가 및 카테거리 검색 API 추가

* Feat(#141): 이미지 업로드 기능 추가

* Feat(#141): 의존성 추가

* Test(#141): 이미지 업로드 테스트

* Docs(#141): 문서 업데이트

* Test(#141): 이미지 업로드 테스트

* Refactor(#141): url 고유하도록 변경

* Refactor(#141): url 고유하도록 변경

* Refactor(#141): url 고유하도록 변경

* Refactor(#141): 불필요한 주석 제거

* Feat: 카테고리와 키워드를 통해 챌린지 검색하는 기능 추가

* Refactor(#148): 챌린지 카테고리 및 키워드 검색 api 하나로 통합

* Refactor(#153): 챌린지 상세조회 반환값 수정

* Refactor(#153): 챌린지 실시간 완료자 반환하도록 수정

* Refactor(#153): 챌린지 주기마다 블록이 새로 생성되도록 변경

* Refactor(#153): 필요없는 주석 제거

* Refacotr(#161): 이미지 수정 시 null 반환하는 오류 해결

* Fix(#163): 매개변수 수정

* Feat(#165): 챌린지 탈퇴 api 추가

* Fix: 충돌 해결

* Fix: 충돌 해결

* Fix: 충돌 해결

* Fix: 충돌 해결

---------

Co-authored-by: inhooo00 <[email protected]>
Co-authored-by: giwoong <[email protected]>
Co-authored-by: choi inho <[email protected]>
  • Loading branch information
4 people authored Sep 23, 2024
1 parent 74d532c commit 34fb79e
Show file tree
Hide file tree
Showing 81 changed files with 1,201 additions and 2,401 deletions.
5 changes: 4 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,9 @@ dependencies {
asciidoctorExt 'org.springframework.restdocs:spring-restdocs-asciidoctor:3.0.1'
testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc:3.0.1'

// s3
implementation 'software.amazon.awssdk:s3:2.20.140'

}
ext {
snippetsDir = file('build/generated-snippets')
Expand All @@ -84,4 +87,4 @@ bootJar {

tasks.named('test') {
useJUnitPlatform()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,11 @@
import shop.kkeujeok.kkeujeokbackend.block.api.dto.response.BlockListResDto;
import shop.kkeujeok.kkeujeokbackend.block.domain.Block;
import shop.kkeujeok.kkeujeokbackend.block.domain.Progress;
import shop.kkeujeok.kkeujeokbackend.block.domain.Type;
import shop.kkeujeok.kkeujeokbackend.block.domain.repository.BlockRepository;
import shop.kkeujeok.kkeujeokbackend.block.exception.BlockNotFoundException;
import shop.kkeujeok.kkeujeokbackend.block.exception.InvalidProgressException;
import shop.kkeujeok.kkeujeokbackend.challenge.domain.Challenge;
import shop.kkeujeok.kkeujeokbackend.dashboard.domain.Dashboard;
import shop.kkeujeok.kkeujeokbackend.dashboard.domain.repository.DashboardRepository;
import shop.kkeujeok.kkeujeokbackend.dashboard.exception.DashboardNotFoundException;
Expand Down Expand Up @@ -74,9 +76,18 @@ public BlockInfoResDto progressUpdate(String email, Long blockId, String progres

block.progressUpdate(progress);

updateChallengeCompletedMemberByProgress(block, member, progress);

return BlockInfoResDto.from(block);
}

private void updateChallengeCompletedMemberByProgress(Block block, Member member, Progress progress) {
if (block.getType() == Type.CHALLENGE) {
Challenge challenge = block.getChallenge();
challenge.updateCompletedMember(member, progress);
}
}

// 블록 리스트
public BlockListResDto findForBlockByProgress(String email, Long dashboardId, String progress, Pageable pageable) {
Member member = memberRepository.findByEmail(email).orElseThrow(MemberNotFoundException::new);
Expand Down Expand Up @@ -158,5 +169,4 @@ private Progress parseProgress(String progressString) {
throw new InvalidProgressException();
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import shop.kkeujeok.kkeujeokbackend.block.api.dto.response.BlockInfoResDto;
import org.springframework.web.multipart.MultipartFile;
import shop.kkeujeok.kkeujeokbackend.challenge.api.dto.reqeust.ChallengeSaveReqDto;
import shop.kkeujeok.kkeujeokbackend.challenge.api.dto.reqeust.ChallengeSearchReqDto;
import shop.kkeujeok.kkeujeokbackend.challenge.api.dto.response.ChallengeInfoResDto;
Expand All @@ -31,16 +31,19 @@ public class ChallengeController {

@PostMapping
public RspTemplate<ChallengeInfoResDto> save(@CurrentUserEmail String email,
@Valid @RequestBody ChallengeSaveReqDto challengeSaveReqDto) {
return new RspTemplate<>(HttpStatus.CREATED, "챌린지 생성 성공", challengeService.save(email, challengeSaveReqDto));
@Valid @RequestPart ChallengeSaveReqDto challengeSaveReqDto,
@RequestPart(value = "representImage", required = false) MultipartFile representImage) {
return new RspTemplate<>(HttpStatus.CREATED, "챌린지 생성 성공",
challengeService.save(email, challengeSaveReqDto, representImage));
}

@PatchMapping("/{challengeId}")
public RspTemplate<ChallengeInfoResDto> update(@CurrentUserEmail String email,
@PathVariable(name = "challengeId") Long challengeId,
@Valid @RequestBody ChallengeSaveReqDto challengeSaveReqDto) {
@Valid @RequestPart ChallengeSaveReqDto challengeSaveReqDto,
@RequestPart(value = "representImage", required = false) MultipartFile representImage) {
return new RspTemplate<>(HttpStatus.OK, "챌린지 수정 성공",
challengeService.update(email, challengeId, challengeSaveReqDto));
challengeService.update(email, challengeId, challengeSaveReqDto, representImage));
}

@GetMapping
Expand All @@ -51,43 +54,48 @@ public RspTemplate<ChallengeListResDto> findAllChallenges(@RequestParam(defaultV
challengeService.findAllChallenges(PageRequest.of(page, size)));
}

@GetMapping("/search")
public RspTemplate<ChallengeListResDto> findChallengesByKeyWord(@RequestParam(name = "keyword") String keyWord,
@RequestParam(defaultValue = "0", name = "page") int page,
@RequestParam(defaultValue = "10", name = "size") int size) {
ChallengeSearchReqDto searchReqDto = ChallengeSearchReqDto.from(keyWord);
return new RspTemplate<>(HttpStatus.OK,
"챌린지 검색 성공",
challengeService.findChallengesByKeyWord(searchReqDto, PageRequest.of(page, size)));
}

@GetMapping("/find")
public RspTemplate<ChallengeListResDto> findByCategory(@RequestParam(name = "category") String category,
@RequestParam(defaultValue = "0", name = "page") int page,
@RequestParam(defaultValue = "10", name = "size") int size) {
return new RspTemplate<>(HttpStatus.OK,
"챌린지 카테고리 검색 성공",
challengeService.findByCategory(category, PageRequest.of(page, size)));
}

@GetMapping("/{challengeId}")
public RspTemplate<ChallengeInfoResDto> findById(@PathVariable(name = "challengeId") Long challengeId) {
return new RspTemplate<>(HttpStatus.OK, "챌린지 상세보기", challengeService.findById(challengeId));
public RspTemplate<ChallengeInfoResDto> findById(@CurrentUserEmail String email,
@PathVariable(name = "challengeId") Long challengeId) {
return new RspTemplate<>(HttpStatus.OK, "챌린지 상세보기", challengeService.findById(email, challengeId));
}

@DeleteMapping("/{challengeId}")
public RspTemplate<Void> delete(@CurrentUserEmail String email,
@PathVariable(name = "challengeId") Long challengeId) {
challengeService.delete(email, challengeId);

return new RspTemplate<>(HttpStatus.OK, "챌린지 삭제 성공");
}

@PostMapping("/{challengeId}/{dashboardId}")
public RspTemplate<BlockInfoResDto> addChallengeToPersonalDashboard(@CurrentUserEmail String email,
@PathVariable(name = "challengeId") Long challengeId,
@PathVariable(name = "dashboardId") Long personalDashboardId) {
return new RspTemplate<>(HttpStatus.OK,
"챌린지 참여 성공",
challengeService.addChallengeToPersonalDashboard(email, challengeId, personalDashboardId));
public RspTemplate<Void> addChallengeToPersonalDashboard(@CurrentUserEmail String email,
@PathVariable(name = "challengeId") Long challengeId,
@PathVariable(name = "dashboardId") Long personalDashboardId) {
challengeService.addChallengeToPersonalDashboard(email, challengeId, personalDashboardId);

return new RspTemplate<>(HttpStatus.OK, "챌린지 참여 성공");
}

@GetMapping("/search")
public RspTemplate<ChallengeListResDto> findChallengesByCategoryAndKeyword(
@RequestParam(required = false) String category,
@RequestParam(required = false) String keyword,
@RequestParam(defaultValue = "0", name = "page") int page,
@RequestParam(defaultValue = "10", name = "size") int size) {

ChallengeSearchReqDto challengeSearchReqDto = ChallengeSearchReqDto.from(keyword, category);

return new RspTemplate<>(HttpStatus.OK, "챌린지 검색 성공",
challengeService.findChallengesByCategoryAndKeyword(challengeSearchReqDto,
PageRequest.of(page, size)));
}

@DeleteMapping("/{challengeId}/withdraw")
public RspTemplate<Void> withdrawFromChallenge(@CurrentUserEmail String email,
@PathVariable(name = "challengeId") Long challengeId) {
challengeService.withdrawFromChallenge(email, challengeId);
return new RspTemplate<>(HttpStatus.OK, "챌린지 탈퇴 성공");
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,11 @@

import jakarta.validation.constraints.NotNull;
import java.time.LocalDate;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import shop.kkeujeok.kkeujeokbackend.challenge.domain.Category;
import shop.kkeujeok.kkeujeokbackend.challenge.domain.Challenge;
import shop.kkeujeok.kkeujeokbackend.challenge.domain.Cycle;
import shop.kkeujeok.kkeujeokbackend.challenge.domain.CycleDetail;
import shop.kkeujeok.kkeujeokbackend.challenge.exception.InvalidCycleException;
import shop.kkeujeok.kkeujeokbackend.global.entity.Status;
import shop.kkeujeok.kkeujeokbackend.member.domain.Member;

Expand All @@ -29,48 +26,25 @@ public record ChallengeSaveReqDto(
@NotNull(message = "주기 상세정보는 필수 입력값입니다.")
List<CycleDetail> cycleDetails,

@NotNull(message = "시작 날짜는 필수 입력값입니다.")
LocalDate startDate,

@NotNull(message = "종료 날짜는 필수 입력값입니다.")
LocalDate endDate,

String representImage
@NotNull(message = "블록 이름은 필수 입력값입니다.")
String blockName
) {
public Challenge toEntity(Member member) {
validateCycleDetails();
public Challenge toEntity(Member member, String representImage) {
return Challenge.builder()
.status(Status.ACTIVE)
.title(title)
.contents(contents)
.category(category)
.cycle(cycle)
.cycleDetails(cycleDetails)
.startDate(startDate)
.startDate(LocalDate.now())
.endDate(endDate)
.representImage(representImage)
.member(member)
.blockName(blockName)
.build();
}

private void validateCycleDetails() {
Set<CycleDetail> distinctCycleDetails = new HashSet<>();

cycleDetails.forEach(cycleDetail -> {
validateCycleDetailUniqueness(distinctCycleDetails, cycleDetail);
validateCycleDetailMatch(cycleDetail);
});
}

private void validateCycleDetailUniqueness(Set<CycleDetail> seenDetails, CycleDetail cycleDetail) {
if (!seenDetails.add(cycleDetail)) {
throw InvalidCycleException.forDuplicateDetail();
}
}

private void validateCycleDetailMatch(CycleDetail cycleDetail) {
if (cycleDetail.getCycle() != cycle) {
throw InvalidCycleException.forMismatchDetail();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@

@Builder
public record ChallengeSearchReqDto(
String keyWord
String keyWord,
String category
) {
public static ChallengeSearchReqDto from(String keyWord) {
public static ChallengeSearchReqDto from(String keyWord, String category) {
return ChallengeSearchReqDto.builder()
.keyWord(keyWord)
.category(category)
.build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package shop.kkeujeok.kkeujeokbackend.challenge.api.dto.response;

import lombok.Builder;
import shop.kkeujeok.kkeujeokbackend.member.domain.Member;

@Builder
public record ChallengeCompletedMemberInfoResDto(
Long memberId,
String email,
String picture,
String nickname
) {
public static ChallengeCompletedMemberInfoResDto from(Member member) {
return ChallengeCompletedMemberInfoResDto.builder()
.memberId(member.getId())
.email(member.getEmail())
.picture(member.getPicture())
.nickname(member.getNickname())
.build();
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package shop.kkeujeok.kkeujeokbackend.challenge.api.dto.response;

import java.time.LocalDate;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import lombok.Builder;
import shop.kkeujeok.kkeujeokbackend.challenge.domain.Category;
import shop.kkeujeok.kkeujeokbackend.challenge.domain.Challenge;
Expand All @@ -20,7 +22,12 @@ public record ChallengeInfoResDto(
LocalDate endDate,
String representImage,
String authorName,
String authorProfileImage
String authorProfileImage,
String blockName,
int participantCount,
boolean isParticipant,
boolean isAuthor,
Set<ChallengeCompletedMemberInfoResDto> completedMembers
) {
public static ChallengeInfoResDto from(Challenge challenge) {
return ChallengeInfoResDto.builder()
Expand All @@ -35,6 +42,33 @@ public static ChallengeInfoResDto from(Challenge challenge) {
.representImage(challenge.getRepresentImage())
.authorName(challenge.getMember().getNickname())
.authorProfileImage(challenge.getMember().getPicture())
.blockName(challenge.getBlockName())
.participantCount(challenge.getParticipantsCount())
.isAuthor(true)
.isParticipant(false)
.completedMembers(Collections.emptySet())
.build();
}

public static ChallengeInfoResDto of(Challenge challenge, boolean isParticipant, boolean isAuthor,
Set<ChallengeCompletedMemberInfoResDto> completedMembers) {
return ChallengeInfoResDto.builder()
.challengeId(challenge.getId())
.title(challenge.getTitle())
.contents(challenge.getContents())
.category(challenge.getCategory())
.cycle(challenge.getCycle())
.cycleDetails(challenge.getCycleDetails())
.startDate(challenge.getStartDate())
.endDate(challenge.getEndDate())
.representImage(challenge.getRepresentImage())
.authorName(challenge.getMember().getNickname())
.authorProfileImage(challenge.getMember().getPicture())
.blockName(challenge.getBlockName())
.participantCount(challenge.getParticipantsCount())
.isParticipant(isParticipant)
.isAuthor(isAuthor)
.completedMembers(completedMembers)
.build();
}
}
Loading

0 comments on commit 34fb79e

Please sign in to comment.