diff --git a/src/main/java/roomescape/member/business/MemberService.kt b/src/main/java/roomescape/member/business/MemberService.kt index b531a0fc..2949740c 100644 --- a/src/main/java/roomescape/member/business/MemberService.kt +++ b/src/main/java/roomescape/member/business/MemberService.kt @@ -1,47 +1,40 @@ -package roomescape.member.business; +package roomescape.member.business -import java.util.List; - -import org.springframework.http.HttpStatus; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import roomescape.member.infrastructure.entity.Member; -import roomescape.member.infrastructure.entity.MemberRepository; -import roomescape.member.web.MemberResponse; -import roomescape.member.web.MembersResponse; -import roomescape.system.exception.ErrorType; -import roomescape.system.exception.RoomEscapeException; +import org.springframework.data.repository.findByIdOrNull +import org.springframework.http.HttpStatus +import org.springframework.stereotype.Service +import org.springframework.transaction.annotation.Transactional +import roomescape.member.infrastructure.entity.Member +import roomescape.member.infrastructure.entity.MemberRepository +import roomescape.member.web.MembersResponse +import roomescape.member.web.toResponse +import roomescape.system.exception.ErrorType +import roomescape.system.exception.RoomEscapeException @Service -public class MemberService { +@Transactional(readOnly = true) +class MemberService( + private val memberRepository: MemberRepository +) { + fun readAllMembers(): MembersResponse = MembersResponse( + memberRepository.findAll() + .map { it.toResponse() } + .toList() + ) - private final MemberRepository memberRepository; + fun findById(memberId: Long): Member = memberRepository.findByIdOrNull(memberId) + ?: throw RoomEscapeException( + ErrorType.MEMBER_NOT_FOUND, + String.format("[memberId: %d]", memberId), + HttpStatus.BAD_REQUEST + ) - public MemberService(MemberRepository memberRepository) { - this.memberRepository = memberRepository; - } - - @Transactional(readOnly = true) - public MembersResponse findAllMembers() { - List response = memberRepository.findAll().stream() - .map(MemberResponse::fromEntity) - .toList(); - - return new MembersResponse(response); - } - - @Transactional(readOnly = true) - public Member findMemberById(Long memberId) { - return memberRepository.findById(memberId) - .orElseThrow(() -> new RoomEscapeException(ErrorType.MEMBER_NOT_FOUND, - String.format("[memberId: %d]", memberId), HttpStatus.BAD_REQUEST)); - } - - @Transactional(readOnly = true) - public Member findMemberByEmailAndPassword(String email, String password) { - return memberRepository.findByEmailAndPassword(email, password) - .orElseThrow(() -> new RoomEscapeException(ErrorType.MEMBER_NOT_FOUND, - String.format("[email: %s, password: %s]", email, password), HttpStatus.BAD_REQUEST)); - } + fun findMemberByEmailAndPassword(email: String, password: String): Member = + memberRepository.findByEmailAndPassword(email, password) + ?: throw RoomEscapeException( + ErrorType.MEMBER_NOT_FOUND, + String.format("[email: %s, password: %s]", email, password), + HttpStatus.BAD_REQUEST + ) } + diff --git a/src/main/java/roomescape/member/infrastructure/entity/MemberRepository.kt b/src/main/java/roomescape/member/infrastructure/entity/MemberRepository.kt index 8c35fb30..a681120a 100644 --- a/src/main/java/roomescape/member/infrastructure/entity/MemberRepository.kt +++ b/src/main/java/roomescape/member/infrastructure/entity/MemberRepository.kt @@ -1,10 +1,7 @@ -package roomescape.member.infrastructure.entity; +package roomescape.member.infrastructure.entity -import java.util.Optional; +import org.springframework.data.jpa.repository.JpaRepository -import org.springframework.data.jpa.repository.JpaRepository; - -public interface MemberRepository extends JpaRepository { - - Optional findByEmailAndPassword(String email, String password); +interface MemberRepository : JpaRepository { + fun findByEmailAndPassword(email: String, password: String): Member? } diff --git a/src/main/java/roomescape/reservation/service/ReservationService.java b/src/main/java/roomescape/reservation/service/ReservationService.java index b82d42eb..9304e8fe 100644 --- a/src/main/java/roomescape/reservation/service/ReservationService.java +++ b/src/main/java/roomescape/reservation/service/ReservationService.java @@ -9,8 +9,8 @@ import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import roomescape.member.infrastructure.entity.Member; import roomescape.member.business.MemberService; +import roomescape.member.infrastructure.entity.Member; import roomescape.reservation.domain.Reservation; import roomescape.reservation.domain.ReservationStatus; import roomescape.reservation.domain.ReservationTime; @@ -147,7 +147,7 @@ public class ReservationService { ReservationStatus status) { ReservationTime time = reservationTimeService.findTimeById(timeId); Theme theme = themeService.findThemeById(themeId); - Member member = memberService.findMemberById(memberId); + Member member = memberService.findById(memberId); validateDateAndTime(date, time); return new Reservation(date, time, theme, member, status); @@ -213,7 +213,7 @@ public class ReservationService { } private void validateIsMemberAdmin(Long memberId) { - Member member = memberService.findMemberById(memberId); + Member member = memberService.findById(memberId); if (member.isAdmin()) { return; } diff --git a/src/main/java/roomescape/system/auth/interceptor/AdminInterceptor.java b/src/main/java/roomescape/system/auth/interceptor/AdminInterceptor.java index 1e372aad..0788419d 100644 --- a/src/main/java/roomescape/system/auth/interceptor/AdminInterceptor.java +++ b/src/main/java/roomescape/system/auth/interceptor/AdminInterceptor.java @@ -10,8 +10,8 @@ import org.springframework.web.servlet.HandlerInterceptor; import jakarta.servlet.http.Cookie; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; -import roomescape.member.infrastructure.entity.Member; import roomescape.member.business.MemberService; +import roomescape.member.infrastructure.entity.Member; import roomescape.system.auth.annotation.Admin; import roomescape.system.auth.jwt.JwtHandler; import roomescape.system.exception.ErrorType; @@ -44,7 +44,7 @@ public class AdminInterceptor implements HandlerInterceptor { try { Cookie token = getToken(request); Long memberId = jwtHandler.getMemberIdFromToken(token.getValue()); - member = memberService.findMemberById(memberId); + member = memberService.findById(memberId); } catch (RoomEscapeException e) { response.sendRedirect("/login"); throw e; diff --git a/src/main/java/roomescape/system/auth/interceptor/LoginInterceptor.java b/src/main/java/roomescape/system/auth/interceptor/LoginInterceptor.java index c82343eb..6522fb0a 100644 --- a/src/main/java/roomescape/system/auth/interceptor/LoginInterceptor.java +++ b/src/main/java/roomescape/system/auth/interceptor/LoginInterceptor.java @@ -10,8 +10,8 @@ import org.springframework.web.servlet.HandlerInterceptor; import jakarta.servlet.http.Cookie; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; -import roomescape.member.infrastructure.entity.Member; import roomescape.member.business.MemberService; +import roomescape.member.infrastructure.entity.Member; import roomescape.system.auth.annotation.LoginRequired; import roomescape.system.auth.jwt.JwtHandler; import roomescape.system.exception.ErrorType; @@ -44,7 +44,7 @@ public class LoginInterceptor implements HandlerInterceptor { try { Cookie token = getToken(request); Long memberId = jwtHandler.getMemberIdFromToken(token.getValue()); - member = memberService.findMemberById(memberId); + member = memberService.findById(memberId); return member != null; } catch (RoomEscapeException e) { response.sendRedirect("/login"); diff --git a/src/main/java/roomescape/system/auth/service/AuthService.java b/src/main/java/roomescape/system/auth/service/AuthService.java index 8fa1447a..695031f3 100644 --- a/src/main/java/roomescape/system/auth/service/AuthService.java +++ b/src/main/java/roomescape/system/auth/service/AuthService.java @@ -2,8 +2,8 @@ package roomescape.system.auth.service; import org.springframework.stereotype.Service; -import roomescape.member.infrastructure.entity.Member; import roomescape.member.business.MemberService; +import roomescape.member.infrastructure.entity.Member; import roomescape.system.auth.dto.LoginCheckResponse; import roomescape.system.auth.dto.LoginRequest; import roomescape.system.auth.jwt.JwtHandler; @@ -27,7 +27,7 @@ public class AuthService { } public LoginCheckResponse checkLogin(Long memberId) { - Member member = memberService.findMemberById(memberId); + Member member = memberService.findById(memberId); return new LoginCheckResponse(member.getName()); }