refactor: 회원 repository & service 코틀린 변환

This commit is contained in:
이상진 2025-07-12 19:55:44 +09:00
parent 6954baf95f
commit 65eddf6b3c
6 changed files with 47 additions and 57 deletions

View File

@ -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<MemberResponse> 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
)
}

View File

@ -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<Member, Long> {
Optional<Member> findByEmailAndPassword(String email, String password);
interface MemberRepository : JpaRepository<Member, Long> {
fun findByEmailAndPassword(email: String, password: String): Member?
}

View File

@ -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;
}

View File

@ -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;

View File

@ -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");

View File

@ -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());
}