Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
6977d5d
refactor(Volunteer): Find UseCase/Service를 Query UseCase/Service 로 통합
m-a-king Nov 28, 2024
36bb3cd
feat(BadRequestException): 메시지 타입을 ExceptionMessage도 가능하게 오버로딩
m-a-king Nov 28, 2024
bd9be31
refactor: 클래스 명 변경
m-a-king Nov 28, 2024
05fd3cd
feat(VolunteerDetail): 레포지토리 인터페이스, 구현체 추가, 리픽토링
m-a-king Nov 28, 2024
e156e0b
feat(Volunteer): Volunteer 쿼리 서비스 추가
m-a-king Nov 28, 2024
c246db5
feat(Volunteer): 레포지토리 인터페이스, 구현체 추가, 리팩토링
m-a-king Nov 28, 2024
d50a25f
feat(Volunteer): 존재하지 않는 봉사자 처리 메시지 추가
m-a-king Nov 28, 2024
9d820af
feat(VolunteerDetail): baseEntity 상속
m-a-king Nov 28, 2024
4744fc4
feat: Volunteer 및 VolunteerDetail 엔티티를 위한 DTO 변환 기능 추가
m-a-king Nov 28, 2024
6eddc15
refactor: 기존의 findService를 QueryService로 리팩토링
m-a-king Nov 28, 2024
38f131e
feat(VolunteerQueryController): 프로필 조회 기능 추가
m-a-king Nov 28, 2024
a2683a9
feat(VolunteerApply): 엔티티와 ApplyStatus ENUM 추가
m-a-king Nov 29, 2024
9de3df5
feat(VolunteerDetailRepository): 사용하지 않는 메서드 삭제
m-a-king Nov 29, 2024
1360213
test(VolunteerRepository): 봉사자 id, OAuth id로 봉사자 정보 조회 테스트 추가
m-a-king Nov 29, 2024
de1ae2e
test(RecruitBoardFixture): completed 상태의 RecruitBoard 생성 추가
m-a-king Nov 29, 2024
495ac35
test(RecruitBoardRepository): findNotCompletedIdsByCenterId 추가
m-a-king Nov 29, 2024
735b935
feat(VolunteerApplyRepository): 봉사 신청 repository 추가
m-a-king Nov 29, 2024
066a2bd
feat(RecruitBoardQueryService): 기관 아이디 기반으로 종료되지 않은 RecruitBoard 아이디 …
m-a-king Nov 29, 2024
975408a
feat(VolunteerApplyJpaRepository): JpaRepo 상속 추가
m-a-king Nov 29, 2024
af8d912
feat(VolunteerQueryService): 닉네임 조회 값 null 처리
m-a-king Nov 29, 2024
3b9d52f
feat(VolunteerApplyQueryService): 봉사 신청 Query Service/UseCase 추가
m-a-king Nov 29, 2024
bc88fb9
test: tearDown을 @Transactional로 변경
m-a-king Nov 29, 2024
490868d
feat(VolunteerDetailAccessValidator): 봉사자 상세 정보 접근 검증 로직 구현
m-a-king Nov 29, 2024
9182292
test(RecruitBoardQueryService): 센터 아이디로 완료되지 않은 모집 게시글의 ID 조회 테스트 추가
m-a-king Nov 29, 2024
7947635
test(RecruitBoardQueryRepository): 센터 아이디로 완료되지 않은 모집 게시글의 ID 조회 테스트 추가
m-a-king Nov 29, 2024
1b1bb3d
test(VolunteerApplyQueryService): 모집 아이디로 봉사자 아이디 리스트 조회 테스트 추가
m-a-king Nov 29, 2024
291a2b1
test(VolunteerApplyRepository): 봉사 신청/조회, 모집 ID로 봉사자 ID 리스트/페이징 조회
m-a-king Nov 29, 2024
e98e5bd
test(VolunteerDetailRepository): 봉사자 ID로 봉사자 상세 정보 조회/저장
m-a-king Nov 29, 2024
d88b6ed
test(VolunteerQueryService): 기관의 봉사자 상세 정보 조회에 대한 권한 검증 추가
m-a-king Nov 29, 2024
8749fc1
test(VolunteerDetailAccessValidator): 봉사자 상세 정보를 기관이 조회하는 테스트 추가
m-a-king Nov 29, 2024
96b4d5a
test(VolunteerQueryService): 봉사자 기본/상세 정보 조회 테스트, 닉네임 조회 테스트 추가
m-a-king Nov 29, 2024
7137b8f
feat(IntegrationTestSupport): @AutoConfigureMockMvc 추가
m-a-king Nov 29, 2024
0ee3695
test(VolunteerSignController): ControllerTestSupport 상속받도록 변경
m-a-king Nov 29, 2024
0b2cce9
test(center): 공백 제거
m-a-king Nov 29, 2024
003b24c
test(VolunteerQueryController): 타인 프로필 조회 컨트롤러 테스트 추가
m-a-king Nov 29, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import com.somemore.auth.oauth.OAuthProvider;
import com.somemore.auth.oauth.naver.service.query.ProcessNaverOAuthUserService;
import com.somemore.auth.redirect.RedirectUseCase;
import com.somemore.volunteer.usecase.FindVolunteerIdUseCase;
import com.somemore.volunteer.usecase.VolunteerQueryUseCase;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
Expand All @@ -26,7 +26,7 @@
public class CustomOAuthSuccessHandler extends SimpleUrlAuthenticationSuccessHandler {

private final ProcessNaverOAuthUserService processNaverOAuthService;
private final FindVolunteerIdUseCase findVolunteerIdUseCase;
private final VolunteerQueryUseCase volunteerQueryUseCase;
private final GenerateTokensOnLoginUseCase generateTokensOnLoginUseCase;
private final CookieUseCase cookieUseCase;
private final RedirectUseCase redirectUseCase;
Expand All @@ -45,7 +45,7 @@ public void onAuthenticationSuccess(HttpServletRequest request, HttpServletRespo
}
}

UUID volunteerId = findVolunteerIdUseCase.findVolunteerIdByOAuthId(oAuthId);
UUID volunteerId = volunteerQueryUseCase.getVolunteerIdByOAuthId(oAuthId);
EncodedToken accessToken = generateTokensOnLoginUseCase.saveRefreshTokenAndReturnAccessToken(volunteerId);

cookieUseCase.setAccessToken(response, accessToken.value());
Expand Down
25 changes: 0 additions & 25 deletions src/main/java/com/somemore/domains/VolunteerManagement.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.somemore.facade.validator;

import java.util.UUID;

public interface VolunteerDetailAccessValidator {

void validateByCenterId(UUID centerId, UUID targetVolunteerId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.somemore.facade.validator;

import com.somemore.global.exception.BadRequestException;
import com.somemore.recruitboard.usecase.query.RecruitBoardQueryUseCase;
import com.somemore.volunteerApply.usecase.VolunteerApplyQueryUseCase;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.UUID;

import static com.somemore.global.exception.ExceptionMessage.UNAUTHORIZED_VOLUNTEER_DETAIL;

@Component
@RequiredArgsConstructor
public class VolunteerDetailAccessValidatorImpl implements VolunteerDetailAccessValidator {

private final RecruitBoardQueryUseCase recruitBoardQueryUseCase;
private final VolunteerApplyQueryUseCase volunteerApplyQueryUseCase;

/**
* 기관 ID를 기반으로 완료되지 않은 모집글들의 ID를 조회하고,
* 해당 모집글들에 연관된 봉사자들의 ID 목록에 타겟 봉사자 ID가 포함되어 있는지 검증.
*/
public void validateByCenterId(UUID centerId, UUID targetVolunteerId) {
List<Long> allNotCompletedIdsByCenterId = recruitBoardQueryUseCase.getNotCompletedIdsByCenterIds(centerId);

List<UUID> volunteerIdsByRecruitIds = volunteerApplyQueryUseCase.getVolunteerIdsByRecruitIds(allNotCompletedIdsByCenterId);

volunteerIdsByRecruitIds.stream()
.filter(volunteerId -> volunteerId.equals(targetVolunteerId))
.findAny()
.orElseThrow(() -> new BadRequestException(UNAUTHORIZED_VOLUNTEER_DETAIL));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,8 @@ public class BadRequestException extends RuntimeException{
public BadRequestException(final String message) {
super(message);
}

public BadRequestException(final ExceptionMessage message) {
super(message.getMessage());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,21 @@
@Getter
public enum ExceptionMessage {

NOT_EXISTS_CENTER("존재하지 않는 기관 입니다."),
NOT_EXISTS_COMMUNITY_BOARD("존재하지 않는 게시글 입니다."),
NOT_EXISTS_CENTER("존재하지 않는 기관입니다."),
NOT_EXISTS_COMMUNITY_BOARD("존재하지 않는 게시글입니다."),
UNAUTHORIZED_COMMUNITY_BOARD("해당 게시글에 권한이 없습니다."),
NOT_EXISTS_COMMUNITY_COMMENT("존재하지 않는 댓글 입니다."),
UNAUTHORIZED_COMMUNITY_COMMENT("해당 댓글에 권한이 없습니다."),
NOT_EXISTS_LOCATION("존재하지 않는 위치 ID 입니다."),
NOT_EXISTS_RECRUIT_BOARD("존재하지 않는 봉사 모집글 ID 입니다."),
NOT_EXISTS_RECRUIT_BOARD("존재하지 않는 봉사 모집글입니다."),
UNAUTHORIZED_RECRUIT_BOARD("해당 봉사 모집글에 권한이 없습니다."),
UPLOAD_FAILED("파일 업로드에 실패했습니다."),
INVALID_FILE_TYPE("지원하지 않는 파일 형식입니다."),
FILE_SIZE_EXCEEDED("파일 크기가 허용된 한도를 초과했습니다."),
EMPTY_FILE("파일이 존재하지 않습니다."),
INSTANTIATION_NOT_ALLOWED("인스턴스화 할 수 없는 클래스 입니다."),
NOT_EXISTS_VOLUNTEER("존재하지 않는 봉사자입니다."),
UNAUTHORIZED_VOLUNTEER_DETAIL("해당 봉사자의 상세 정보 조회 권한이 없습니다."),
CANNOT_CANCEL_DELETED_INTEREST_CENTER("이미 삭제된 관심 기관은 취소할 수 없습니다."),
DUPLICATE_INTEREST_CENTER("이미 관심 표시한 기관입니다.")
;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,12 @@
import com.somemore.recruitboard.repository.mapper.RecruitBoardWithLocation;
import com.somemore.recruitboard.dto.condition.RecruitBoardNearByCondition;
import com.somemore.recruitboard.dto.condition.RecruitBoardSearchCondition;

import java.util.List;

import java.util.Optional;
import java.util.UUID;

import org.springframework.data.domain.Page;

public interface RecruitBoardRepository {
Expand All @@ -26,4 +29,6 @@ public interface RecruitBoardRepository {
Page<RecruitBoardDetail> findAllNearby(RecruitBoardNearByCondition condition);

Page<RecruitBoard> findAllByCenterId(UUID centerId, RecruitBoardSearchCondition condition);

List<Long> findNotCompletedIdsByCenterId(UUID centerId);
}
Loading
Loading