Skip to content

Commit

Permalink
Dev to main (#321)
Browse files Browse the repository at this point in the history
* main -> dev merge (#252)

* Dev to main (#251)

* feat: Tag, Post, PostTag 엔티티 간 연관관계 매핑 (#20)

* feat: 신고 카테고리 항목 추가

* Update PULL_REQUEST_TEMPLATE.md

* feat: filetype enum값 추가

* feat: entity에 검증 어노테이션 추가 (#11)

* feat: entity에 검증 어노테이션 추가

* feat: entity에 검증 어노테이션 추가

* style: 업로드 파일명, 서버 관리 파일명의 필드명 변경

---------

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

* chore: 패키지 구조 개선

* Revert "chore: 패키지 구조 개선"

This reverts commit f27a0d95080e705a953d94cfb7ef365a6a1f49cb.

* chore: 패키지 구조 개선

* feat: Tag, Post, PostTag 엔티티 간 연관관계 매핑

---------

Co-authored-by: Hanjaemo <[email protected]>
Co-authored-by: Hanjaemo <[email protected]>
Co-authored-by: gywns0417 <[email protected]>

* feat: 검증 애노테이션 추가 (#26)

* feat: 엔티티에 검증 애노테이션 추가

* style: 불필요한 import문 제거

* feat: 댓글 리포지토리 구현

* feat: 댓글 DTO 클래스 구현

* feat: 임시 Member, Post 리포지토리 구현

* feat: 댓글 리포지토리 재구현

* feat: 댓글 Service 클래스 구현

* feat: 댓글 Controller 클래스 일부 구현

* 게시글 작성 기능 구현 (#28)

* feat: 신고 카테고리 항목 추가

* Update PULL_REQUEST_TEMPLATE.md

* feat: filetype enum값 추가

* feat: entity에 검증 어노테이션 추가 (#11)

* feat: entity에 검증 어노테이션 추가

* feat: entity에 검증 어노테이션 추가

* style: 업로드 파일명, 서버 관리 파일명의 필드명 변경

---------

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

* chore: 패키지 구조 개선

* Revert "chore: 패키지 구조 개선"

This reverts commit f27a0d95080e705a953d94cfb7ef365a6a1f49cb.

* chore: 패키지 구조 개선

* commit test

* dto

* feat: 커밋 과정에서 변경사항 추가

* feat: getter 추가

* feat: dto 클래스 추가

* refactor: dto 구조 수정

* refactor: entity 생성자 추가

* feat: 게시글 작성 기능 추가

* test: 게시글 작성 기능 테스트

* feat: FileDto 클래스 추가

* test: fileDto 추가

* refactor: 불필요한 코드 제거

* fix: JSON 매핑 오류 해결 (#33)

* fix: tag <-> TagPost 영속성 전이 추가

* feat: 게시글 전체 조회 기능 추가 (#34)

---------

Co-authored-by: Hanjaemo <[email protected]>
Co-authored-by: Hanjaemo <[email protected]>
Co-authored-by: gywns0417 <[email protected]>

* refactor: 댓글 Service 코드 가독성 향상

* move: 불필요한 댓글 Request Dto 삭제

* refactor: 댓글 API 엔드포인트 수정

* feat: Post 엔티티 어노테이션 추가 구현

* fix: Post 엔티티 Category, viewStatus 필드 임시 @NotNull 해제

쿼리 테스트를 위해 미구현 상태인 Post 엔티티 필드 어노테이션을 일부 수정했습니다.

* feat: Member 엔티티 @Getter 임시 추가

* feat: BalanceOptionRepository 임시 구현

* feat: BalanceOption 엔티티 @Getter 임시 추가

* feat: CommentCreateRequest 클래스에 balanceOptionId 필드 추가

* fix: CommentResponse 클래스에 likeCount() 임시 비활성화

테스트를 위해 현재 미구현 상태인 CommentLike 관련 코드를 임시 비활성화 했습니다.(Null값)

* feat: CommentService 추가 구현 완료

BalanceOption 검증 코드(추후 BalanceOption 구현 완료 시 사용)를 추가 했습니다.

* refactor: 댓글 컨트롤러 createComment() 메서드 수정

댓글 API 엔드포인트를 설계에 맞게 수정함에 따라 관련 사항들을 수정했습니다.

* fix: 댓글 API 사용시 401 에러 해결

localhost:8080 접속 시 로그인이 필요 없도록 임시로 수정했습니다.

* 게시글 CRUD 기능 구현 (#39)

* feat: 신고 카테고리 항목 추가

* Update PULL_REQUEST_TEMPLATE.md

* feat: filetype enum값 추가

* feat: entity에 검증 어노테이션 추가 (#11)

* feat: entity에 검증 어노테이션 추가

* feat: entity에 검증 어노테이션 추가

* style: 업로드 파일명, 서버 관리 파일명의 필드명 변경

---------

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

* chore: 패키지 구조 개선

* Revert "chore: 패키지 구조 개선"

This reverts commit f27a0d95080e705a953d94cfb7ef365a6a1f49cb.

* chore: 패키지 구조 개선

* commit test

* dto

* feat: 커밋 과정에서 변경사항 추가

* feat: getter 추가

* feat: dto 클래스 추가

* refactor: dto 구조 수정

* refactor: entity 생성자 추가

* feat: 게시글 작성 기능 추가

* test: 게시글 작성 기능 테스트

* feat: FileDto 클래스 추가

* test: fileDto 추가

* refactor: 불필요한 코드 제거

* fix: JSON 매핑 오류 해결 (#33)

* fix: tag <-> TagPost 영속성 전이 추가

* feat: 게시글 전체 조회 기능 추가 (#34)

* feat: 게시글 단건 조회 기능 추가

* feat: 게시글 삭제 기능 추가

* fix: 생성자 private으로 접근 제어

* feat: MemberRepository 클래스 추가

* refactor: 리뷰받은 내용들 수정

* test: 게시글 CRUD 테스트 코드 작성

* refactor: dto에서 views, viewstatus 제거

---------

Co-authored-by: Hanjaemo <[email protected]>
Co-authored-by: Hanjaemo <[email protected]>
Co-authored-by: gywns0417 <[email protected]>

* feat: 회원 투표 기능 구현 (#32)

* chore: Spring Security 라이브러리 임시 주석 처리

* feat: 회원 투표 기능 구현

* test: 투표 생성 기능 단위 테스트

* feat: 선택지 투표 API 컨트롤러에 응답 메시지 추가

* feat: VoteController의 vote 메서드에 201 응답 코드 추가

* test: Mockito를 사용해서 테스트 코드 작성

* feat: 투표 현황 조회 기능 구현

* test: 투표 현황 조회 기능 단위 테스트

* feat: 투표 변경 기능 구현

* refactor: Post의 category 필드명 수정

* refactor: VoteRequest에 @Builder 추가

* test: 회원 투표 수정 기능 단위 테스트

* refactor: 빌더 사용 및 메서드 위치 수정

* refactor: 기본값 설정 방법을 @PrePersist 사용 방식으로 변경

* refactor: 테스트 코드에서 EntityManager 주입 로직 제거

* refactor: 조회 메서드에 @Transactional(readOnly = true) 추가

* style: import문 압축

* feat: 조회한 선택지가 게시글에 포함되지 않은 게시글인 경우 예외 발생

* fix: 댓글 수정 시 json으로 데이터 전송되지 않던 에러 해결

* feat: 댓글 작성 시 postId를 API 주소에서 가져오게 기능 변경

* feat: 댓글 수정 성공 시 ResponseEntity 전달하도록 구현

* style: 현재 사용하지 않는 BalanceOption 검증 기능 주석 처리

* test: 댓글 CRUD 테스트 코드 작성 및 통과 완료

* style: 불필요한 import문 제거

* feat: 댓글 CRUD 응답 시 댓글 작성 일시, 댓글 최종 수정 일시 반환 구현

* refactor: 메서드 단위로 트랜잭션 구현

* refactor: dev 브랜치에 맞게 클래스 수정

* fix: voteCount() 메서드 문법 오류 수정

* refactor: dev 브랜치에 맞게 클레스 수정

* fix: @NotNull import 미포함 수정 완료

* fix: 중복 MemberRepository 클래스 삭제 완료

* 투표 기능 예외 처리 (#49)

* feat: 투표 생성 시 존재하지 않는 데이터를 요구한 경우 예외 처리

* feat: 중복 투표를 진행하는 경우 예외 처리

* feat: 투표가 이미 종료된 게시글에 투표하려는 경우 예외 처리

* style: 로직 순서 변경

* feat: 존재하지 않는 데이터 요청 시 예외 처리

* feat: 카테고리가 'CASUAL'인 게시글에서 투표를 수정하려는 경우 예외 처리

* feat: 해당 게시글에서 투표한 기록이 없을 때 투표를 수정하려는 경우 예외 처리

* 게시글 추천 기능 구현 (#54)

* feat: 게시글 추천 기능 구현

* test: 게시글의 마감기한, 회원의 투표 정보 필드 추가

* test: 게시글 좋아요 기능 단위 테스트

* test: 게시글 추천 시 해당 게시글이 존재하지 않는 경우 예외 처리에 대한 단위 테스트

* test: 게시글 중복 추천 시 예외 처리에 대한 단위 테스트

* style: 불필요한 메서드 제거

* 댓글 추천 기능 구현 (#55)

* feat: 댓글 추천 기능 구현

* test: 댓글 추천 기능 단위 테스트

* test: 댓글 중복 추천 시 예외 처리 단위 테스트

* style: 각 코드의 구분자를 세미콜론에서 쉼표로 변경

* 댓글 기능 예외 처리 구현

* feat: 댓글 CRUD 예외 처리 구현

* style: TODO-Comment-BalanceOption 연관 필요

* refactor: 댓글 컨트롤러 가독성 개선

* feat: PR 리뷰에 따른 코드 수정

* test: 댓글 예외 처리 단위 테스트 작성 및 통과 완료

* fix: { 문법 오류 수정

* 회원 정보 조회 기능 구현 (#69)

* feat: jwt 라이브러리 추가

* fix: merge 과정에서 충돌 이슈 제거

* feat: 토큰 생성, 검증을 하는 TokenProvider 클래스 생성

* feat: SecurityConfig 클래스 추가

* feat: Jwt Filter 적용

* feat: UserDetailService 추가 및 Member에 메서드 추가

* feat: 로그인, 회원가입 시 필요한 dto 클래스 생성

* feat: 유저 회원가입 기능 구현

* feat: 유저 로그인 기능 구현

* feat: 공통 Exception 클래스들 추가

* refactor: LoginSuccessDto 추가

* feat: LoginSuccessDto 추가

* feat: 회원 정보 조회 기능 추가

* feat: 회원 정보 조회 기능 추가

* fix: securityConfig에서 posts url 허용

* feat: 회원 전체 목록 기능 구현

* feat: ErrorCode 적용

* feat: 단위 테스트 작성

* fix: postCount, postLike 값이 null이 들어가는 오류 수정

* refactor: 불필요한 코드 제거

* feat: 회원 로그인, 조회 예외 처리

* fix: signWith() deprecated 수정

* fix: errorCode 중복 네이밍 제거

* 회원 정보 수정 기능 구현  (#76)

* feat: jwt 라이브러리 추가

* fix: merge 과정에서 충돌 이슈 제거

* feat: 토큰 생성, 검증을 하는 TokenProvider 클래스 생성

* feat: SecurityConfig 클래스 추가

* feat: Jwt Filter 적용

* feat: UserDetailService 추가 및 Member에 메서드 추가

* feat: 로그인, 회원가입 시 필요한 dto 클래스 생성

* feat: 유저 회원가입 기능 구현

* feat: 유저 로그인 기능 구현

* feat: 공통 Exception 클래스들 추가

* refactor: LoginSuccessDto 추가

* feat: LoginSuccessDto 추가

* feat: 회원 정보 조회 기능 추가

* feat: 회원 정보 조회 기능 추가

* fix: securityConfig에서 posts url 허용

* feat: 회원 전체 목록 기능 구현

* feat: ErrorCode 적용

* feat: 단위 테스트 작성

* fix: postCount, postLike 값이 null이 들어가는 오류 수정

* refactor: 불필요한 코드 제거

* feat: 회원 로그인, 조회 예외 처리

* merge branch

* 댓글 추천 기능 구현 (#55)

* feat: 댓글 추천 기능 구현

* test: 댓글 추천 기능 단위 테스트

* test: 댓글 중복 추천 시 예외 처리 단위 테스트

* style: 각 코드의 구분자를 세미콜론에서 쉼표로 변경

* feat: 유저 정보를 업데이트 하는 메서드 추가

* refactor: merge 충돌 제거

* feat: 회원 정보 수정 기능 구현

* feat: 회원 정보 수정 단위 테스트 추가

* refactor: save 메서드 없이도 변경감지로 업데이트 적용

---------

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

* refactor: PostService 에러코드 수정 (#83)

* 멤버 삭제 기능 구현 (#81)

* feat: 회원 탈퇴 기능 추가

* feat: 에러 코드 추가

* feat: 멤버 삭제 단위 테스트 추가

* 북마크 기능 구현 완료 (#80)

* feat: BookmarkRepository 구현 완료

* feat: BookmarkRequestDto 구현 완료

* feat: 북마크에 게시글 추가 기능 구현 완료

* feat: BookmarkResponseDto 구현 완료

* feat: 북마크에 추가된 게시글 전체 목록 조회 기능 구현 완료

* feat: 게시글 북마크 해제 기능 구현 완료

* fix: 북마크 조회 기능을 특정 멤버의 북마크 조회 기능으로 수정 및 API 주소 변경

* refactor: 북마크 API 주소 수정

* feat: 북마크 기능 예외처리 구현 완료

* style: 사용하지 않는 북마크 에러코드 삭제

* style: TODO 추가-게시글을 삭제하면 북마크, 댓글은 어떤 상태로 남아야 하는가?

* style: TODO 제거

* test: 북마크 기능, 예외 처리 단위 테스트 구현 및 통과 완료

* refactor: 북마크 삭제 API HTTPStatus 변경

* style: 불필요한 import 삭제

* feat: 게시글 추천 취소 기능 구현 (#78)

* feat: 댓글 추천 취소 기능 구현 (#79)

* Spring Swagger 세팅  (#89)

* feat: Swagger config 설정

* refactor: 시큐리티 url 전체 허용

* feat: swagger 작업

* 댓글 조회시 selectedOptionId 반환 기능 구현 완료 (#86)

* feat: 댓글 조회시 해당 댓글이 작성된 balanceOptionId 반환하게 구현

 해당 기능 구현을 위해 Comment<->BalanceOption 엔티티 사이에 연관 관계를 맺어줬습니다. ERD 업데이트가 필요합니다.

* feat: 댓글 조회시 투표 옵션 통해 작성된 balanceOptionId 반환하게 구현 수정

* refactor: balanceOptionId -> selectedOptionId 필드명 변경

* feat: 투표한 사람만 댓글 작성할 수 있도록 예외 처리 구현(회원 한정)

* feat: 북마크 기능 swagger에 추가 (#91)

* test: 댓글 기능 및 예외처리 테스트 재작성 및 통과 완료 (#95)

* 이메일 발송 기능 구현 (#98)

* feat: 메일 서버 의존성 추가

* refactor: 에러 코드 수정

* refactor: mail config 설정

* feat: 메일 발송 yml 설정

* refactor: 이메일 발송 config 수정

* feat: 이메일 발송 dto 클래스 추가

* feat: 이메일 발송 컨트롤러 생성

* feat: 이메일 발송 서비스 생성

* feat: 구글 SMTP 설정

* fix: email dto 삭제

* fix: config 파일 제거

* fix: 메일 컨트롤러, 서비스 코드 수정

* fix: 모든 url에 대해서 시큐리티 허용

* feat: EmailRequest dto 추가

* 파일 업로드 기능 구현 완료 (#97)

* feat: 파일 업로드 기능 구현

* style: 스웨거에 추가하지 않는 필드 스웨거 추가

* feat: 파일 다운로드 기능 구현 완료 (#102)

* Redis 설정 (#104)

* feat: Redis 디펜던시 추가

* feat: yml 환경변수 세팅

* refactor: yml 수정

* feat: config 파일 추가

* feat: service 클래스 추가

* fix: BalanceOption import 추가

* fix: Redis CRUD 단위 테스트 추가

* config 파일 서브 모듈로 관리 (#106)

* chore: application.yml 제거

* chore: config 파일 서브모듈로 관리

* 파일 기능 예외 처리 구현 (#112)

* feat: 파일 기능 예외 처리 구현 완료

* chore: 단일 파일 최대 업로드 크기, 전체 요청 최대 크기 설정

* chore: 파일 업로드 위치 설정 완료

* feat: 파일 기능 Configuration 클래스 구현

* feat: 파일 기능 예외 처리 구현

* style: 불필요한 import 삭제

* refactor: downloadFile에 사용 되는 에러 코드 수정

* feat: FileDto에서 엔티티 생성 시 storedName 전달 구현

* move: merge 충돌 방지 위한 application.yml 삭제

* 회원 정보 수정 닉네임 / 패스워드 분리 (#109)

* fix: 삭제된 yml 파일 추가

* Revert "fix: 삭제된 yml 파일 추가"

This reverts commit d24deef0a0bdab526b7e34ccd39a76fcfda8ec4c.

* fix: 삭제된 yml 파일 추가

* refactor: 비밀번호 변경, 닉네임 변경 로직 둘로 분리

* refactor: dto 파일 수정

* test: 비밀번호, 닉네임 수정 단위 테스트 작성

* 리프레시 토큰 추가 구현 및 전체적인 jwt 로직 수정 (#114)

* fix: 암호화 된 비밀번호가 제약조건 때문에 db에 저장안되는 오류 해결

* feat: authenticationManager를 Bean으로 등록

* refactor: 반환되는 User 객체가 이메일, 비밀번호, 권한 정보를 포함하게 변경

* refactor: JwtFilter 에러 케이스 추가

* feat: RefreshToken 생성 로직 추가 및 리팩토링

* fix: dto 클래스에 accessToken, refreshToken 두개의 필드 분리

* feat: jwt yml 설정 정보 추가

* refactor: changePassword 메서드 제거

* refactor: refreshToken 만료 1주 -> 2주로 변경

* fix: yml 파일 config 폴더 내부로 이동

* AWS S3를 이용한 파일 업로드 기능 구현 (#118)

* chore: AWS S3 dependecy 추가

* chore: S3 관련 설정 추가

* chore: S3 관련 dependency를 Spring Cloud AWS에서 AWS SDK for Java로 변경

* feat: S3 설정 클래스 추가

* chore: 불필요한 설정 제거

* refactor: File 엔티티 내 필드명 수정

uploadName -> originalName

* feat: AWS S3를 이용한 이미지 업로드 기능 구현

* feat: 다중 이미지 업로드 기능 구현

* chore: 파일 최대 용량 설정

* refactor: 다중 이미지 업로드 메서드명 수정

* Delete src/main/resources/application.yml

* refactor: config 파일 최신화

* solve conflict

* 게시글 작성 시 이미지 업로드 기능 구현 (#132)

* chore: config 업데이트

* refactor: 다중 업로드 기능 불필요하다고 결정됨으로써 해당 코드 제거

* chore: 기존에 작성된 FileService 클래스 제거

* refactor: 클래스 이름 수정 및 메서드 추출

* style: 불필요한 코드 제거

* refactor: FileDto 클래스에서 불필요한 코드 제거 및 필드 주입 수정

* refactor: JPEG의 확장자를 jpg에서 jpeg로 변경

* feat: 게시글 작성 시 이미지 엔티티와 매핑

* 발송된 숫자코드 검증 기능 구현 (#107)

* feat: 30분 유효시간 설정

* refactor: dto 이름 수정

* feat: 발송 코드가 일치하는지 검증 기능 구현

* feat: 이메일 검증에 필요한 dto 클래스 추가

* feat: 에러 코드 추가

* refactor: validator 분리 및 에러코드 추가

* feat: swagger 코드 추가

* refactor: 리뷰 내용 리팩토링

* fix: yml 파일 config 폴더 내부로 이동

* refactor: mail패키지를 global에서 module로 이동 및 의미를 더 명확하게 하기 위해 authmail로 이름 변경

* refactor: 메서드 camel case 형식에 맞게 수정

* refactor: 회원 정보에서 ip 제거 (#138)

* 엑세스 토큰 만료 시 리프레시 토큰으로 액세스 토큰 재발급 하는 기능 추가 (#124)

* feat: 유효한 자격증명을 제공하지 않을 때 401 에러 리턴하는 기능 구현

* feat: 유효한 권한이 존재하지 않는 경우 403 에러 리턴하는 기능 구현

* feat: 401, 403에러 exception handling

* refactor: 토큰 필드를 TokenDto를 생성하여 따로 분리

* feat: accessToken 만료시 refreshToken 재발급 하는 기능 구현

* feat: 에러 코드 추가

* refactor: yml 파일 config로 이동

* refactor: JwtTokenProvider 에서 AuthenticationManager 삭제하여 순환 참조 에러 해결

* JwtTokenProvider 테스트 코드 작성 및 예외 테스트 코드 작성 (#128)

* fix: 오류 나는 코드 주석 처리 및 수정

* feat: payload 조회 기능 구현 및 authentication null 체크하는 메서드 추가

* fix: file 테스트 수정

* test: 토큰 테스트 코드 작성

* refacotor: 불필요한 코드 제거

* todo 주석 추가

* refactor:불필요한 코드 삭제

* fix: IllegalArgumentException 다른 amazon.awssdk import문 제거!!!!!

* 게시글 단건, 전체 조회 API 응답에 누락된 필드 추가  (#135)

* feat: 응답 DTO에 게시글 추천수 필드 추가

* feat: 응답 DTO에 게시글 작성일, 작성자 필드 추가

* feat: 응답 DTO에 게시글 추천, 북마크 여부 필드 추가

* feat: likes가 null일 경우 0 반환하는 로직 추가

* refactor: 메서드 파라미터로 memberId 전달

* 회원 정보 조회 로직 수정 (#130)

* refactor: merge

* feat: 토큰 생성할 때 grantType 부여

* Todo: jwt 토큰을 추출하는 공통 로직 추가 예정

* 게시글 작성 시 이미지 업로드 기능 구현 (#132)

* chore: config 업데이트

* refactor: 다중 업로드 기능 불필요하다고 결정됨으로써 해당 코드 제거

* chore: 기존에 작성된 FileService 클래스 제거

* refactor: 클래스 이름 수정 및 메서드 추출

* style: 불필요한 코드 제거

* refactor: FileDto 클래스에서 불필요한 코드 제거 및 필드 주입 수정

* refactor: JPEG의 확장자를 jpg에서 jpeg로 변경

* feat: 게시글 작성 시 이미지 엔티티와 매핑

* 발송된 숫자코드 검증 기능 구현 (#107)

* feat: 30분 유효시간 설정

* refactor: dto 이름 수정

* feat: 발송 코드가 일치하는지 검증 기능 구현

* feat: 이메일 검증에 필요한 dto 클래스 추가

* feat: 에러 코드 추가

* refactor: validator 분리 및 에러코드 추가

* feat: swagger 코드 추가

* refactor: 리뷰 내용 리팩토링

* fix: yml 파일 config 폴더 내부로 이동

* refactor: mail패키지를 global에서 module로 이동 및 의미를 더 명확하게 하기 위해 authmail로 이름 변경

* refactor: 메서드 camel case 형식에 맞게 수정

* refactor: 회원 정보에서 ip 제거 (#138)

* 엑세스 토큰 만료 시 리프레시 토큰으로 액세스 토큰 재발급 하는 기능 추가 (#124)

* feat: 유효한 자격증명을 제공하지 않을 때 401 에러 리턴하는 기능 구현

* feat: 유효한 권한이 존재하지 않는 경우 403 에러 리턴하는 기능 구현

* feat: 401, 403에러 exception handling

* refactor: 토큰 필드를 TokenDto를 생성하여 따로 분리

* feat: accessToken 만료시 refreshToken 재발급 하는 기능 구현

* feat: 에러 코드 추가

* refactor: yml 파일 config로 이동

* refactor: JwtTokenProvider 에서 AuthenticationManager 삭제하여 순환 참조 에러 해결

* JwtTokenProvider 테스트 코드 작성 및 예외 테스트 코드 작성 (#128)

* fix: 오류 나는 코드 주석 처리 및 수정

* feat: payload 조회 기능 구현 및 authentication null 체크하는 메서드 추가

* fix: file 테스트 수정

* test: 토큰 테스트 코드 작성

* refacotor: 불필요한 코드 제거

* todo 주석 추가

* refactor:불필요한 코드 삭제

* fix: IllegalArgumentException 다른 amazon.awssdk import문 제거!!!!!

* refactor: merge

* Todo: jwt 토큰을 추출하는 공통 로직 추가 예정

---------

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

* 회원 정보 수정, 삭제 리팩토링 (#134)

* refactor: merge

* feat: 토큰 생성할 때 grantType 부여

* Todo: jwt 토큰을 추출하는 공통 로직 추가 예정

* refactor: 회원 정보 수정, 회원 삭제 memberId -> 토큰으로 리팩토링

* refactor: 회원 정보 조회할 때 memberId 값 추가

* refactor: 회원 이메일을 jwt 토큰에서 추출하는 중복 코드를 메서드로 변경

* refactor: pr 내용 반영해서 코드 리팩토링

* refactor: merge과정에서 삭제된 메서드 추가

* 답글 작성 기능 구현 완료 (#133)

* feat: Comment 엔티티에 답글 관계 구현을 위한 부모 댓글 참조 필드 구현

* feat: 답글 RequestDto 구현

* feat: 답글 작성 기능 및 예외 처리 구현

* style: optimize imports 적용

* 이메일 인증 단위 테스트 및 예외 처리 단위 테스트 구현 (#141)

* refactor: dto에 어노테이션 추가

* refactor: member, post 테스트 로직 오류 때문에 임시 주석처리

* test: 인증 메일 단위 테스트, 에외 처리 단위 테스트 작성

* 로그아웃 기능 구현 (#144)

* chore:

* feat: 로그 아웃 된 사용자가 글을 쓸때를 막는 에러코드 추가

* feat: 로그아웃 될 때 Redis에 저장된 토큰값을 제거하는 기능 구현

* feat: 글을 작성할 때 Redis에 저장된 토큰 값이 없다면, 에러를 던지는 기능 추가

* feat: 로그인을 하지 않은 사용자가 로그아웃을 시도할 때 에러를 던지는 기능 추가

* 답글 depth를 1로 제한하는 기능 구현 완료 (#145)

* feat: 답글 depth 에러 코드 추가

* feat: 답글에 depth 제한 기능 구현

* test: 답글 기능, 예외 단위 테스트 작성 및 통과 완료, 기존 테스트 통과 확인

* chore: redis 호스트 분리

* refactor: 기존 id를 통해 회원을 조회하는 로직을 jwt를 사용해 조회하도록 수정

* refactor: 메서드 분리 등 코드 개선

* 북마크 API URL 개선 완료 (#148)

* feat: 북마크 삭제 권한 없음 에러 코드 추가

* feat: BookmarkRequestDto 에서 memberId 필드 삭제

* feat: 북마크 기능 사용 시 memberId 대신 현재 인증된 사용자의 정보 조회하도록 구현

* feat: BookmarkRequestDto 의 불필요한 postId 필드 제거

* feat: 북마크 삭제 API postId 기반 작동 구현 완료

* test: 변경된 북마크 개선점 기반으로 기존의 전체 테스트코드 수정 및 통과 완료

* style: optimze imports 적용 완료

* refactor: 불필요한 BookmarkRequestDto 클래스 삭제

* test: 변경점으로 인한 테스트 코드 수정 및 전체 통과 완료

* 댓글 기능 memberId 사용 -> JWT 사용으로 수정 (#150)

* feat: 댓글 기능에서 memberId 삭제 및 JWT로 로그인한 사용자 이메일 기반으로 멤버 조회하도록 변경

* refactor: getCurrentMember 메서드 SecurityUtils 클래스로 분리

* feat: 댓글 삭제 및 수정 요청 시 본인이 작성한 댓글인지 검증 구현

* refactor: CommentCreateRequest 내 불필요한 memberId 필드 제거

* test: 댓글 기능 변경점에 따라 테스트 코드 수정 및 전체 통과 완료

* test: 댓글 수정, 삭제 시 권한 없음 예외 테스트코드 작성 및 통과

* feat: SecurityUtils 클래스 기본 생성자 접근 방지 구현

* fix: mergy 후 충돌 재수정

* refactor: 불필요한 파라미터 삭제

* style: BookmarkService의 save 메서드명 createBookmard로 수정 (컨벤션)

* 멤버 단위 테스트, 예외 처리 테스트 추가 (#157)

* refactor: merge

* fix: dto 파일 삭제

* refactor: 메일 dto에 기본 생성자 추가

* test: MemberService 단위 테스트, 예외 테스트 추가

* fix: 서비스 로직 merge

* fix: import 오류 수정

* 투표 생성 기능 단위 테스트 작성 (#159)

* fix: BookmarkServiceTest 패키지 위치로 인해 발생한 컴파일에러 해결

* test: memberId를 통해 회원을 조회하던 방식에서 jwt로 변경됨에 따라 테스트 코드 수정

* test: 비회원 투표 기능 단위 테스트

* test: 투표 생성 시 게시글 정보가 없는 경우 단위 테스트

* test: 투표 생성 시 선택지 정보가 없는 경우 단위 테스트

* test: 투표 생성 시 회원 정보가 없는 경우 단위 테스트

* test: 투표 생성 시 선택지가 다른 게시글의 선택지인 경우 단위 테스트

* test: 투표 생성 시 게시글 마감 기한이 만료된 경우 단위 테스트

* test: 투표 생성 시 이미 투표한 기록이 있는 게시글인 경우 단위 테스트

* 투표 현황 조회 및 투표 수정 기능에 대한 단위 테스트 작성 (#162)

* test: 투표 현황 조회 시 게시글 정보가 없는 경우 단위 테스트

* test: 투표 수정 시 게시글 정보가 없는 경우 단위 테스트

* test: 투표 수정 시 선택지 정보가 없는 경우 단위 테스트

* test: 투표 수정 시 회원 정보가 없는 경우 단위 테스트

* test: 투표 수정 시 회원 정보가 없는 경우 단위 테스트

* test: 투표 수정 시 게시글의 카테고리가 캐주얼인 경우 단위 테스트

* 게시글 기능 memberId 대신에 jwt를 사용하도록 수정 (#153)

* feat: SecurityUtils 클래스 생성하여 로그인한 회원의 이메일을 가져오는 기능 추가

* refactor: RedisConfigTest 수정

* feat: jwt를 사용하여 게시글 작성 및 삭제 기능 추가

* feat: 게시글 추천 상태가 0일때 추천 취소를 누를 경우 에러 코드 추가

* feat: jwt를 사용하여 게시글 추천, 추천 취소 기능 수정

* refactor: postId로 포스트를 찾는 로직을 메서드화 해서 중복 제거

* 댓글 기능 사용 시 해당 댓글이 URL의 게시글 id와 매칭 여부 검증 로직 추가 완료 (#164)

* refactor: getCurrentMember() 메서드 전역 static 메서드 사용하도록 수정

* feat: 해당 게시글에 존재하지 않는 댓글 예외 구현

* style: optimze imports 적용 완료

* test: 예외 추가에 따른 테스트 코드 추가 작성 및 전체 테스트 코드 통과 완료

* feat: 게시글 작성 시 storedFileName이 Null일 경우에 대한 로직 구현 (#167)

* refactor: 게시글 조회 시 응답 DTO 이름 변경 및 불필요한 파라미터 제거 (#169)

* test: 단위 테스트 및 예외 테스트 추가 (#161)

* 회원가입, 로그인 시 RequestBody, Response 수정 (#176)

* refactor: 유저가 db에 등록될 때 자동으로 USER 값이 들어가도록 설정

* refactor: 로그인 했을 때 토큰 정보만 클라이언트에 전달하도록 변경

* test: 로직 변경에 따른 테스트 코드 수정

* 공지사항 작성 기능 구현 완료 (#172)

* move: Notice 클래스 패키지 생성 및 이동

* feat: NoticeRepository 클래스 작성

* feat: Notice 엔티티 어노테이션 추가

* feat: 공지사항 작성 기능 구현 및 예외처리 구현

* feat: NoticeResponse에 content 반환 추가

* style: 불필요한 공백 제거

* test: 공지사항 작성 및 관련 예외 테스트 코드 작성 및 통과 완료

* feat: 전체 공지 조회, 단건 공지 조회 기능 구현 및 예외 처리 구현

* test: 전체 공지사항 조회, 단건 공지사항 조회 구현에 따른 테스트 코드 추가 작성

* style: optimze imports 적용

* fix: SecurityContextHolder로 인한 다른 테스트와 충돌 일어나는 에러 수정

* feat: 불필요한 생성자 어노테이션 삭제

* feat: 제약 조건을 DTO에서 검증하도록 구현 및 핸들링 클래스 작성

* 공지사항 목록 조회, 특정 공지사항 조회 기능 구현 완료 (#174)

* move: Notice 클래스 패키지 생성 및 이동

* feat: NoticeRepository 클래스 작성

* feat: Notice 엔티티 어노테이션 추가

* feat: 공지사항 작성 기능 구현 및 예외처리 구현

* feat: NoticeResponse에 content 반환 추가

* style: 불필요한 공백 제거

* test: 공지사항 작성 및 관련 예외 테스트 코드 작성 및 통과 완료

* 게시글 조회 API에 조회수 증가 로직 추가 (#181)

* refactor: memberId로 조회하던 기존 로직을 JWT를 사용하여 조회하도록 수정

* fix: Authorization 필수 여부를 false로 수정

* feat: 게시글 조회 API에 조회수 증가 로직 추가

* refactor: findAll 메서드의 readOnly를 true로 지정함으로써 조회용 메서드임을 강조

* 스웨거 헤더 값으로 토큰 추가  (#182)

* feat: swagger 문서에 토큰 헤더값 추가

* fix: multipart file 스웨거 설정 추가

* fix: swagger 문서에 날짜 정보가 example 대로 안들어가던 오류 수정

* fix: afterEach로 테스트 종료 시 SecurityContextHolder context 제거

* test: global 폴더에 위치한 테스트 코드 삭제

* refactor: 파일 어노테이션 RequestParam에서 RequestPart로 변경

* 회원 닉네임 중복 검증 API 추가 및 테스트 코드 작성 (#178)

* feat: 회원 닉네임 중복 검증 기능 구현

* test: 회원 닉네임 중복 검증 기능 단위 테스트 추가

* refactor: 파라미터에 닉네임 정보를 넣어 중복 체크하도록 변경

* test: 공지사항 생성 실패 테스트 스프링 통합 테스트로 변경

* 게시글, 댓글 조회 API 페이징, 정렬 처리 (#191)

* chore: 설정 업데이트

* feat: 게시글 목록 조회 페이징 처리

* test: PostServiceTest 임시 주석 처리

* feat: 댓글 목록 조회 API 페이징 처리

* chore: 기본 페이지 사이즈 설정 추가

* refactor: 댓글 목록 조회 메서드의 반환 타입을 List<CommentResponse>에서 Page<CommentResponse>로 수정

* refactor: 게시글 목록 조회 메서드의 반환 타입을 List<PostResponse>에서 Page<PostResponse>로 수정

* refactor: PostRequest에서 memberId 제거

* 시큐리티 인증 URL 추가 및 에러 처리 추가 (#199)

* refactor: 이메일 인증 에러코드 HttpStatus 변경

* refactor: JwtTokenProvider 코드 리팩토링 및 에러 코드 추가

* refactor: 테스트 코드 예외 처리할 때 메세지 String -> ErrorCode 형태로 수정

* refactor: 닉네임, 비밀번호 변경할 때 현재 값과 동일할 때 에러 메세지 추가

* refactor: 회원 가입 시 중복 이메일, 중복 닉네임 예외 처리

* refactor: 로그인 상태가 아닐 때 에러 메세지를 던지도록 수정

* refactor: 유효한 토큰이 아닐 때 클라이언트에 에러 메세지를 보내주도록 설정

* feat: 유효하지 않은 토큰인 경우 에러 코드 추가

* feat: 인증이 필요하지 않은 API URL 설정

* fix: swagger 문서에서 이중 배열로 데이터가 나타나던 문제 해결

* refactor: likeCount -> likesCount로 필드 이름 통일

* feat: 미인증 상태일 때 클라이언트에 json 형태로 httpStatus와 message를 보여주는 기능 추가

* refactor: 리뷰 내용 반영하여 에러 코드 이름 수정

* 회원가입 시 프로필 사진 선택 기능 구현 완료 (#207)

* feat: 회원가입 시 프로필 사진 선택 가능하게 구현

* test: 기능 변경에 따른 기존 테스트 코드 변경

* feat: 게시글 응답 dto에 투표 여부 추가 (#198)

* 인기 댓글 조회 기능 구현 (#206)

* chore: HTTP 메서드가 GET인 댓글 관련 모든 URL 허용

* feat: 인기 댓글 목록 조회 기능 구현

* feat: 비회원과 회원 각각의 경우에 따른 조회 로직 구분, 응답 DTO에 myLike 필드 추가

* refactor: api 테스트용으로 사용하던 매직 넘버를 상수로 수정

* 인기 게시글 조회 기능 구현 (#203)

* feat: 인기 게시글 조회 기능 구현

* style: 불필요한 개행 제거

* fix: PostService update

* fix: PostController update

* test: 시큐리티 인증 기능 추가로 인한 기존 공지 테스트 코드 수정

* feat: 게시글 응답 시 balanceOptionId 반환 구현 (#195)

* Create ci.yml

* Update ci.yml

* init ci.yml

* fix: CommentServiceTest

* Embedded Redis 적용 (#218)

* chore: embedded redis 설정 추가

* chore: 내장 redis를 profile이 local일때만 동작하도록 설정

* fix: 임시로 실패하는 로그아웃 단위 테스트 주석 처리

* refactor: 로그 아웃 테스트 코드 수정

* 비밀번호 찾기 기능 구현 (#205)

* feat: 임시 비밀번호 발급 기능 구현

* feat: 임시 비밀번호 발급 후 데이터베이스에 저장된 비밀번호 변경

* feat: 이메일 발송이 실패한 경우 에러 코드 추가

* test: 임시 비밀번호 발송 후 회원 비밀번호 단위 테스트 추가

* refactor: 리뷰 받은 내용들 반영하여 수정

* Update ci.yml

* Update ErrorCode.java

* NoticeControllerTest 임시 주석 처리

* 공지사항 수정, 삭제 기능, 파일 첨부 구현 완료 (#186)

* feat: 공지사항 수정, 삭제 에러 코드 추가 및 403번 에러로 변경

* feat: 공지사항 수정, 삭제 기능 구현

* test: 공지사항 수정, 삭제 기능에 대한 테스트 코드 작성 및 통과 완료

* feat: 공지사항 파일 첨부 구현

* fix: 공지사항 파일 첨부 시 Response에서 파일 목록이 null로 뜨던 에러 수정

* test: 공지사항 기능 추가 구현에 대한 테스트 코드 수정 및 추가 작성 완료

* test: 테스트 주석 처리

* 토큰 값에 memberId 추가 및 기타 예외 처리  (#219)

* feat: 회원 가입 시 중복된 닉네임, 중복된 이메일 에러 처리 추가

* feat: 토큰 claims 정보에 memberId 추가

* feat: 파일 업로드 URL 시큐리티 접근 허용

* refactor: Notice Controller 테스트 주석 처리

* refactor: 누락된 코드 추가

---------

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

* Create cd.yml

* Update cd.yml

* Update cd.yml

* Update cd.yml

* Update cd.yml

* Update cd.yml

* Update cd.yml

* feat: 선택지별 득표 수, 게시글 전체 투표 수 반환 구현

* Update cd.yml

* feat: 게시글 전체 투표 수 필드명 변경

* 게시글 응답 필드(이미지 url) 변경 (#211)

* refactor: 파일 업로드 경로 변경 및 상수화

* refactor: 게시글 조회 시 이미지 이름 대신 URL을 응답하도록 수정

* Bean Validation 사용 시 API 에러 메세지 처리 구현 (#222)

* feat: 회원가입 할 때 입력 유효성 검증 추가

* feat: 메일 인증 서비스 유효성 검사 추가

* feat: 게시글 작성 유효성 검사 추가

* feat: 밸런스 옵션, 게시글 작성시 BalanceOption이 비어있는 경우 유효성 검사

* feat: 투표 생성 유효성 검사

* refactor: bookmark -> bookmarks로 url 수정

* refactor: "/posts" url 삭제

* refactor: @Valid 어노테이션 추가 및 파일 업로드 URL 시큐리티 허용

* refactor: Notice Controller 테스트 주석 처리

---------

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

* 게시글 검색, 태그 검색 기능 구현  (#233)

* feat: 게시글 제목 검색 기능 구현

* feat: 게시글 태그 검색 기능 구현

* refactor: pageable 파라미터 제거

* test: 게시글 제목 검색, 태그 검색 단위 테스트 작성

* 마이페이지 본인이 작성한 게시글, 댓글 조회 기능 구현 (#209)

* feat: 마이페이지 - 본인이 작성한 게시글 조회 기능 구현 완료

* feat: 마이페이지 - 본인이 작성한 댓글 조회 기능 구현 완료

* 마이페이지 본인이 투표한 게시글, 즐겨찾기한 게시글 조회 기능 구현 (#214)

* feat: 마이페이지 - 본인이 작성한 게시글 조회 기능 구현 완료

* feat: 마이페이지 - 본인이 작성한 댓글 조회 기능 구현 완료

* feat: 마이페이지 - 본인이 투표한 게시글 조회 기능 구현 완료

* fix: 페이지네이션 적용 안되던 문제 해결

* feat: 마이페이지 - 본인이 북마크한 게시글 조회 기능 구현 완료

* style: 메서드 네이밍 수정

* feat: 마이페이지 컨트롤러 누락된 어노테이션 추가

* fix: 머지 후 conflicts 해결

* feat: totalVoteCount -> totalVotesCount 필드명 수정

* 게시글 응답 시 투표한 선택지인 selectedOptionId 반환 구현 완료 (#228)

* feat: 게시글 응답 시 투표한 선택지인 selectedOptionId 반환 구현

* feat: 비회원 게시글 조회 가능 및 selectedOptionId null 반환 구현

* 게시글 및 댓글 응답시 사용자 프로필 이미지 반환 구현 완료 (#230)

* feat: 게시글 응답 시 게시글 작성자의 프로필 이미지 반환 구현

* feat: 댓글 응답 시 모든 댓글 작성자의 프로필 이미지 반환 구현

* 댓글 응답시 부모 댓글(원 댓글) id 응답 추가 구현 완료 (#232)

* feat: 게시글 응답 시 게시글 작성자의 프로필 이미지 반환 구현

* feat: 댓글 응답 시 모든 댓글 작성자의 프로필 이미지 반환 구현

* feat: 댓글 응답 시 부모 댓글 id 반환 구현

* fix: merge 후 conflicts 수정

* fix: PostRequest, PostResponse에서 리스트 형태로 된 Schema 삭제

* 회원 이미지 수정 기능 추가 (#226)

* feat: 선택지별 득표 수, 게시글 전체 투표 수 반환 구현

* dev -> main (#223)

* feat: Tag, Post, PostTag 엔티티 간 연관관계 매핑 (#20)

* feat: 신고 카테고리 항목 추가

* Update PULL_REQUEST_TEMPLATE.md

* feat: filetype enum값 추가

* feat: entity에 검증 어노테이션 추가 (#11)

* feat: entity에 검증 어노테이션 추가

* feat: entity에 검증 어노테이션 추가

* style: 업로드 파일명, 서버 관리 파일명의 필드명 변경

---------

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

* chore: 패키지 구조 개선

* Revert "chore: 패키지 구조 개선"

This reverts commit f27a0d95080e705a953d94cfb7ef365a6a1f49cb.

* chore: 패키지 구조 개선

* feat: Tag, Post, PostTag 엔티티 간 연관관계 매핑

---------

Co-authored-by: Hanjaemo <[email protected]>
Co-authored-by: Hanjaemo <[email protected]>
Co-authored-by: gywns0417 <[email protected]>

* feat: 검증 애노테이션 추가 (#26)

* feat: 엔티티에 검증 애노테이션 추가

* style: 불필요한 import문 제거

* feat: 댓글 리포지토리 구현

* feat: 댓글 DTO 클래스 구현

* feat: 임시 Member, Post 리포지토리 구현

* feat: 댓글 리포지토리 재구현

* feat: 댓글 Service 클래스 구현

* feat: 댓글 Controller 클래스 일부 구현

* 게시글 작성 기능 구현 (#28)

* feat: 신고 카테고리 항목 추가

* Update PULL_REQUEST_TEMPLATE.md

* feat: filetype enum값 추가

* feat: entity에 검증 어노테이션 추가 (#11)

* feat: entity에 검증 어노테이션 추가

* feat: entity에 검증 어노테이션 추가

* style: 업로드 파일명, 서버 관리 파일명의 필드명 변경

---------

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

* chore: 패키지 구조 개선

* Revert "chore: 패키지 구조 개선"

This reverts commit f27a0d95080e705a953d94cfb7ef365a6a1f49cb.

* chore: 패키지 구조 개선

* commit test

* dto

* feat: 커밋 과정에서 변경사항 추가

* feat: getter 추가

* feat: dto 클래스 추가

* refactor: dto 구조 수정

* refactor: entity 생성자 추가

* feat: 게시글 작성 기능 추가

* test: 게시글 작성 기능 테스트

* feat: FileDto 클래스 추가

* test: fileDto 추가

* refactor: 불필요한 코드 제거

* fix: JSON 매핑 오류 해결 (#33)

* fix: tag <-> TagPost 영속성 전이 추가

* feat: 게시글 전체 조회 기능 추가 (#34)

---------

Co-authored-by: Hanjaemo <[email protected]>
Co-authored-by: Hanjaemo <[email protected]>
Co-authored-by: gywns0417 <[email protected]>

* refactor: 댓글 Service 코드 가독성 향상

* move: 불필요한 댓글 Request Dto 삭제

* refactor: 댓글 API 엔드포인트 수정

* feat: Post 엔티티 어노테이션 추가 구현

* fix: Post 엔티티 Category, viewStatus 필드 임시 @NotNull 해제

쿼리 테스트를 위해 미구현 상태인 Post 엔티티 필드 어노테이션을 일부 수정했습니다.

* feat: Member 엔티티 @Getter 임시 추가

* feat: BalanceOptionRepository 임시 구현

* feat: BalanceOption 엔티티 @Getter 임시 추가

* feat: CommentCreateRequest 클래스에 balanceOptionId 필드 추가

* fix: CommentResponse 클래스에 likeCount() 임시 비활성화

테스트를 위해 현재 미구현 상태인 CommentLike 관련 코드를 임시 비활성화 했습니다.(Null값)

* feat: CommentService 추가 구현 완료

BalanceOption 검증 코드(추후 BalanceOption 구현 완료 시 사용)를 추가 했습니다.

* refactor: 댓글 컨트롤러 createComment() 메서드 수정

댓글 API 엔드포인트를 설계에 맞게 수정함에 따라 관련 사항들을 수정했습니다.

* fix: 댓글 API 사용시 401 에러 해결

localhost:8080 접속 시 로그인이 필요 없도록 임시로 수정했습니다.

* 게시글 CRUD 기능 구현 (#39)

* feat: 신고 카테고리 항목 추가

* Update PULL_REQUEST_TEMPLATE.md

* feat: filetype enum값 추가

* feat: entity에 검증 어노테이션 추가 (#11)

* feat: entity에 검증 어노테이션 추가

* feat: entity에 검증 어노테이션 추가

* style: 업로드 파일명, 서버 관리 파일명의 필드명 변경

---------

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

* chore: 패키지 구조 개선

* Revert "chore: 패키지 구조 개선"

This reverts commit f27a0d95080e705a953d94cfb7ef365a6a1f49cb.

* chore: 패키지 구조 개선

* commit test

* dto

* feat: 커밋 과정에서 변경사항 추가

* feat: getter 추가

* feat: dto 클래스 추가

* refactor: dto 구조 수정

* refactor: entity 생성자 추가

* feat: 게시글 작성 기능 추가

* test: 게시글 작성 기능 테스트

* feat: FileDto 클래스 추가

* test: fileDto 추가

* refactor: 불필요한 코드 제거

* fix: JSON 매핑 오류 해결 (#33)

* fix: tag <-> TagPost 영속성 전이 추가

* feat: 게시글 전체 조회 기능 추가 (#34)

* feat: 게시글 단건 조회 기능 추가

* feat: 게시글 삭제 기능 추가

* fix: 생성자 private으로 접근 제어

* feat: MemberRepository 클래스 추가

* refactor: 리뷰받은 내용들 수정

* test: 게시글 CRUD 테스트 코드 작성

* refactor: dto에서 views, viewstatus 제거

---------

Co-authored-by: Hanjaemo <[email protected]>
Co-authored-by: Hanjaemo <[email protected]>
Co-authored-by: gywns0417 <[email protected]>

* feat: 회원 투표 기능 구현 (#32)

* chore: Spring Security 라이브러리 임시 주석 처리

* feat: 회원 투표 기능 구현

* test: 투표 생성 기능 단위 테스트

* feat: 선택지 투표 API 컨트롤러에 응답 메시지 추가

* feat: VoteController의 vote 메서드에 201 응답 코드 추가

* test: Mockito를 사용해서 테스트 코드 작성

* feat: 투표 현황 조회 기능 구현

* test: 투표 현황 조회 기능 단위 테스트

* feat: 투표 변경 기능 구현

* refactor: Post의 category 필드명 수정

* refactor: VoteRequest에 @Builder 추가

* test: 회원 투표 수정 기능 단위 테스트

* refactor: 빌더 사용 및 메서드 위치 수정

* refactor: 기본값 설정 방법을 @PrePersist 사용 방식으로 변경

* refactor: 테스트 코드에서 EntityManager 주입 로직 제거

* refactor: 조회 메서드에 @Transactional(readOnly = true) 추가

* style: import문 압축

* feat: 조회한 선택지가 게시글에 포함되지 않은 게시글인 경우 예외 발생

* fix: 댓글 수정 시 json으로 데이터 전송되지 않던 에러 해결

* feat: 댓글 작성 시 postId를 API 주소에서 가져오게 기능 변경

* feat: 댓글 수정 성공 시 ResponseEntity 전달하도록 구현

* style: 현재 사용하지 않는 BalanceOption 검증 기능 주석 처리

* test: 댓글 CRUD 테스트 코드 작성 및 통과 완료

* style: 불필요한 import문 제거

* feat: 댓글 CRUD 응답 시 댓글 작성 일시, 댓글 최종 수정 일시 반환 구현

* refactor: 메서드 단위로 트랜잭션 구현

* refactor: dev 브랜치에 맞게 클래스 수정

* fix: voteCount() 메서드 문법 오류 수정

* refactor: dev 브랜치에 맞게 클레스 수정

* fix: @NotNull import 미포함 수정 완료

* fix: 중복 MemberRepository 클래스 삭제 완료

* 투표 기능 예외 처리 (#49)

* feat: 투표 생성 시 존재하지 않는 데이터를 요구한 경우 예외 처리

* feat: 중복 투표를 진행하는 경우 예외 처리

* feat: 투표가 이미 종료된 게시글에 투표하려는 경우 예외 처리

* style: 로직 순서 변경

* feat: 존재하지 않는 데이터 요청 시 예외 처리

* feat: 카테고리가 'CASUAL'인 게시글에서 투표를 수정하려는 경우 예외 처리

* feat: 해당 게시글에서 투표한 기록이 없을 때 투표를 수정하려는 경우 예외 처리

* 게시글 추천 기능 구현 (#54)

* feat: 게시글 추천 기능 구현

* test: 게시글의 마감기한, 회원의 투표 정보 필드 추가

* test: 게시글 좋아요 기능 단위 테스트

* test: 게시글 추천 시 해당 게시글이 존재하지 않는 경우 예외 처리에 대한 단위 테스트

* test: 게시글 중복 추천 시 예외 처리에 대한 단위 테스트

* style: 불필요한 메서드 제거

* 댓글 추천 기능 구현 (#55)

* feat: 댓글 추천 기능 구현

* test: 댓글 추천 기능 단위 테스트

* test: 댓글 중복 추천 시 예외 처리 단위 테스트

* style: 각 코드의 구분자를 세미콜론에서 쉼표로 변경

* 댓글 기능 예외 처리 구현

* feat: 댓글 CRUD 예외 처리 구현

* style: TODO-Comment-BalanceOption 연관 필요

* refactor: 댓글 컨트롤러 가독성 개선

* feat: PR 리뷰에 따른 코드 수정

* test: 댓글 예외 처리 단위 테스트 작성 및 통과 완료

* fix: { 문법 오류 수정

* 회원 정보 조회 기능 구현 (#69)

* feat: jwt 라이브러리 추가

* fix: merge 과정에서 충돌 이슈 제거

* feat: 토큰 생성, 검증을 하는 TokenProvider 클래스 생성

* feat: SecurityConfig 클래스 추가

* feat: Jwt Filter 적용

* feat: UserDetailService 추가 및 Member에 메서드 추가

* feat: 로그인, 회원가입 시 필요한 dto 클래스 생성

* feat: 유저 회원가입 기능 구현

* feat: 유저 로그인 기능 구현

* feat: 공통 Exception 클래스들 추가

* refactor: LoginSuccessDto 추가

* feat: LoginSuccessDto 추가

* feat: 회원 정보 조회 기능 추가

* feat: 회원 정보 조회 기능 추가

* fix: securityConfig에서 posts url 허용

* feat: 회원 전체 목록 기능 구현

* feat: ErrorCode 적용

* feat: 단위 테스트 작성

* fix: postCount, postLike 값이 null이 들어가는 오류 수정

* refactor: 불필요한 코드 제거

* feat: 회원 로그인, 조회 예외 처리

* fix: signWith() deprecated 수정

* fix: errorCode 중복 네이밍 제거

* 회원 정보 수정 기능 구현  (#76)

* feat: jwt 라이브러리 추가

* fix: merge 과정에서 충돌 이슈 제거

* feat: 토큰 생성, 검증을 하는 TokenProvider 클래스 생성

* feat: SecurityConfig 클래스 추가

* feat: Jwt Filter 적용

* feat: UserDetailService 추가 및 Member에 메서드 추가

* feat: 로그인, 회원가입 시 필요한 dto 클래스 생성

* feat: 유저 회원가입 기능 구현

* feat: 유저 로그인 기능 구현

* feat: 공통 Exception 클래스들 추가

* refactor: LoginSuccessDto 추가

* feat: LoginSuccessDto 추가

* feat: 회원 정보 조회 기능 추가

* feat: 회원 정보 조회 기능 추가

* fix: securityConfig에서 posts url 허용

* feat: 회원 전체 목록 기능 구현

* feat: ErrorCode 적용

* feat: 단위 테스트 작성

* fix: postCount, postLike 값이 null이 들어가는 오류 수정

* refactor: 불필요한 코드 제거

* feat: 회원 로그인, 조회 예외 처리

* merge branch

* 댓글 추천 기능 구현 (#55)

* feat: 댓글 추천 기능 구현

* test: 댓글 추천 기능 단위 테스트

* test: 댓글 중복 추천 시 예외 처리 단위 테스트

* style: 각 코드의 구분자를 세미콜론에서 쉼표로 변경

* feat: 유저 정보를 업데이트 하는 메서드 추가

* refactor: merge 충돌 제거

* feat: 회원 정보 수정 기능 구현

* feat: 회원 정보 수정 단위 테스트 추가

* refactor: save 메서드 없이도 변경감지로 업데이트 적용

---------

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

* refactor: PostService 에러코드 수정 (#83)

* 멤버 삭제 기능 구현 (#81)

* feat: 회원 탈퇴 기능 추가

* feat: 에러 코드 추가

* feat: 멤버 삭제 단위 테스트 추가

* 북마크 기능 구현 완료 (#80)

* feat: BookmarkRepository 구현 완료

* feat: BookmarkRequestDto 구현 완료

* feat: 북마크에 게시글 추가 기능 구현 완료

* feat: BookmarkResponseDto 구현 완료

* feat: 북마크에 추가된 게시글 전체 목록 조회 기능 구현 완료

* feat: 게시글 북마크 해제 기능 구현 완료

* fix: 북마크 조회 기능을 특정 멤버의 북마크 조회 기능으로 수정 및 API 주소 변경

* refactor: 북마크 API 주소 수정

* feat: 북마크 기능 예외처리 구현 완료

* style: 사용하지 않는 북마크 에러코드 삭제

* style: TODO 추가-게시글을 삭제하면 북마크, 댓글은 어떤 상태로 남아야 하는가?

* style: TODO 제거

* test: 북마크 기능, 예외 처리 단위 테스트 구현 및 통과 완료

* refactor: 북마크 삭제 API HTTPStatus 변경

* style: 불필요한 import 삭제

* feat: 게시글 추천 취소 기능 구현 (#78)

* feat: 댓글 추천 취소 기능 구현 (#79)

* Spring Swagger 세팅  (#89)

* feat: Swagger config 설정

* refactor: 시큐리티 url 전체 허용

* feat: swagger 작업

* 댓글 조회시 selectedOptionId 반환 기능 구현 완료 (#86)

* feat: 댓글 조회시 해당 댓글이 작성된 balanceOptionId 반환하게 구현

 해당 기능 구현을 위해 Comment<->BalanceOption 엔티티 사이에 연관 관계를 맺어줬습니다. ERD 업데이트가 필요합니다.

* feat: 댓글 조회시 투표 옵션 통해 작성된 balanceOptionId 반환하게 구현 수정

* refactor: balanceOptionId -> selectedOptionId 필드명 변경

* feat: 투표한 사람만 댓글 작성할 수 있도록 예외 처리 구현(회원 한정)

* feat: 북마크 기능 swagger에 추가 (#91)

* test: 댓글 기능 및 예외처리 테스트 재작성 및 통과 완료 (#95)

* 이메일 발송 기능 구현 (#98)

* feat: 메일 서버 의존성 추가

* refactor: 에러 코드 수정

* refactor: mail config 설정

* feat: 메일 발송 yml 설정

* refactor: 이메일 발송 config 수정

* feat: 이메일 발송 dto 클래스 추가

* feat: 이메일 발송 컨트롤러 생성

* feat: 이메일 발송 서비스 생성

* feat: 구글 SMTP 설정

* fix: email dto 삭제

* fix: config 파일 제거

* fix: 메일 컨트롤러, 서비스 코드 수정

* fix: 모든 url에 대해서 시큐리티 허용

* feat: EmailRequest dto 추가

* 파일 업로드 기능 구현 완료 (#97)

* feat: 파일 업로드 기능 구현

* style: 스웨거에 추가하지 않는 필드 스웨거 추가

* feat: 파일 다운로드 기능 구현 완료 (#102)

* Redis 설정 (#104)

* feat: Redis 디펜던시 추가

* feat: yml 환경변수 세팅

* refactor: yml 수정

* feat: config 파일 추가

* feat: service 클래스 추가

* fix: BalanceOption import 추가

* fix: Redis CRUD 단위 테스트 추가

* config 파일 서브 모듈로 관리 (#106)

* chore: application.yml 제거

* chore: config 파일 서브모듈로 관리

* 파일 기능 예외 처리 구현 (#112)

* feat: 파일 기능 예외 처리 구현 완료

* chore: 단일 파일 최대 업로드 크기, 전체 요청 최대 크기 설정

* chore: 파일 업로드 위치 설정 완료

* feat: 파일 기능 Configuration 클래스 구현

* feat: 파일 기능 예외 처리 구현

* style: 불필요한 import 삭제

* refactor: downloadFile에 사용 되는 에러 코드 수정

* feat: FileDto에서 엔티티 생성 시 storedName 전달 구현

* move: merge 충돌 방지 위한 application.yml 삭제

* 회원 정보 수정 닉네임 / 패스워드 분리 (#109)

* fix: 삭제된 yml 파일 추가

* Revert "fix: 삭제된 yml 파일 추가"

This reverts commit d24deef0a0bdab526b7e34ccd39a76fcfda8ec4c.

* fix: 삭제된 yml 파일 추가

* refactor: 비밀번호 변경, 닉네임 변경 로직 둘로 분리

* refactor: dto 파일 수정

* test: 비밀번호, 닉네임 수정 단위 테스트 작성

* 리프레시 토큰 추가 구현 및 전체적인 jwt 로직 수정 (#114)

* fix: 암호화 된 비밀번호가 제약조건 때문에 db에 저장안되는 오류 해결

* feat: authenticationManager를 Bean으로 등록

* refactor: 반환되는 User 객체가 이메일, 비밀번호, 권한 정보를 포함하게 변경

* refactor: JwtFilter 에러 케이스 추가

* feat: RefreshToken 생성 로직 추가 및 리팩토링

* fix: dto 클래스에 accessToken, refreshToken 두개의 필드 분리

* feat: jwt yml 설정 정보 추가

* refactor: changePassword 메서드 제거

* refactor: refreshToken 만료 1주 -> 2주로 변경

* fix: yml 파일 config 폴더 내부로 이동

* AWS S3를 이용한 파일 업로드 기능 구현 (#118)

* chore: AWS S3 dependecy 추가

* chore: S3 관련 설정 추가

* chore: S3 관련 dependency를 Spring Cloud AWS에서 AWS SDK for Java로 변경

* feat: S3 설정 클래스 추가

* chore: 불필요한 설정 제거

* refactor: File 엔티티 내 필드명 수정

uploadName -> originalName

* feat: AWS S3를 이용한 이미지 업로드 기능 구현

* feat: 다중 이미지 업로드 기능 구현

* chore: 파일 최대 용량 설정

* refactor: 다중 이미지 업로드 메서드명 수정

* Delete src/main/resources/application.yml

* refactor: config 파일 최신화

* solve conflict

* 게시글 작성 시 이미지 업로드 기능 구현 (#132)

* chore: config 업데이트

* refactor: 다중 업로드 기능 불필요하다고 결정됨으로써 해당 코드 제거

* chore: 기존에 작성된 FileService 클래스 제거

* refactor: 클래스 이름 수정 및 메서드 추출

* style: 불필요한 코드 제거

* refactor: FileDto 클래스에서 불필요한 코드 제거 및 필드 주입 수정

* refactor: JPEG의 확장자를 jpg에서 jpeg로 변경

* feat: 게시글 작성 시 이미지 엔티티와 매핑

* 발송된 숫자코드 검증 기능 구현 (#107)

* feat: 30분 유효시간 설정

* refactor: dto 이름 수정

* feat: 발송 코드가 일치하는지 검증 기능 구현

* feat: 이메일 검증에 필요한 dto 클래스 추가

* feat: 에러 코드 추가

* refactor: validator 분리 및 에러코드 추가

* feat: swagger 코드 추가

* refactor: 리뷰 내용 리팩토링

* fix: yml 파일 config 폴더 내부로 이동

* refactor: mail패키지를 global에서 module로 이동 및 의미를 더 명확하게 하기 위해 authmail로 이름 변경

* refactor: 메서드 camel case 형식에 맞게 수정

* refactor: 회원 정보에서 ip 제거 (#138)

* 엑세스 토큰 만료 시 리프레시 토큰으로 액세스 토큰 재발급 하는 기능 추가 (#124)

* feat: 유효한 자격증명을 제공하지 않을 때 401 에러 리턴하는 기능 구현

* feat: 유효한 권한이 존재하지 않는 경우 403 에러 리턴하는 기능 구현

* feat: 401, 403에러 exception handling

* refactor: 토큰 필드를 TokenDto를 생성하여 따로 분리

* feat: accessToken 만료시 refreshToken 재발급 하는 기능 구현

* feat: 에러 코드 추가

* refactor: yml 파일 config로 이동

* refactor: JwtTokenProvider 에서 AuthenticationManager 삭제하여 순환 참조 에러 해결

* JwtTokenProvider 테스트 코드 작성 및 예외 테스트 코드 작성 (#128)

* fix: 오류 나는 코드 주석 처리 및 수정

* feat: payload 조회 기능 구현 및 authentication null 체크하는 메서드 추가

* fix: file 테스트 수정

* test: 토큰 테스트 코드 작성

* refacotor: 불필요한 코드 제거

* todo 주석 추가

* refactor:불필요한 코드 삭제

* fix: IllegalArgumentException 다른 amazon.awssdk import문 제거!!!!!

* 게시글 단건, 전체 조회 API 응답에 누락된 필드 추가  (#135)

* feat: 응답 DTO에 게시글 추천수 필드 추가

* feat: 응답 DTO에 게시글 작성일, 작성자 필드 추가

* feat: 응답 DTO에 게시글 추천, 북마크 여부 필드 추가

* feat: likes가 null일 경우 0 반환하는 로직 추가

* refactor: 메서드 파라미터로 memberId 전달

* 회원 정보 조회 로직 수정 (#130)

* refactor: merge

* feat: 토큰 생성할 때 grantType 부여

* Todo: jwt 토큰을 추출하는 공통 로직 추가 예정

* 게시글 작성 시 이미지 업로드 기능 구현 (#132)

* chore: config 업데이트

* refactor: 다중 업로드 기능 불필요하다고 결정됨으로써 해당 코드 제거

* chore: 기존에 작성된 FileService 클래스 제거

* refactor: 클래스 이름 수정 및 메서드 추출

* style: 불필요한 코드 제거

* refactor: FileDto 클래스에서 불필요한 코드 제거 및 필드 주입 수정

* refactor: JPEG의 확장자를 jpg에서 jpeg로 변경

* feat: 게시글 작성 시 이미지 엔티티와 매핑

* 발송된 숫자코드 검증 기능 구현 (#107)

* feat: 30분 유효시간 설정

* refactor: dto 이름 수정

* feat: 발송 코드가 일치하는지 검증 기능 구현

* feat: 이메일 검증에 필요한 dto 클래스 추가

* feat: 에러 코드 추가

* refactor: validator 분리 및 에러코드 추가

* feat: swagger 코드 추가

* refactor: 리뷰 내용 리팩토링

* fix: yml 파일 config 폴더 내부로 이동

* refactor: mail패키지를 global에서 module로 이동 및 의미를 더 명확하게 하기 위해 authmail로 이름 변경

* refactor: 메서드 camel case 형식에 맞게 수정

* refactor: 회원 정보에서 ip 제거 (#138)

* 엑세스 토큰 만료 시 리프레시 토큰으로 액세스 토큰 재발급 하는 기능 추가 (#124)

* feat: 유효한 자격증명을 제공하지 않을 때 401 에러 리턴하는 기능 구현

* feat: 유효한 권한이 존재하지 않는 경우 403 에러 리턴하는 기능 구현

* feat: 401, 403에러 exception handling

* refactor: 토큰 필드를 TokenDto를 생성하여 따로 분리

* feat: accessToken 만료시 refreshToken 재발급 하는 기능 구현

* feat: 에러 코드 추가

* refactor: yml 파일 config로 이동

* refactor: JwtTokenProvider 에서 AuthenticationManager 삭제하여 순환 참조 에러 해결

* JwtTokenProvider 테스트 코드 작성 및 예외 테스트 코드 작성 (#128)

* fix: 오류 나는 코드 주석 처리 및 수정

* feat: payload 조회 기능 구현 및 authentication null 체크하는 메서드 추가

* fix: file 테스트 수정

* test: 토큰 테스트 코드 작성

* refacotor: 불필요한 코드 제거

* todo 주석 추가

* refactor:불필요한 코드 삭제

* fix: IllegalArgumentException 다른 amazon.awssdk import문 제거!!!!!

* refactor: merge

* Todo: jwt 토큰을 추출하는 공통 로직 추가 예정

---------

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

* 회원 정보 수정, 삭제 리팩토링 (#134)

* refactor: merge

* feat: 토큰 생성할 때 grantType 부여

* Todo: jwt 토큰을 추출하는 공통 로직 추가 예정

* refactor: 회원 정보 수정, 회원 삭제 memberId -> 토큰으로 리팩토링

* refactor: 회원 정보 조회할 때 memberId 값 추가

* refactor: 회원 이메일을 jwt 토큰에서 추출하는 중복 코드를 메서드로 변경

* refactor: pr 내용 반영해서 코드 리팩토링

* refactor: merge과정에서 삭제된 메서드 추가

* 답글 작성 기능 구현 완료 (#133)

* feat: Comment 엔티티에 답글 관계 구현을 위한 부모 댓글 참조 필드 구현

* feat: 답글 RequestDto 구현

* feat: 답글 작성 기능 및 예외 처리 구현

* style: optimize imports 적용

* 이메일 인증 단위 테스트 및 예외 처리 단위 테스트 구현 (#141)

* refactor: dto에 어노테이션 추가

* refactor: member, post 테스트 로직 오류 때문에 임시 주석처리

* test: 인증 메일 단위 테스트, 에외 처리 단위 테스트 작성

* 로그아웃 기능 구현 (#144)

* chore:

* feat: 로그 아웃 된 사용자가 글을 쓸때를 막는 에러코드 추가

* feat: 로그아웃 될 때 Redis에 저장된 토큰값을 제거하는 기능 구현

* feat: 글을 작성할 때 Redis에 저장된 토큰 값이 없다면, 에러를 던지는 기능 추가

* feat: 로그인을 하지 않은 사용자가 로그아웃을 시도할 때 에러를 던지는 기능 추가

* 답글 depth를 1로 제한하는 기능 구현 완료 (#145)

* feat: 답글 depth 에러 코드 추가

* feat: 답글에 depth 제한 기능 구현

* test: 답글 기능, 예외 단위 테스트 작성 및 통과 완료, 기존 테스트 통과 확인

* chore: redis 호스트 분리

* refactor: 기존 id를 통해 회원을 조회하는 로직을 jwt를 사용해 조회하도록 수정

* refactor: 메서드 분리 등 코드 개선

* 북마크 API URL 개선 완료 (#148)

* feat: 북마크 삭제 권한 없음 에러 코드 추가

* feat: BookmarkRequestDto 에서 memberId 필드 삭제

* feat: 북마크 기능 사용 시 memberId 대신 현재 인증된 사용자의 정보 조회하도록 구현

* feat: BookmarkRequestDto 의 불필요한 postId 필드 제거

* feat: 북마크 삭제 API postId 기반 작동 구현 완료

* test: 변경된 북마크 개선점 기반으로 기존의 전체 테스트코드 수정 및 통과 완료

* style: optimze imports 적용 완료

* refactor: 불필요한 BookmarkRequestDto 클래스 삭제

* test: 변경점으로 인한 테스트 코드 수정 및 전체 통과 완료

* 댓글 기능 memberId 사용 -> JWT 사용으로 수정 (#150)

* feat: 댓글 기능에서 memberId 삭제 및 JWT로 로그인한 사용자 이메일 기반으로 멤버 조회하도록 변경

* refactor: getCurrentMember 메서드 SecurityUtils 클래스로 분리

* feat: 댓글 삭제 및 수정 요청 시 본인이 작성한 댓글인지 검증 구현

* refactor: CommentCreateRequest 내 불필요한 memberId 필드 제거

* test: 댓글 기능 변경점에 따라 테스트 코드 수정 및 전체 통과 완료

* test: 댓글 수정, 삭제 시 권한 없음 예외 테스트코드 작성 및 통과

* feat: SecurityUtils 클래스 기본 생성자 접근 방지 구현

* fix: mergy 후 충돌 재수정

* refactor: 불필요한 파라미터 삭제

* style: BookmarkService의 save 메서드명 createBookmard로 수정 (컨벤션)

* 멤버 단위 테스트, 예외 처리 테스트 추가 (#157)

* refactor: merge

* fix: dto 파일 삭제

* refactor: 메일 dto에 기본 생성자 추가

* test: MemberService 단위 테스트, 예외 테스트 추가

* fix: 서비스 로직 merge

* fix: import 오류 수정

* 투표 생성 기능 단위 테스트 작성 (#159)

* fix: BookmarkServiceTest 패키지 위치로 인해 발생한 컴파일에러 해결

* test: memberId를 통해 회원을 조회하던 방식에서 jwt로 변경됨에 따라 테스트 코드 수정

* test: 비회원 투표 기능 단위 테스트

* test: 투표 생성 시 게시글 정보가 없는 경우 단위 테스트

* test: 투표 생성 시 선택지 정보가 없는 경우 단위 테스트

* test: 투표 생성 시 회원 정보가 없는 경우 단위 테스트

* test: 투표 생성 시 선택지가 다른 게시글의 선택지인 경우 단위 테스트

* test: 투표 생성 시 게시글 마감 기한이 만료된 경우 단위 테스트

* test: 투표 생성 시 이미 투표한 기록이 있는 게시글인 경우 단위 테스트

* 투표 현황 조회 및 투표 수정 기능에 대한 단위 테스트 작성 (#162)

* test: 투표 현황 조회 시 게시글 정보가 없는 경우 단위 테스트

* test: 투표 수정 시 게시글 정보가 없는 경우 단위 테스트

* test: 투표 수정 시 선택지 정보가 없는 경우 단위 테스트

* test: 투표 수정 시 회원 정보가 없는 경우 단위 테스트

* test: 투표 수정 시 회원 정보가 없는 경우 단위 테스트

* test: 투표 수정 시 게시글의 카테고리가 캐주얼인 경우 단위 테스트

* 게시글 기능 memberId 대신에 jwt를 사용하도록 수정 (#153)

* feat: SecurityUtils 클래스 생성하여 로그인한 회원의 이메일을 가져오는 기능 추가

* refactor: RedisConfigTest 수정

* feat: jwt를 사용하여 게시글 작성 및 삭제 기능 추가

* feat: 게시글 추천 상태가 0일때 추천 취소를 누를 경우 에러 코드 추가

* feat: jwt를 사용하여 게시글 추천, 추천 취소 기능 수정

* refactor: postId로 포스트를 찾는 로직을 메서드화 해서 중복 제거

* 댓글 기능 사용 시 해당 댓글이 URL의 게시글 id와 매칭 여부 검증 로직 추가 완료 (#164)

* refactor: getCurrentMember() 메서드 전역 static 메서드 사용하도록 수정

* feat: 해당 게시글에 존재하지 않는 댓글 예외 구현

* style: optimze imports 적용 완료

* test: 예외 추가에 따른 테스트 코드 추가 작성 및 전체 테스트 코드 통과 완료

* feat: 게시글 작성 시 storedFileName이 Null일 경우에 대한 로직 구현 (#167)

* refactor: 게시글 조회 시 응답 DTO 이름 변경 및 불필요한 파라미터 제거 (#169)

* test: 단위 테스트 및 예외 테스트 추가 (#161)

* 회원가입, 로그인 시 RequestBody, Response 수정 (#176)

* refactor: 유저가 db에 등록될 때 자동으로 USER 값이 들어가도록 설정

* refactor: 로그인 했을 때 토큰 정보만 클라이언트에 전달하도록 변경

* test: 로직 변경에 따른 테스트 코드 수정

* 공지사항 작성 기능 구현 완료 (#172)

* move: Notice 클래스 패키지 생성 및 이동

* feat: NoticeRepository 클래스 작성

* feat: Notice 엔티티 어노테이션 추가

* feat: 공지사항 작성 기능 구현 및 예외처리 구현

* feat: NoticeResponse에 content 반환 추가

* style: 불필요한 공백 제거

* test: 공지사항 작성 및 관련 예외 테스트 코드 작성 및 통과 완료

* feat: 전체 공지 조회, 단건 공지 조회 기능 구현 및 예외 처리 구현

* test: 전체 공지사항 조회, 단건 공지사항 조회 구현에 따른 테스트 코드 추가 작성

* style: optimze imports 적용

* fix: SecurityContextHolder로 인한 다른 테스트와 충돌 일어나는 에러 수정

* feat: 불필요한 생성자 어노테이션 삭제

* feat: 제약 조건을 DTO에서 검증하도록 구현 및 핸들링 클래스 작성

* 공지사항 목록 조회, 특정 공지사항 조회 기능 구현 완료 (#174)

* move: Notice 클래스 패키지 생성 및 이동

* feat: NoticeRepository 클래스 작성

* feat: Notice 엔티티 어노테이션 추가

* feat: 공지사항 작성 기능 구현 및 예외처리 구현

* feat: NoticeResponse에 content 반환 추가

* style: 불필요한 공백 제거

* test: 공지사항 작성 및 관련 예외 테스트 코드 작성 및 통과 완료

* 게시글 조회 API에 조회수 증가 로직 추가 (#181)

* refactor: memberId로 조회하던 기존 로직을 JWT를 사용하여 조회하도록 수정

* fix: Authorization 필수 여부를 false로 수정

* feat: 게시글 조회 API에 조회수 증가 로직 추가

* refactor: findAll 메서드의 readOnly를 true로 지정함으로써 조회용 메서드임을 강조

* 스웨거 헤더 값으로 토큰 추가  (#182)

* feat: swagger 문서에 토큰 헤더값 추가

* fix: multipart file 스웨거 설정 추가

* fix: swagger 문서에 날짜 정보가 example 대로 안들어가던 오류 수정

* fix: afterEach로 테스트 종료 시 SecurityContextHolder context 제거

* test: global 폴더에 위치한 테스트 코드 삭제

* refactor: 파일 어노테이션 RequestParam에서 RequestPart로 변경

* 회원 닉네임 중복 검증 API 추가 및 테스트 코드 작성 (#178)

* feat: 회원 닉네임 중복 검증 기능 구현

* test: 회원 닉네임 중복 검증 기능 단위 테스트 추가

* refactor: 파라미터에 닉네임 정보를 넣어 중복 체크하도록 변경

* test: 공지사항 생성 실패 테스트 스프링 통합 테스트로 변경

* 게시글, 댓글 조회 API 페이징, 정렬 처리 (#191)

* chore: 설정 업데이트

* feat: 게시글 목록 조회 페이징 처리

* test: PostServiceTest 임시 주석 처리

* feat: 댓글 목록 조회 API 페이징 처리

* chore: 기본 페이지 사이즈 설정 추가

* refactor: 댓글 목록 조회 메서드의 반환 타입을 List<CommentResponse>에서 Page<CommentResponse>로 수정

* refactor: 게시글 목록 조회 메서드의 반환 타입을 List<PostResponse>에서 Page<PostResponse>로 수정

* refactor: PostRequest에서 memberId 제거

* 시큐리티 인증 URL 추가 및 에러 처리 추가 (#199)

* refactor: 이메일 인증 에러코드 HttpStatus 변경

* refactor: JwtTokenProvider 코드 리팩토링 및 에러 코드 추가

* refactor: 테스트 코드 예외 처리할 때 메세지 String -> ErrorCode 형태로 수정

* refactor: 닉네임, 비밀번호 변경할 때 현재 값과 동일할 때 에러 메세지 추가

* refactor: 회원 가입 시 중복 이메일, 중복 닉네임 예외 처리

* refactor: 로그인 상태가 아닐 때 에러 메세지를 던지도록 수정

* refactor: 유효한 토큰이 아닐 때 클라이언트에 에러 메세지를 보내주도록 설정

* feat: 유효하지 않은 토큰인 경우 에러 코드 추가

* feat: 인증이 필요하지 않은 API URL 설정

* fix: swagger 문서에서 이중 배열로 데이터가 나타나던 문제 해결

* refactor: likeCount -> likesCount로 필드 이름 통일

* feat: 미인증 상태일 때 클라이언트에 json 형태로 httpStatus와 message를 보여주는 기능 추가

* refactor: 리뷰 내용 반영하여 에러 코드 이름 수정

* 회원가입 시 프로필 사진 선택 기능 구현 완료 (#207)

* feat: 회원가입 시 프로필 사진 선택 가능하게 구현

* test: 기능 변경에 따른 기존 테스트 코드 변경

* feat: 게시글 응답 dto에 투표 여부 추가 (#198)

* 인기 댓글 조회 기능 구현 (#206)

* chore: HTTP 메서드가 GET인 댓글 관련 모든 URL 허용

* feat: 인기 댓글 목록 조회 기능 구현

* feat: 비회원과 회원 각각의 경우에 따른 조회 로직 구분, 응답 DTO에 myLike 필드 추가

* refactor: api 테스트용으로 사용하던 매직 넘버를 상수로 수정

* 인기 게시글 조회 기능 구현 (#203)

* feat: 인기 게시글 조회 기능 구현

* style: 불필요한 개행 제거

* fix: PostService update

* fix: PostController update

* test: 시큐리티 인증 기능 추가로 인한 기존 공지 테스트 코드 수정

* feat: 게시글 응답 시 balanceOptionId 반환 구현 (#195)

* Create ci.yml

* Update ci.yml

* init ci.yml

* fix: CommentServiceTest

* Embedded Redis 적용 (#218)

* chore: embedded redis 설정 추가

* chore: 내장 redis를 profile이 local일때만 동작하도록 설정

* fix: 임시로 실패하는 로그아웃 단위 테스트 주석 처리

* refactor: 로그 아웃 테스트 코드 수정

* 비밀번호 찾기 기능 구현 (#205)

* feat: 임시 비밀번호 발급 기능 구현

* feat: 임시 비밀번호 발급 후 데이터베이스에 저장된 비밀번호 변경

* feat: 이메일 발송이 실패한 경우 에러 코드 추가

* test: 임시 비밀번호 발송 후 회원 비밀번호 단위 테스트 추가

* refactor: 리뷰 받은 내용들 반영하여 수정

* Update ci.yml

* Update ErrorCode.java

* NoticeControllerTest 임시 주석 처리

* 공지사항 수정, 삭제 기능, 파일 첨부 구현 완료 (#186)

* feat: 공지사항 수정, 삭제 에러 코드 추가 및 403번 에러로 변경

* feat: 공지사항 수정, 삭제 기능 구현

* test: 공지사항 수정, 삭제 기능에 대한 테스트 코드 작성 및 통과 완료

* feat: 공지사항 파일 첨부 구현

* fix: 공지사항 파일 첨부 시 Response에서 파일 목록이 null로 뜨던 에러 수정

* test: 공지사항 기능 추가 구현에 대한 테스트 코드 수정 및 추가 작성 완료

* test: 테스트 주석 처리

* 토큰 값에 memberId 추가 및 기타 예외 처리  (#219)

* feat: 회원 가입 시 중복된 닉네임, 중복된 이메일 에러 처리 추가

* feat: 토큰 claims 정보에 memberId 추가

* feat: 파일 업로드 URL 시큐리티 접근 허용

* refactor: Notice Controller 테스트 주석 처리

* refactor: 누락된 코드 추가

---------

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

* Create cd.yml

* Update cd.yml

* Update cd.yml

* Update cd.yml

* Update cd.yml

* Update cd.yml

* Update cd.yml

* Update cd.yml

---------

Co-authored-by: Junsoo Choi <[email protected]>
Co-authored-by: gywns0417 <[email protected]>
Co-authored-by: king_0417 <[email protected]>
Co-authored-by: Junsoo Choi <[email protected]>

* Update .gitmodules

* Update cd.yml

* feat: 게시글 전체 투표 수 필드명 변경

* Update cd.yml

* Update cd.yml

* feat: 임시 비밀번호 발송 API 시큐리티 허용

* feat: 회원 프로필 이미지 수정 기능 추가

* feat: 회원 프로필 이미지 수정 단위 테스트 추가

* 게시글 응답 필드(이미지 url) 변경 (#211)

* refactor: 파일 업로드 경로 변경 및 상수화

* refactor: 게시글 조회 시 이미지 이름 대신 URL을 응답하도록 수정

* Bean Validation 사용 시 API 에러 메세지 처리 구현 (#222)

* feat: 회원가입 할 때 입력 유효성 검증 추가

* feat: 메일 인증 서비스 유효성 검사 추가

* feat: 게시글 작성 유효성 검사 추가

* feat: 밸런스 옵션, 게시글 작성시 BalanceOption이 비어있는 경우 유효성 검사

* feat: 투표 생성 유효성 검사

* refactor: bookmark -> bookmarks로 url 수정

* refactor: "/posts" url 삭제

* refactor: @Valid 어노테이션 추가 및 파일 업로드 URL 시큐리티 허용

* refactor: Notice Controller 테스트 주석 처리

---------

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

* Update cd.yml

* 게시글 검색, 태그 검색 기능 구현  (#233)

* feat: 게시글 제목 검색 기능 구현

* feat: 게시글 태그 검색 기능 구현

* refactor: pageable 파라미터 제거

* test: 게시글 제목 검색, 태그 검색 단위 테스트 작성

* 마이페이지 본인이 작성한 게시글, 댓글 조회 기능 구현 (#209)

* feat: 마이페이지 - 본인이 작성한 게시글 조회 기능 구현 완료

* feat: 마이페이지 - 본인이 작성한 댓글 조회 기능 구현 완료

* Create appspec.yml

* 마이페이지 본인이 투표한 게시글, 즐겨찾기한 게시글 조회 기능 구현 (#214)

* feat: 마이페이지 - 본인이 작성한 게시글 조회 기능 구현 완료

* feat: 마이페이지 - 본인이 작성한 댓글 조회 기능 구현 완료

* feat: 마이페이지 - 본인이 투표한 게시글 조회 기능 구현 완료

* fix: 페이지네이션 적용 안되던 문제 해결

* feat: 마이페이지 - 본인이 북마크한 게시글 조회 기능 구현 완료

* style: 메서드 네이밍 수정

* feat: 마이페이지 컨트롤러 누락된 어노테이션 추가

* fix: 머지 후 conflicts 해결

* feat: totalVoteCount -> totalVotesCount 필드명 수정

* 게시글 응답 시 투표한 선택지인 selectedOptionId 반환 구현 완료 (#228)

* feat: 게시글 응답 시 투표한 선택지인 selectedOptionId 반환 구현

* feat: 비회원 게시글 조회 가능 및 selectedOptionId null 반환 구현

* 게시글 및 댓글 응답시 사용자 프로필 이미지 반환 구현 완료 (#230)

* feat: 게시글 응답 시 게시글 작성자의 프로필 이미지 반환 구현

* feat: 댓글 응답 시 모든 댓글 작성자의 프로필 이미지 반환 구현

* 댓글 응답시 부모 댓글(원 댓글) id 응답 추가 구현 완료 (#232)

* feat: 게시글 응답 시 게시글 작성자의 프로필 이미지 반환 구현

* feat: 댓글 응답 시 모든 댓글 작성자의 프로필 이미지 반환 구현

* feat: 댓글 응답 시 부모 댓글 id 반환 구현

* fix: merge 후 conflicts 수정

* Create gh_deploy.sh

* Update build.gradle

* Update cd.yml

* Update cd.yml

* Update cd.yml

* Update cd.yml

* fix: PostRequest, PostResponse에서 리스트 형태로 된 Schema 삭제

* feat: 임시 비밀번호 발송 API 시큐리티 허용

* feat: 회원 프로필 이미지 수정 기능 추가

* feat: 회원 프로필 이미지 수정 단위 테스트 추가

* fix: storedFileName을 사용하여 이미지를 수정하는 방식으로 코드 리팩토링

---------

Co-authored-by: gywns0417 <[email protected]>
Co-authored-by: Hanjaemo <[email protected]>
Co-authored-by: king_0417 <[email protected]>

* feat: 게시글 응답에 선택지 ID 추가 (#242)

* feat: 회원/비회원 로직 구분 개선 (#243)

* 리프레시 토큰을 쿠키에 담는 기능 구현  (#236)

* refactor: balanceOption 스웨거에서 정상적으로 보여지지 않는 오류 수정

* fix: balanceOption 스웨거에서 정상적으로 보여지지 않는 오류 수정

* refactor: 토큰 만료, 유효하지 않은 토큰 에러인 경우 서버에 에러 메세지 전달하도록 수정

* refactor: 기본 생성자 제거

* feat: allowCredentials true 설정

* feat: 쿠키에 리프레시 토큰을 담는 기능 추가

* feat: 프론트에 쿠키를 보내기 위해 CORS 설정 수정

* feat: 리프레시 토큰을 헤더로 보내서 만료된 액세스 토큰을 재발급 받는 기능 추가

* test: MemberServiceTest 수정

* refactor: 불필요한 주석, Import문 제거 및 @Schema 제거

* refactor: 로그인 시 액세스 토큰만 클라이언트에 전달하도록 수정

* feat: refreshToken 헤더 설정 정보 추가

---------

Co-authored-by: Junsoo Choi <[email protected]>
Co-authored-by: gywns0417 <[email protected]>
Co-authored-by: king_0417 <[email protected]>
Co-authored-by: Junsoo Choi <[email protected]>

* �cors 설정

* Update SecurityConfig.java

---------

Co-authored-by: Hanjaemo <[email protected]>
Co-authored-by: gywns0417 <[email protected]>
Co-authored-by: king_0417 <[email protected]>

* 공지사항, 마이페이지 시작 페이지 번호 수정 완료 (#239)

* feat: 마이페이지 페이지 번호 0부터 시작하도록 수정

* feat: 공지사항 페이지 번호 0부터 시작하도록 수정

* 답글 조회 API 구현 완료 (#254)

* feat: 답글 응답 ReplyResponse 클래스 작성

* feat: 답글 조회하는 JPA 쿼리 메서드 추가

* feat: 답글 조회 API 구현

* feat: CommentResponse 내 불필요한 답글 관련 필드, 메서드 삭제

* style: 스웨거 스키마 (댓글 -> 답글) 수정

* feat: 댓글 목록 조회 시 답글 제외 (#249)

* feat: 게시글 목록 조회 시 추천수를 기준으로 내림차순 정렬하는 기능 구현 (#248)

* fix: PostResponse 응답 시 vote.getMember() 가 null일 경우 처리 구현 (#263)

* 스웨거 문서 수정 및 시큐리티 URL 허용 (#269)

* refactor: application/json 에서 text/plain 으로 수정

* refactor: 임시 비밀번호 발급 로직을 POST로 변경 후 시큐리티 URL 허용

* feat: 클라이언트에 올바르게 토큰 에러 정보를 보여주도록 수정 (#258)

* 회원 조회 시 응답에 있는 프로필 사진의 storedName을 url로 수정 (#268)

* fix: VoteRequest에 기본 생성자 추가 및 허용 도메인 주소 변경

* chore: 포트 변경

* feat: MemberResponse에서 프로필 사진 이름 대신 URL을 포함하도록 수정

* 게시글 조회 응답에 댓글 개수 추가 (#271)

* feat: 게시글 조회 응답에 댓글 개수 추가

* refactor: 댓글 개수 가져오는 책임을 Post 객체에 위임

* 마이페이지 API 응답 수정 완료 (#253)

* move: 기존 마이페이지 Response 클래스 삭제

* feat: CommentResponse 내 불필요해진 postTitle 필드 삭제

* feat: MyPageResponse 클래스 작성

* feat: MyPageResponse 클래스 작성에 따른 기존 코드 수정

* fix: VoteRequest에 누락된 @NoArgsConstructor 어노테이션 추가

* style: 공백 추가

* feat: MyPageResponse 에 postId 반환 추가 구현

* feat: 쿠키를 이용하여 리프레시 토큰을 추출하고 액세스 토큰을 재발급 하는 방법으로 구현 (#264)

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

* fix: merge 후 에러 수정

* 게시글, 댓글 신고 기능 구현 (#255)

* refactor: dto 클래스에서 기본 생성자 제거

* feat: 게시글 신고 기능 구현

* feat: 댓글 신고 기능 구현

* feat: 신고 관련 파일 추가

* feat: 게시글 신고 횟수가 5가 되면 BLIND로 변경

* feat: 댓글 신고 횟수가 5가 되면 BLIND 상태로 변경

* feat: 회원이 신고당한 횟수를 보여주는 API 추가

* refactor: 리뷰 수정

* refactor: 수정 사항 추가

* fix: 사용하지 않는 메서드, 변수 제거

* fix: 신고만 적용되도록 수정

* refactor: viewStatus 주석 처리

* test

* refactor: 리뷰 내용 반영해서 수정

* fix: import 수정

* 영속성 전이 (#279)

* submodule

* 게시글 작성 할때 데드라인에서 @JsonFormat 수정 (#282)

* fix: 게시글 작성 할때 데드라인에서 @JsonFormat 수정

* refactor: 스웨거 필드 값 수정

* 태그 검색 시 401 에러가 뜨던 오류 해결  (#290)

* fix: 토큰 값이 없을 때 에러 메세지 삭제

* refactor: 게시글 태그 검색 쿼리 NATURAL JOIN에서 INNER JOIN으로 변경

* 게시글 좋아요 해제 로직 수정 (#292)

* refactor: 게시글 좋아요 해제 로직 수정

* feat: 게시글 추천을 한 기록이 없을 때 예외 처리 추가

* refactor: Redis에 저장되는 값을 직렬화 하는 빈 추가 (#296)

* fix: 게시글 단건 조회 메서드의 readOnly 설정 해제 (#289)

* 댓글 목록 조회 API에서 댓글마다 답글 개수 포함하도록 수정 완료 (#287)

* feat: Comment 엔티티에 답글 수 필드 추가

* feat: CommentResponse 에서 답글 수 반환하도록 구현

* 토큰 재발급 시 memberId가 토큰에 포함되지 않던 오류 수정 (#301)

* fix: 사용하지 않는 tokenDto 클래스 삭제

* refactor: 사용자 로그인 상태에서 memberId를 추출할 수 있도록 Spring Security 설정 정보 수정

* refactor: memberId를 전달해줘서 토큰을 재발급 받을 수 있도록 리팩토링

* refactor: 불필요한 코드 삭제 및 로그아웃 상태에서 토큰 재발급 시도 할 때 에러 문구 추가

* 게시글, 댓글 신고 예외 처리 추가 (#299)

* feat: 본인 게시글 신고 불가, 중복해서 신고가 불가능하도록 에러 처리

* feat: 본인 댓글 신고 불가, 중복해서 신고가 불가능하도록 에러 처리

* 회원 프로필 조회 기능 구현 (#294)

* feat: 회원 프로필 정보를 보여주는 dto 생성

* feat: 회원 프로필 정보 조회 기능 구현

* feat: 회원 프로필 정보 조회 API 시큐리티 URL 허용

* refactor: 회원 프로필 조회 URL 수정 및 시큐리티 허용

* refactor: 회원 프로필 사진 정보를 가져올 때 사진도 같이 가져오도록 구현

* refactor: 회원 프로필을 가져올 때 storedName에서 getURL로 변경

* 게시글, 댓글 응답에 작성자 ID 추가 (#303)

* feat: PostResponse에 memberId(게시글 작성자 ID) 추가

* feat: CommentResponse에 writerId(댓글 작성자 ID) 추가

* refactor: 댓글 응답과 통일하기 위해 필드명 변경

* 비회원 상태에서 프로필 조회 시 401에러 (#307)

* docs: 회원 프로필 조회 API swagger에 추가

* fix: 회원 프로필이 없는 경우에 예외 처리 추가

* fix: Post 데드라인에서 @Future 어노테이션 제거 (#311)

* 본인 게시글, 댓글을 신고할 때 에러 메세지 수정 및 데드라인 지난 게시글 조회 시 에러 (#308)

* fix: 본인 게시글, 댓글을 신고할 때 에러가 정상적으로 반환되도록 수정

* fix: Post 데드라인에서 @Future 어노테이션 제거

* fix: 다른 브랜치에 커밋

* 에러 테스트

* fix: 깃허브 ci/cd 토큰 만료 이슈 해결

* feat: ReplyResponse에 답글 작성자 ID 추가 (#312)

* feat: 게시글 조회 응답 DTO에 마감 여부 필드 추가 (#315)

* 게시글 관련 테스트 코드 수정 (#317)

* feat: 게시글 조회 응답 DTO에 마감 여부 필드 추가

* test: 마감 여부 필드 추가에 따른 테스트 코드 수정

* 게시글 조회 시 마감 여부 필터링 로직 추가 (#320)

* feat: 게시글 조회 시 마감 여부 필터링 로직 추가

* refactor: 불필요한 필드 및 메서드 제거

---------

Co-authored-by: Junsoo Choi <[email protected]>
Co-authored-by: gywns0417 <[email protected]>
Co-authored-by: king_0417 <[email protected]>
Co-authored-by: Junsoo Choi <[email protected]>
  • Loading branch information
5 people authored Apr 28, 2024
1 parent 2875463 commit 6a3ed37
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 15 deletions.
26 changes: 17 additions & 9 deletions src/main/java/balancetalk/module/post/application/PostService.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
package balancetalk.module.post.application;

import static balancetalk.global.exception.ErrorCode.*;
import static balancetalk.global.utils.SecurityUtils.getCurrentMember;

import balancetalk.global.exception.BalanceTalkException;
import balancetalk.global.redis.application.RedisService;
import balancetalk.module.bookmark.domain.BookmarkRepository;
Expand All @@ -19,10 +16,7 @@
import balancetalk.module.report.domain.Report;
import balancetalk.module.report.domain.ReportRepository;
import balancetalk.module.report.dto.ReportRequest;
import balancetalk.module.post.dto.*;
import balancetalk.module.vote.domain.VoteRepository;
import java.util.stream.Collectors;
import java.util.List;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
Expand All @@ -31,6 +25,12 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.stream.Collectors;

import static balancetalk.global.exception.ErrorCode.*;
import static balancetalk.global.utils.SecurityUtils.getCurrentMember;

@Slf4j
@Service
@RequiredArgsConstructor
Expand Down Expand Up @@ -77,8 +77,8 @@ private List<File> getImages(PostRequest postRequest) {
}

@Transactional(readOnly = true)
public Page<PostResponse> findAll(String token, Pageable pageable) {
Page<Post> posts = postRepository.findAll(pageable);
public Page<PostResponse> findAll(String token, Boolean containsClosed, Pageable pageable) {
Page<Post> posts = getPosts(containsClosed, pageable);

if (token == null) {
return posts.map(post -> PostResponse.fromEntity(post, null, false, false, false));
Expand All @@ -92,6 +92,13 @@ public Page<PostResponse> findAll(String token, Pageable pageable) {
member.hasVoted(post)));
}

private Page<Post> getPosts(Boolean containsClosed, Pageable pageable) {
if (containsClosed) {
return postRepository.findAll(pageable);
}
return postRepository.findAllOnlyOpened(pageable);
}

@Transactional
public PostResponse findById(Long postId, String token) {
Post post = getCurrentPost(postId);
Expand All @@ -104,7 +111,7 @@ public PostResponse findById(Long postId, String token) {
Member member = getCurrentMember(memberRepository);

if (member.getRole() == Role.USER) {
post.increaseViews();
post.increaseViews();
}
return PostResponse.fromEntity(post, member, member.hasLiked(post), member.hasBookmarked(post),
member.hasVoted(post));
Expand Down Expand Up @@ -174,6 +181,7 @@ public void cancelLikePost(Long postId) {
private boolean notExistsPostLikeBy(Member member, Post post) {
return !postLikeRepository.existsByMemberAndPost(member, post);
}

private Post getCurrentPost(Long postId) {
return postRepository.findById(postId)
.orElseThrow(() -> new BalanceTalkException(NOT_FOUND_POST));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
package balancetalk.module.post.domain;

import java.util.List;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

import java.util.List;

public interface PostRepository extends JpaRepository<Post, Long> {
Page<Post> findAllByMemberId(Long id, Pageable pageable);

Expand All @@ -25,4 +26,7 @@ public interface PostRepository extends JpaRepository<Post, Long> {
"JOIN pt.tag t " +
"WHERE t.name = :tagName")
List<Post> findByPostTagsContaining(String tagName);

@Query("select p from Post p where p.deadline > function('now')")
Page<Post> findAllOnlyOpened(Pageable pageable);
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import balancetalk.module.report.dto.ReportRequest;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import java.util.List;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
Expand All @@ -15,6 +14,8 @@
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Slf4j
@RestController
@RequiredArgsConstructor
Expand All @@ -26,7 +27,7 @@ public class PostController {

@ResponseStatus(HttpStatus.CREATED)
@PostMapping
@Operation(summary = "게시글 생성" , description = "로그인 상태인 회원이 게시글을 작성한다.")
@Operation(summary = "게시글 생성", description = "로그인 상태인 회원이 게시글을 작성한다.")
public PostResponse createPost(@Valid @RequestBody final PostRequest postRequestDto) {
return postService.save(postRequestDto);
}
Expand All @@ -35,8 +36,9 @@ public PostResponse createPost(@Valid @RequestBody final PostRequest postRequest
@GetMapping
@Operation(summary = "모든 게시글 조회", description = "해당 회원이 쓴 모든 글을 조회한다.")
public Page<PostResponse> findAllPosts(@RequestHeader(value = "Authorization", required = false) String token,
@RequestParam Boolean closed,
Pageable pageable) {
return postService.findAll(token, pageable);
return postService.findAll(token, closed, pageable);
}

@ResponseStatus(HttpStatus.OK)
Expand Down Expand Up @@ -66,7 +68,7 @@ public List<PostResponse> findPostsByTitle(@RequestHeader(value = "Authorization
@GetMapping("/tag")
@Operation(summary = "게시글 태그 검색 기능", description = "태그에 맞는 모든 게시글을 조회한다.")
public List<PostResponse> findPostsByTag(@RequestHeader(value = "Authorization", required = false) String token,
@RequestParam String tagName) {
@RequestParam String tagName) {
return postService.findPostsByTag(token, tagName);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ class PostServiceTest {

@InjectMocks
PostService postService;

Member member = Member.builder()
.id(1L)
.email("[email protected]")
Expand Down

0 comments on commit 6a3ed37

Please sign in to comment.