diff --git a/src/main/java/com/balybus/galaxy/address/repository/TblAddressSecondRepository.java b/src/main/java/com/balybus/galaxy/address/repository/TblAddressSecondRepository.java index 247c5755..1737699b 100644 --- a/src/main/java/com/balybus/galaxy/address/repository/TblAddressSecondRepository.java +++ b/src/main/java/com/balybus/galaxy/address/repository/TblAddressSecondRepository.java @@ -5,8 +5,10 @@ import org.springframework.stereotype.Repository; import java.util.List; +import java.util.Optional; @Repository public interface TblAddressSecondRepository extends JpaRepository { List findByAddressFirst_Id(Long afSeq); + Optional findByAddressFirstIdAndId(Long firstSeq, Long secondSeq); } diff --git a/src/main/java/com/balybus/galaxy/address/repository/TblAddressThirdRepository.java b/src/main/java/com/balybus/galaxy/address/repository/TblAddressThirdRepository.java index 56b02459..d87573d0 100644 --- a/src/main/java/com/balybus/galaxy/address/repository/TblAddressThirdRepository.java +++ b/src/main/java/com/balybus/galaxy/address/repository/TblAddressThirdRepository.java @@ -1,13 +1,14 @@ package com.balybus.galaxy.address.repository; -import com.balybus.galaxy.address.domain.TblAddressSecond; import com.balybus.galaxy.address.domain.TblAddressThird; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import java.util.List; +import java.util.Optional; @Repository public interface TblAddressThirdRepository extends JpaRepository { List findByAddressSecond_Id(Long asSeq); + Optional findByAddressSecond_IdAndId(Long asSeq, Long atSeq); } diff --git a/src/main/java/com/balybus/galaxy/address/serviceImpl/TblAddressFirstService.java b/src/main/java/com/balybus/galaxy/address/serviceImpl/TblAddressFirstService.java index 8be979aa..4fb59ad8 100644 --- a/src/main/java/com/balybus/galaxy/address/serviceImpl/TblAddressFirstService.java +++ b/src/main/java/com/balybus/galaxy/address/serviceImpl/TblAddressFirstService.java @@ -1,4 +1,7 @@ package com.balybus.galaxy.address.serviceImpl; +import com.balybus.galaxy.address.domain.TblAddressFirst; + public interface TblAddressFirstService { + TblAddressFirst validationCheck(Long afSeq); // 광역시.도 구분자 유효성 확인 } diff --git a/src/main/java/com/balybus/galaxy/address/serviceImpl/TblAddressSecondService.java b/src/main/java/com/balybus/galaxy/address/serviceImpl/TblAddressSecondService.java index c2f2c9f7..c94faff1 100644 --- a/src/main/java/com/balybus/galaxy/address/serviceImpl/TblAddressSecondService.java +++ b/src/main/java/com/balybus/galaxy/address/serviceImpl/TblAddressSecondService.java @@ -1,4 +1,7 @@ package com.balybus.galaxy.address.serviceImpl; +import com.balybus.galaxy.address.domain.TblAddressSecond; + public interface TblAddressSecondService { + TblAddressSecond validationCheck(Long firstSeq, Long secondSeq); // 시.군.구 구분자 유효성 확인 } diff --git a/src/main/java/com/balybus/galaxy/address/serviceImpl/TblAddressThirdService.java b/src/main/java/com/balybus/galaxy/address/serviceImpl/TblAddressThirdService.java index f66ae998..9d52689d 100644 --- a/src/main/java/com/balybus/galaxy/address/serviceImpl/TblAddressThirdService.java +++ b/src/main/java/com/balybus/galaxy/address/serviceImpl/TblAddressThirdService.java @@ -1,4 +1,7 @@ package com.balybus.galaxy.address.serviceImpl; +import com.balybus.galaxy.address.domain.TblAddressThird; + public interface TblAddressThirdService { + TblAddressThird validationCheck(Long secondSeq, Long thirdSeq); // 읍.면.동 구분자 유효성 확인 } diff --git a/src/main/java/com/balybus/galaxy/address/serviceImpl/service/TblAddressFirstServiceImpl.java b/src/main/java/com/balybus/galaxy/address/serviceImpl/service/TblAddressFirstServiceImpl.java new file mode 100644 index 00000000..abd96122 --- /dev/null +++ b/src/main/java/com/balybus/galaxy/address/serviceImpl/service/TblAddressFirstServiceImpl.java @@ -0,0 +1,33 @@ +package com.balybus.galaxy.address.serviceImpl.service; + +import com.balybus.galaxy.address.domain.TblAddressFirst; +import com.balybus.galaxy.address.repository.TblAddressFirstRepository; +import com.balybus.galaxy.address.serviceImpl.TblAddressFirstService; +import com.balybus.galaxy.global.exception.BadRequestException; +import com.balybus.galaxy.global.exception.ExceptionCode; +import jakarta.transaction.Transactional; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.Optional; + +@Service +@Slf4j +@RequiredArgsConstructor +@Transactional +public class TblAddressFirstServiceImpl implements TblAddressFirstService { + private final TblAddressFirstRepository addressFirstRepository; + + /** + * 광역시.도 구분자 유효성 확인 + * @param afSeq Long:광역시.도 구분자 + * @return TblAddressFirst:광역시.도 Entity + */ + @Override + public TblAddressFirst validationCheck(Long afSeq) { + Optional firstOpt = addressFirstRepository.findById(afSeq); + if(firstOpt.isEmpty()) throw new BadRequestException(ExceptionCode.INVALID_ADDRESS); + return firstOpt.get(); + } +} diff --git a/src/main/java/com/balybus/galaxy/address/serviceImpl/service/TblAddressFirstServiceImple.java b/src/main/java/com/balybus/galaxy/address/serviceImpl/service/TblAddressFirstServiceImple.java deleted file mode 100644 index a48baa3f..00000000 --- a/src/main/java/com/balybus/galaxy/address/serviceImpl/service/TblAddressFirstServiceImple.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.balybus.galaxy.address.serviceImpl.service; - -import com.balybus.galaxy.address.serviceImpl.TblAddressFirstService; -import jakarta.transaction.Transactional; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -@Service -@Slf4j -@RequiredArgsConstructor -@Transactional -public class TblAddressFirstServiceImple implements TblAddressFirstService { -} diff --git a/src/main/java/com/balybus/galaxy/address/serviceImpl/service/TblAddressSecondServiceImpl.java b/src/main/java/com/balybus/galaxy/address/serviceImpl/service/TblAddressSecondServiceImpl.java index 7bfc1d2e..0ddd707c 100644 --- a/src/main/java/com/balybus/galaxy/address/serviceImpl/service/TblAddressSecondServiceImpl.java +++ b/src/main/java/com/balybus/galaxy/address/serviceImpl/service/TblAddressSecondServiceImpl.java @@ -1,14 +1,34 @@ package com.balybus.galaxy.address.serviceImpl.service; +import com.balybus.galaxy.address.domain.TblAddressSecond; +import com.balybus.galaxy.address.repository.TblAddressSecondRepository; import com.balybus.galaxy.address.serviceImpl.TblAddressSecondService; +import com.balybus.galaxy.global.exception.BadRequestException; +import com.balybus.galaxy.global.exception.ExceptionCode; import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.util.Optional; + @Service @Slf4j @RequiredArgsConstructor @Transactional public class TblAddressSecondServiceImpl implements TblAddressSecondService { + private final TblAddressSecondRepository addressSecondRepository; + + /** + * 시.군.구 구분자 유효성 확인 + * @param firstSeq Long:광역시.도 구분자 + * @param secondSeq Long:시.군.구 구분자 + * @return TblAddressSecond: 시.군.구 Entity + */ + @Override + public TblAddressSecond validationCheck(Long firstSeq, Long secondSeq) { + Optional secondOpt = addressSecondRepository.findByAddressFirstIdAndId(firstSeq, secondSeq); + if(secondOpt.isEmpty()) throw new BadRequestException(ExceptionCode.INVALID_ADDRESS); + return secondOpt.get(); + } } diff --git a/src/main/java/com/balybus/galaxy/address/serviceImpl/service/TblAddressThirdServiceImpl.java b/src/main/java/com/balybus/galaxy/address/serviceImpl/service/TblAddressThirdServiceImpl.java index 17094b1a..f0fdbf13 100644 --- a/src/main/java/com/balybus/galaxy/address/serviceImpl/service/TblAddressThirdServiceImpl.java +++ b/src/main/java/com/balybus/galaxy/address/serviceImpl/service/TblAddressThirdServiceImpl.java @@ -1,14 +1,34 @@ package com.balybus.galaxy.address.serviceImpl.service; +import com.balybus.galaxy.address.domain.TblAddressThird; +import com.balybus.galaxy.address.repository.TblAddressThirdRepository; import com.balybus.galaxy.address.serviceImpl.TblAddressThirdService; +import com.balybus.galaxy.global.exception.BadRequestException; +import com.balybus.galaxy.global.exception.ExceptionCode; import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.util.Optional; + @Service @Slf4j @RequiredArgsConstructor @Transactional public class TblAddressThirdServiceImpl implements TblAddressThirdService { + private final TblAddressThirdRepository addressThirdRepository; + + /** + * 읍.면.동 구분자 유효성 확인 + * @param secondSeq Long:시.군.구 구분자 + * @param thirdSeq Long:읍.면.동 구분자 + * @return TblAddressThird:읍.면.동 Entity + */ + @Override + public TblAddressThird validationCheck(Long secondSeq, Long thirdSeq) { + Optional thirdOpt = addressThirdRepository.findByAddressSecond_IdAndId(secondSeq, thirdSeq); + if(thirdOpt.isEmpty()) throw new BadRequestException(ExceptionCode.INVALID_ADDRESS); + return thirdOpt.get(); + } } diff --git a/src/main/java/com/balybus/galaxy/domain/tblCare/TblCareRepository.java b/src/main/java/com/balybus/galaxy/domain/tblCare/TblCareRepository.java index 1e5b8091..15cd0a87 100644 --- a/src/main/java/com/balybus/galaxy/domain/tblCare/TblCareRepository.java +++ b/src/main/java/com/balybus/galaxy/domain/tblCare/TblCareRepository.java @@ -17,4 +17,13 @@ public interface TblCareRepository extends JpaRepository { and care_val & :calValTotal <> 0 """, nativeQuery = true) List findByCareIdList(@Param("topCareSeq") Long topCareSeq, @Param("calValTotal") int calValTotal); + + @Query(value = """ + select group_concat(care_name separator ', ') + from tbl_care tc + where care_yn = true + and top_care_seq = :topCareSeq + and care_val & :calValTotal <> 0 + """, nativeQuery = true) + String findCalNameListStr(@Param("topCareSeq") Long topCareSeq, @Param("calValTotal") int calValTotal); } diff --git a/src/main/java/com/balybus/galaxy/domain/tblCare/service/TblCareService.java b/src/main/java/com/balybus/galaxy/domain/tblCare/service/TblCareService.java index 6048c88e..56398a2c 100644 --- a/src/main/java/com/balybus/galaxy/domain/tblCare/service/TblCareService.java +++ b/src/main/java/com/balybus/galaxy/domain/tblCare/service/TblCareService.java @@ -1,5 +1,7 @@ package com.balybus.galaxy.domain.tblCare.service; +import com.balybus.galaxy.domain.tblCare.dto.CareBaseDto; +import com.balybus.galaxy.domain.tblCare.dto.CareChoiceListDto; import com.balybus.galaxy.domain.tblCare.dto.CareRequestDto; import com.balybus.galaxy.domain.tblCare.dto.CareResponseDto; @@ -7,4 +9,5 @@ public interface TblCareService { CareResponseDto.GetAllCodeList getAllCodeList(); //전체 코드 조회 CareResponseDto.GetServiceCodeList getServiceCodeList(); //어르신 필요 서비스 리스트 항목 CareResponseDto.GetRequestCodeList getRequestCodeList(CareRequestDto.GetRequestCodeList req); //요청 종류 리스트 항목 + CareChoiceListDto getCareChoiceList(CareBaseDto careDto, boolean needWelfare); // 선택한 돌봄 항목 항목별 pk 값 리스트 반환 } diff --git a/src/main/java/com/balybus/galaxy/domain/tblCare/service/TblCareServiceImpl.java b/src/main/java/com/balybus/galaxy/domain/tblCare/service/TblCareServiceImpl.java index 594742c0..33bf793e 100644 --- a/src/main/java/com/balybus/galaxy/domain/tblCare/service/TblCareServiceImpl.java +++ b/src/main/java/com/balybus/galaxy/domain/tblCare/service/TblCareServiceImpl.java @@ -81,6 +81,7 @@ public CareResponseDto.GetRequestCodeList getRequestCodeList(CareRequestDto.GetR * @param needWelfare boolean:복리후생 데이터 반환 여부 * @return CareChoiceListDto */ + @Override public CareChoiceListDto getCareChoiceList(CareBaseDto careDto, boolean needWelfare){ CareChoiceListDto resultDto = new CareChoiceListDto(); for(TblCareTopEnum careTopEnum : TblCareTopEnum.values()) { @@ -119,4 +120,6 @@ public CareChoiceListDto getCareChoiceList(CareBaseDto careDto, boolean needWelf } return resultDto; } + + } diff --git a/src/main/java/com/balybus/galaxy/domain/tblMatching/MatchingServiceImpl.java b/src/main/java/com/balybus/galaxy/domain/tblMatching/MatchingServiceImpl.java index 0dc0753f..3068cf51 100644 --- a/src/main/java/com/balybus/galaxy/domain/tblMatching/MatchingServiceImpl.java +++ b/src/main/java/com/balybus/galaxy/domain/tblMatching/MatchingServiceImpl.java @@ -1,5 +1,6 @@ package com.balybus.galaxy.domain.tblMatching; +import com.balybus.galaxy.global.common.CommonServiceImpl; import com.balybus.galaxy.global.utils.mail.ContentType; import com.balybus.galaxy.global.utils.mail.SendMailRequest; import com.balybus.galaxy.global.utils.mail.SendMailUtils; @@ -20,7 +21,6 @@ import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.time.LocalDate; -import java.time.Period; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; @@ -35,6 +35,7 @@ public class MatchingServiceImpl { private final TblPatientLogRepository patientLogRepository; private final HelperRepository helperRepository; private final SendMailUtils sendMailUtils; + private final CommonServiceImpl commonService; @Async @Transactional @@ -93,7 +94,7 @@ public void matchingSystem(Long plSeq){ mailContentList.add(MailMatchingDto.HelperContentDto.builder() .name(helperEntity.getName()) .gender(helperEntity.getGender() == 1 ? "남" : "여") - .age(calculateAge(LocalDate.parse(helperEntity.getBirthday(), formatter))) + .age(commonService.calculateAge(LocalDate.parse(helperEntity.getBirthday(), formatter))) .build()); } matchingRepository.saveAll(saveMatchingList); @@ -120,12 +121,4 @@ public void matchingSystem(Long plSeq){ throw new RuntimeException(e); } } - - private int calculateAge(LocalDate birthDate) { - LocalDate currentDate = LocalDate.now(); - // 생일과 현재 날짜의 차이 계산 - Period period = Period.between(birthDate, currentDate); - // 나이는 Period 객체의 연도를 반환 - return period.getYears(); - } } diff --git a/src/main/java/com/balybus/galaxy/global/common/CommonService.java b/src/main/java/com/balybus/galaxy/global/common/CommonService.java index 06544b63..a2d3eee9 100644 --- a/src/main/java/com/balybus/galaxy/global/common/CommonService.java +++ b/src/main/java/com/balybus/galaxy/global/common/CommonService.java @@ -1,10 +1,17 @@ package com.balybus.galaxy.global.common; +import com.balybus.galaxy.address.domain.TblAddressFirst; +import com.balybus.galaxy.address.domain.TblAddressSecond; +import com.balybus.galaxy.address.domain.TblAddressThird; import com.balybus.galaxy.domain.tblImg.dto.ImgRequestDto; import com.balybus.galaxy.domain.tblImg.dto.ImgResponseDto; import com.balybus.galaxy.login.domain.type.RoleType; import org.springframework.security.core.userdetails.UserDetails; +import java.time.LocalDate; + public interface CommonService { ImgResponseDto.UploadUserImg uploadUserImg(UserDetails userDetails, RoleType roleType, ImgRequestDto.uploadUserImg dto); + int calculateAge(LocalDate birthDate); //만 나이 계산기 + String fullAddressString(TblAddressFirst first, TblAddressSecond second, TblAddressThird third); // 주소 반환 } diff --git a/src/main/java/com/balybus/galaxy/global/common/CommonServiceImpl.java b/src/main/java/com/balybus/galaxy/global/common/CommonServiceImpl.java index 155d3c65..8d7c6c24 100644 --- a/src/main/java/com/balybus/galaxy/global/common/CommonServiceImpl.java +++ b/src/main/java/com/balybus/galaxy/global/common/CommonServiceImpl.java @@ -1,5 +1,8 @@ package com.balybus.galaxy.global.common; +import com.balybus.galaxy.address.domain.TblAddressFirst; +import com.balybus.galaxy.address.domain.TblAddressSecond; +import com.balybus.galaxy.address.domain.TblAddressThird; import com.balybus.galaxy.domain.tblCenterManager.TblCenterManagerRepository; import com.balybus.galaxy.domain.tblImg.TblImg; import com.balybus.galaxy.domain.tblImg.dto.ImgRequestDto; @@ -21,6 +24,8 @@ import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; +import java.time.LocalDate; +import java.time.Period; import java.util.Map; @Slf4j @@ -123,4 +128,36 @@ private Long updateUserProfileImage( //4. 새로운 이미지 구분자 값 반환 return imgEntity == null ? null : imgEntity.getId(); } + + /** + * 나이 계산기(만 나이 반환) + * @param birthDate LocalDate:생년월일 + * @return int:만 나이 + */ + @Override + public int calculateAge(LocalDate birthDate) { + LocalDate currentDate = LocalDate.now(); + // 생일과 현재 날짜의 차이 계산 + Period period = Period.between(birthDate, currentDate); + // 나이는 Period 객체의 연도를 반환 + return period.getYears(); + } + + /** + * 주소 이름 정리 + * @param first TblAddressFirst:광역시.도 + * @param second TblAddressSecond:시.군.구 + * @param third TblAddressThird:읍.면.동 + * @return String + */ + @Override + public String fullAddressString(TblAddressFirst first, TblAddressSecond second, TblAddressThird third) { + String address = first.getName(); + + if(first.getId() * 1000 == second.getId()) address = second.getName(); + else if (second.getId() * 1000 == third.getId()) address += " " + third.getName(); + else address += " " + second.getName() + " " + third.getName(); + + return address; + } } diff --git a/src/main/java/com/balybus/galaxy/kakao/service/UserService.java b/src/main/java/com/balybus/galaxy/kakao/service/UserService.java index 9724f4de..e58c9d7e 100644 --- a/src/main/java/com/balybus/galaxy/kakao/service/UserService.java +++ b/src/main/java/com/balybus/galaxy/kakao/service/UserService.java @@ -6,7 +6,7 @@ import com.balybus.galaxy.kakao.dto.response.KakaoResponse; import com.balybus.galaxy.kakao.dto.response.OauthToken; import com.balybus.galaxy.kakao.repository.TblKakaoRepository; -import com.balybus.galaxy.login.serviceImpl.service.LoginServiceImpl; +import com.balybus.galaxy.login.serviceImpl.login.LoginServiceImpl; import com.balybus.galaxy.member.domain.TblUser; import com.balybus.galaxy.member.domain.type.LoginType; import com.balybus.galaxy.member.dto.request.MemberRequest; diff --git a/src/main/java/com/balybus/galaxy/login/controller/LoginController.java b/src/main/java/com/balybus/galaxy/login/controller/LoginController.java index c9803116..0e5ce457 100644 --- a/src/main/java/com/balybus/galaxy/login/controller/LoginController.java +++ b/src/main/java/com/balybus/galaxy/login/controller/LoginController.java @@ -14,7 +14,7 @@ import com.balybus.galaxy.login.dto.response.AccessTokenResponse; import com.balybus.galaxy.login.dto.response.RefreshTokenResponse; import com.balybus.galaxy.login.dto.response.TblHelperResponse; -import com.balybus.galaxy.login.serviceImpl.service.LoginServiceImpl; +import com.balybus.galaxy.login.serviceImpl.login.LoginServiceImpl; import com.balybus.galaxy.member.dto.request.MemberRequest; import com.balybus.galaxy.member.dto.response.MemberResponse; import io.swagger.v3.oas.annotations.Operation; diff --git a/src/main/java/com/balybus/galaxy/login/serviceImpl/LoginService.java b/src/main/java/com/balybus/galaxy/login/serviceImpl/login/LoginService.java similarity index 96% rename from src/main/java/com/balybus/galaxy/login/serviceImpl/LoginService.java rename to src/main/java/com/balybus/galaxy/login/serviceImpl/login/LoginService.java index 9d8b6d34..56dfd58c 100644 --- a/src/main/java/com/balybus/galaxy/login/serviceImpl/LoginService.java +++ b/src/main/java/com/balybus/galaxy/login/serviceImpl/login/LoginService.java @@ -1,4 +1,4 @@ -package com.balybus.galaxy.login.serviceImpl; +package com.balybus.galaxy.login.serviceImpl.login; import com.balybus.galaxy.domain.tblCenter.dto.CenterRequestDto; import com.balybus.galaxy.domain.tblCenter.dto.CenterResponseDto; diff --git a/src/main/java/com/balybus/galaxy/login/serviceImpl/service/LoginServiceImpl.java b/src/main/java/com/balybus/galaxy/login/serviceImpl/login/LoginServiceImpl.java similarity index 99% rename from src/main/java/com/balybus/galaxy/login/serviceImpl/service/LoginServiceImpl.java rename to src/main/java/com/balybus/galaxy/login/serviceImpl/login/LoginServiceImpl.java index e2f446e9..eba9b8de 100644 --- a/src/main/java/com/balybus/galaxy/login/serviceImpl/service/LoginServiceImpl.java +++ b/src/main/java/com/balybus/galaxy/login/serviceImpl/login/LoginServiceImpl.java @@ -1,4 +1,4 @@ -package com.balybus.galaxy.login.serviceImpl.service; +package com.balybus.galaxy.login.serviceImpl.login; import com.balybus.galaxy.domain.tblAuthenticationMail.TblAuthenticationMail; import com.balybus.galaxy.domain.tblAuthenticationMail.TblAuthenticationMailMsgEnum; @@ -31,9 +31,7 @@ import com.balybus.galaxy.login.dto.request.HelperCertDTO; import com.balybus.galaxy.login.dto.request.RefreshTokenDTO; import com.balybus.galaxy.login.dto.request.SignUpDTO; -import com.balybus.galaxy.login.dto.response.TblHelperResponse; import com.balybus.galaxy.login.infrastructure.jwt.TokenProvider; -import com.balybus.galaxy.login.serviceImpl.LoginService; import com.balybus.galaxy.member.domain.TblUser; import com.balybus.galaxy.member.domain.type.LoginType; import com.balybus.galaxy.member.dto.request.MemberRequest; diff --git a/src/main/java/com/balybus/galaxy/login/serviceImpl/loginAuth/LoginAuthCheckService.java b/src/main/java/com/balybus/galaxy/login/serviceImpl/loginAuth/LoginAuthCheckService.java new file mode 100644 index 00000000..0d5305b2 --- /dev/null +++ b/src/main/java/com/balybus/galaxy/login/serviceImpl/loginAuth/LoginAuthCheckService.java @@ -0,0 +1,7 @@ +package com.balybus.galaxy.login.serviceImpl.loginAuth; + +import com.balybus.galaxy.domain.tblCenterManager.TblCenterManager; + +public interface LoginAuthCheckService { + TblCenterManager checkManager(String userEmail); // 관리자 권한 확인 +} diff --git a/src/main/java/com/balybus/galaxy/login/serviceImpl/loginAuth/LoginAuthCheckServiceImpl.java b/src/main/java/com/balybus/galaxy/login/serviceImpl/loginAuth/LoginAuthCheckServiceImpl.java new file mode 100644 index 00000000..fdcdcc80 --- /dev/null +++ b/src/main/java/com/balybus/galaxy/login/serviceImpl/loginAuth/LoginAuthCheckServiceImpl.java @@ -0,0 +1,33 @@ +package com.balybus.galaxy.login.serviceImpl.loginAuth; + +import com.balybus.galaxy.domain.tblCenterManager.TblCenterManager; +import com.balybus.galaxy.domain.tblCenterManager.TblCenterManagerRepository; +import com.balybus.galaxy.global.exception.BadRequestException; +import com.balybus.galaxy.global.exception.ExceptionCode; +import com.balybus.galaxy.login.domain.type.RoleType; +import com.balybus.galaxy.member.domain.TblUser; +import com.balybus.galaxy.member.repository.MemberRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Optional; + +@Service +@RequiredArgsConstructor +public class LoginAuthCheckServiceImpl implements LoginAuthCheckService{ + private final MemberRepository memberRepository; + private final TblCenterManagerRepository centerManagerRepository; + @Override + public TblCenterManager checkManager(String userEmail) { + //1. 로그인 테이블 조회 + Optional userOpt = memberRepository.findByEmail(userEmail); // 토큰 이메일로 정보 조회 + if(userOpt.isEmpty()) throw new BadRequestException(ExceptionCode.DO_NOT_LOGIN); + TblUser userEntity = userOpt.get(); + + //2. 관리자 테이블 조회 + Optional centerManagerOpt = centerManagerRepository.findByMember_Id(userEntity.getId()); + if(!userEntity.getUserAuth().equals(RoleType.MANAGER) + || centerManagerOpt.isEmpty()) throw new BadRequestException(ExceptionCode.NOT_FOUND_MANAGER); + return centerManagerOpt.get(); + } +} diff --git a/src/main/java/com/balybus/galaxy/patient/controller/PatientController.java b/src/main/java/com/balybus/galaxy/patient/controller/PatientController.java index 77758a0d..e701c3e9 100644 --- a/src/main/java/com/balybus/galaxy/patient/controller/PatientController.java +++ b/src/main/java/com/balybus/galaxy/patient/controller/PatientController.java @@ -61,7 +61,7 @@ public ResponseEntity updatePatientInfo(@AuthenticationPrincipal UserDetails return ResponseEntity.ok().body(patientService.updatePatientInfo(userDetails.getUsername(), dto)); } - @PostMapping("/{patientSeq}/detail") + @GetMapping("/{patientSeq}/detail") @Operation(summary = "어르신 정보 상세 조회 API", description = "어르신 정보를 조회합니다.") @ApiResponses({ @ApiResponse(responseCode = "200", description = "수정 성공", @@ -80,6 +80,25 @@ public ResponseEntity getOnePatientInfo(@AuthenticationPrincipal UserDetails return ResponseEntity.ok().body(patientService.getOnePatientInfo(userDetails.getUsername(), patientSeq)); } + @GetMapping("/list") + @Operation(summary = "어르신 리스트 조회 API", description = "어르신 리스트 정보를 조회합니다.") + @ApiResponses({ + @ApiResponse(responseCode = "200", description = "수정 성공", + content = @Content(schema = @Schema(implementation = PatientResponseDto.SavePatientInfo.class))), + @ApiResponse(responseCode = "4008", description = "사용자정의에러코드:로그인이 정보 없음(쿠키 없음)", + content = @Content(schema = @Schema(implementation = ErrorResponse.class))), + @ApiResponse(responseCode = "7000", description = "사용자정의에러코드:로그인한 사용자의 권한이 매니저가 아닙니다.", + content = @Content(schema = @Schema(implementation = ErrorResponse.class))), + @ApiResponse(responseCode = "8000", description = "사용자정의에러코드:해당 어르신 정보를 찾을 수 없습니다.", + content = @Content(schema = @Schema(implementation = ErrorResponse.class))), + @ApiResponse(responseCode = "7001", description = "사용자정의에러코드:조회 권한 없음", + content = @Content(schema = @Schema(implementation = ErrorResponse.class))) + }) + public ResponseEntity getPatientList(@AuthenticationPrincipal UserDetails userDetails, + PatientRequestDto.GetPatientList dto) { + return ResponseEntity.ok().body(patientService.getPatientList(userDetails.getUsername(), dto)); + } + @PostMapping("/recruit-helper") @Operation(summary = "어르신 요양보호사 공고 등록 API") public ResponseEntity recruitHelper(@AuthenticationPrincipal UserDetails userDetails, diff --git a/src/main/java/com/balybus/galaxy/patient/domain/tblPatient/TblPatientRepository.java b/src/main/java/com/balybus/galaxy/patient/domain/tblPatient/TblPatientRepository.java index 01bc0b5a..c821abb7 100644 --- a/src/main/java/com/balybus/galaxy/patient/domain/tblPatient/TblPatientRepository.java +++ b/src/main/java/com/balybus/galaxy/patient/domain/tblPatient/TblPatientRepository.java @@ -1,5 +1,7 @@ package com.balybus.galaxy.patient.domain.tblPatient; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @@ -7,6 +9,6 @@ @Repository public interface TblPatientRepository extends JpaRepository { - Optional findByName(String name); + Page findByManagerId(Long managerSeq, Pageable page); } diff --git a/src/main/java/com/balybus/galaxy/patient/dto/PatientRequestDto.java b/src/main/java/com/balybus/galaxy/patient/dto/PatientRequestDto.java index 0a61633a..eb2db2eb 100644 --- a/src/main/java/com/balybus/galaxy/patient/dto/PatientRequestDto.java +++ b/src/main/java/com/balybus/galaxy/patient/dto/PatientRequestDto.java @@ -6,6 +6,7 @@ import com.balybus.galaxy.domain.tblCenterManager.TblCenterManager; import com.balybus.galaxy.patient.domain.tblPatient.TblPatient; import com.balybus.galaxy.patient.domain.tblPatientLog.TblPatientLog; +import com.balybus.galaxy.patient.dto.baseDto.PatientBaseDto; import lombok.Data; import lombok.EqualsAndHashCode; @@ -47,6 +48,12 @@ public static class UpdatePatientInfo extends PatientBaseDto { } + @Data + public static class GetPatientList { + private Integer pageNo; + private Integer pageSize; + } + @Data @EqualsAndHashCode(callSuper = true) public static class RecruitHelper extends UpdatePatientInfo { diff --git a/src/main/java/com/balybus/galaxy/patient/dto/PatientResponseDto.java b/src/main/java/com/balybus/galaxy/patient/dto/PatientResponseDto.java index edcef2aa..907c1fef 100644 --- a/src/main/java/com/balybus/galaxy/patient/dto/PatientResponseDto.java +++ b/src/main/java/com/balybus/galaxy/patient/dto/PatientResponseDto.java @@ -3,6 +3,7 @@ import com.balybus.galaxy.domain.tblCare.dto.CareChoiceListDto; import com.balybus.galaxy.patient.domain.tblPatient.TblPatient; import com.balybus.galaxy.patient.domain.tblPatientTime.TblPatientTime; +import com.balybus.galaxy.patient.dto.baseDto.PatientBaseDto; import lombok.Builder; import lombok.Data; import lombok.EqualsAndHashCode; @@ -15,18 +16,18 @@ public class PatientResponseDto { @Getter @SuperBuilder - public static class basicDto { + public static class BasicDto { private Long patientSeq; // 어르신 정보 구분자 값 private String managerEmail; // 담당자 이메일 } @Getter @SuperBuilder - public static class SavePatientInfo extends basicDto { } + public static class SavePatientInfo extends BasicDto { } @Getter @SuperBuilder - public static class UpdatePatientInfo extends basicDto { } + public static class UpdatePatientInfo extends BasicDto { } @Data @EqualsAndHashCode(callSuper = true) @@ -72,6 +73,27 @@ public void setCareBaseDtoNull(){ } + @Getter + @Builder + public static class GetPatientList { + private int totalPage; // 전페 페이지 개수 + private long totalEle; // 전체 리스트 개수 + private boolean hasNext; // 다음 페이지 존재 여부 + private List list; // 리스트 + } + + @Getter + @Builder + public static class GetPatientListInfo { + private Long patientSeq; // 구분자 + private String name; // 이름 + private String genderStr; // 성별 + private int age; // 나이 + private String careLevelStr; // 근무종류 + private String address; // 주소지 + private String inmateStateStr; // 장기요양등급 + } + @Getter @Builder public static class RecruitHelper{ diff --git a/src/main/java/com/balybus/galaxy/patient/dto/PatientBaseDto.java b/src/main/java/com/balybus/galaxy/patient/dto/baseDto/PatientBaseDto.java similarity index 98% rename from src/main/java/com/balybus/galaxy/patient/dto/PatientBaseDto.java rename to src/main/java/com/balybus/galaxy/patient/dto/baseDto/PatientBaseDto.java index 9ba4f99c..b7f1c971 100644 --- a/src/main/java/com/balybus/galaxy/patient/dto/PatientBaseDto.java +++ b/src/main/java/com/balybus/galaxy/patient/dto/baseDto/PatientBaseDto.java @@ -1,4 +1,4 @@ -package com.balybus.galaxy.patient.dto; +package com.balybus.galaxy.patient.dto.baseDto; import com.balybus.galaxy.domain.tblCare.dto.CareBaseDto; import com.balybus.galaxy.patient.domain.tblPatient.TblPatient; diff --git a/src/main/java/com/balybus/galaxy/patient/service/PatientService.java b/src/main/java/com/balybus/galaxy/patient/service/PatientService.java index 3ba14cda..4bafc2a9 100644 --- a/src/main/java/com/balybus/galaxy/patient/service/PatientService.java +++ b/src/main/java/com/balybus/galaxy/patient/service/PatientService.java @@ -8,5 +8,6 @@ public interface PatientService { PatientResponseDto.SavePatientInfo savePatientInfo(String userEmail, PatientRequestDto.SavePatientInfo dto); // 어르신 등록 PatientResponseDto.UpdatePatientInfo updatePatientInfo(String userEmail, PatientRequestDto.UpdatePatientInfo dto); // 어르신 정보 수정 PatientResponseDto.GetOnePatientInfo getOnePatientInfo(String userEmail, Long patientSeq); // 어르신 정보 상세 조회 + PatientResponseDto.GetPatientList getPatientList(String userEmail,PatientRequestDto.GetPatientList dto); // 어르신 리스트 조회 PatientResponseDto.RecruitHelper recruitHelper(UserDetails userDetails, PatientRequestDto.RecruitHelper dto); // 어르신 공고 등록 } diff --git a/src/main/java/com/balybus/galaxy/patient/service/serviceImpl/PatientServiceImpl.java b/src/main/java/com/balybus/galaxy/patient/service/serviceImpl/PatientServiceImpl.java index 4f546ac2..0c002f8d 100644 --- a/src/main/java/com/balybus/galaxy/patient/service/serviceImpl/PatientServiceImpl.java +++ b/src/main/java/com/balybus/galaxy/patient/service/serviceImpl/PatientServiceImpl.java @@ -3,18 +3,18 @@ import com.balybus.galaxy.address.domain.TblAddressFirst; import com.balybus.galaxy.address.domain.TblAddressSecond; import com.balybus.galaxy.address.domain.TblAddressThird; -import com.balybus.galaxy.address.repository.TblAddressFirstRepository; -import com.balybus.galaxy.address.repository.TblAddressSecondRepository; -import com.balybus.galaxy.address.repository.TblAddressThirdRepository; +import com.balybus.galaxy.address.serviceImpl.service.TblAddressFirstServiceImpl; +import com.balybus.galaxy.address.serviceImpl.service.TblAddressSecondServiceImpl; +import com.balybus.galaxy.address.serviceImpl.service.TblAddressThirdServiceImpl; +import com.balybus.galaxy.domain.tblCare.TblCareRepository; +import com.balybus.galaxy.domain.tblCare.TblCareTopEnum; import com.balybus.galaxy.domain.tblCare.service.TblCareServiceImpl; import com.balybus.galaxy.domain.tblCenterManager.TblCenterManager; -import com.balybus.galaxy.domain.tblCenterManager.TblCenterManagerRepository; import com.balybus.galaxy.domain.tblMatching.MatchingServiceImpl; +import com.balybus.galaxy.global.common.CommonServiceImpl; import com.balybus.galaxy.global.exception.BadRequestException; import com.balybus.galaxy.global.exception.ExceptionCode; -import com.balybus.galaxy.login.domain.type.RoleType; -import com.balybus.galaxy.member.domain.TblUser; -import com.balybus.galaxy.member.repository.MemberRepository; +import com.balybus.galaxy.login.serviceImpl.loginAuth.LoginAuthCheckServiceImpl; import com.balybus.galaxy.patient.domain.tblPatient.TblPatient; import com.balybus.galaxy.patient.domain.tblPatient.TblPatientRepository; import com.balybus.galaxy.patient.domain.tblPatientLog.TblPatientLog; @@ -23,18 +23,23 @@ import com.balybus.galaxy.patient.domain.tblPatientTime.TblPatientTimeRepository; import com.balybus.galaxy.patient.domain.tblPatientTimeLog.TblPatientTimeLog; import com.balybus.galaxy.patient.domain.tblPatientTimeLog.TblPatientTimeLogRepository; -import com.balybus.galaxy.patient.dto.PatientBaseDto; +import com.balybus.galaxy.patient.dto.baseDto.PatientBaseDto; import com.balybus.galaxy.patient.dto.PatientRequestDto; import com.balybus.galaxy.patient.dto.PatientResponseDto; import com.balybus.galaxy.patient.service.PatientService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.Duration; +import java.time.LocalDate; import java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.util.*; @@ -49,15 +54,32 @@ public class PatientServiceImpl implements PatientService { private final TblPatientTimeRepository patientTimeRepository; private final TblPatientLogRepository patientLogRepository; private final TblPatientTimeLogRepository patientTimeLogRepository; + private final TblCareRepository careRepository; - private final MemberRepository memberRepository; - private final TblCenterManagerRepository centerManagerRepository; - private final TblAddressFirstRepository addressFirstRepository; - private final TblAddressSecondRepository addressSecondRepository; - private final TblAddressThirdRepository addressThirdRepository; - + private final LoginAuthCheckServiceImpl loginAuthCheckService; private final MatchingServiceImpl matchingService; private final TblCareServiceImpl careService; + private final CommonServiceImpl commonService; + private final TblAddressFirstServiceImpl firstAddressService; + private final TblAddressSecondServiceImpl secondAddressService; + private final TblAddressThirdServiceImpl thirdAddressService; + + /** + * 관리자 사용자의 어르신 정보 접근 권한 확인 + * @param patientSeq Long: 어르신(TblPatient) 구분자 + * @param managerSeq Long: 센터 관리자(TblCenterManager) 구분자 + * @return TblPatient + */ + private TblPatient checkPatientManagerAuth(Long patientSeq, Long managerSeq){ + Optional patientOpt = patientRepository.findById(patientSeq); + if(patientOpt.isEmpty()) throw new BadRequestException(ExceptionCode.NOT_FOUND_PATIENT); + TblPatient patient = patientOpt.get(); + if(!patient.getManager().getId().equals(managerSeq)) + throw new BadRequestException(ExceptionCode.UNAUTHORIZED_UPDATE); + + return patient; + } + /** * 어르신 정보 등록 @@ -69,28 +91,16 @@ public class PatientServiceImpl implements PatientService { @Transactional public PatientResponseDto.SavePatientInfo savePatientInfo(String userEmail, PatientRequestDto.SavePatientInfo dto) { //1. 관리자 정보 조회 - //1-1. 로그인 테이블 조회 - Optional userOpt = memberRepository.findByEmail(userEmail); // 토큰 이메일로 정보 조회 - if(userOpt.isEmpty()) throw new BadRequestException(ExceptionCode.DO_NOT_LOGIN); - TblUser userEntity = userOpt.get(); - - //1-2. 관리자 테이블 조회 - Optional centerManagerOpt = centerManagerRepository.findByMember_Id(userEntity.getId()); - if(!userEntity.getUserAuth().equals(RoleType.MANAGER) - || centerManagerOpt.isEmpty()) throw new BadRequestException(ExceptionCode.NOT_FOUND_MANAGER); - TblCenterManager centerManager = centerManagerOpt.get(); + TblCenterManager centerManager = loginAuthCheckService.checkManager(userEmail); //2. 어르신 정보 등록 //2-1. 주소 정보 검증 - Optional firstOpt = addressFirstRepository.findById(dto.getAfSeq()); - if(firstOpt.isEmpty()) throw new BadRequestException(ExceptionCode.INVALID_ADDRESS); - Optional secondOpt = addressSecondRepository.findById(dto.getAsSeq()); - if(secondOpt.isEmpty()) throw new BadRequestException(ExceptionCode.INVALID_ADDRESS); - Optional thirdOpt = addressThirdRepository.findById(dto.getAtSeq()); - if(thirdOpt.isEmpty()) throw new BadRequestException(ExceptionCode.INVALID_ADDRESS); + TblAddressFirst firstAddress = firstAddressService.validationCheck(dto.getAfSeq()); + TblAddressSecond secondAddress = secondAddressService.validationCheck(dto.getAfSeq(), dto.getAsSeq()); + TblAddressThird thirdAddress = thirdAddressService.validationCheck(dto.getAsSeq(), dto.getAtSeq()); //2-2. 어르신 정보 entity 전환 및 저장 - TblPatient patient = patientRepository.save(dto.toEntity(centerManager, firstOpt.get(), secondOpt.get(), thirdOpt.get())); + TblPatient patient = patientRepository.save(dto.toEntity(centerManager, firstAddress, secondAddress, thirdAddress)); //3. 어르신 돌봄 시간 요일(리스트 정보) entity 전환 및 저장 List savePatientTimeList = new ArrayList<>(); @@ -116,36 +126,19 @@ public PatientResponseDto.SavePatientInfo savePatientInfo(String userEmail, Pati @Transactional public PatientResponseDto.UpdatePatientInfo updatePatientInfo(String userEmail, PatientRequestDto.UpdatePatientInfo dto) { //1. 관리자 정보 조회 - //1-1. 로그인 테이블 조회 - Optional userOpt = memberRepository.findByEmail(userEmail); // 토큰 이메일로 정보 조회 - if(userOpt.isEmpty()) throw new BadRequestException(ExceptionCode.DO_NOT_LOGIN); - TblUser userEntity = userOpt.get(); - - //1-2. 관리자 테이블 조회 - Optional centerManagerOpt = centerManagerRepository.findByMember_Id(userEntity.getId()); - if(!userEntity.getUserAuth().equals(RoleType.MANAGER) - || centerManagerOpt.isEmpty()) throw new BadRequestException(ExceptionCode.NOT_FOUND_MANAGER); - TblCenterManager centerManager = centerManagerOpt.get(); - + TblCenterManager centerManager = loginAuthCheckService.checkManager(userEmail); //2. 어르신 정보 조회 (어르신 구분자 & 관리자 구분자) 및 수정 //2-1. 어르신 데이터 조회 - Optional patientOpt = patientRepository.findById(dto.getPatientSeq()); - if(patientOpt.isEmpty()) throw new BadRequestException(ExceptionCode.NOT_FOUND_PATIENT); - TblPatient patient = patientOpt.get(); - if(!patient.getManager().getId().equals(centerManager.getId())) - throw new BadRequestException(ExceptionCode.UNAUTHORIZED_UPDATE); + TblPatient patient = checkPatientManagerAuth(dto.getPatientSeq(), centerManager.getId()); //2-2. 주소 정보 검증 - Optional firstOpt = addressFirstRepository.findById(dto.getAfSeq()); - if(firstOpt.isEmpty()) throw new BadRequestException(ExceptionCode.INVALID_ADDRESS); - Optional secondOpt = addressSecondRepository.findById(dto.getAsSeq()); - if(secondOpt.isEmpty()) throw new BadRequestException(ExceptionCode.INVALID_ADDRESS); - Optional thirdOpt = addressThirdRepository.findById(dto.getAtSeq()); - if(thirdOpt.isEmpty()) throw new BadRequestException(ExceptionCode.INVALID_ADDRESS); + TblAddressFirst firstAddress = firstAddressService.validationCheck(dto.getAfSeq()); + TblAddressSecond secondAddress = secondAddressService.validationCheck(dto.getAfSeq(), dto.getAsSeq()); + TblAddressThird thirdAddress = thirdAddressService.validationCheck(dto.getAsSeq(), dto.getAtSeq()); //2-3. 데이터 수정 - patient.basicUpdate(dto, firstOpt.get(), secondOpt.get(), thirdOpt.get()); + patient.basicUpdate(dto, firstAddress, secondAddress, thirdAddress); //3. 어르신 돌봄 시간 요일 조회 및 삭제 List patientTimeList = patientTimeRepository.findByPatient_Id(patient.getId()); @@ -174,24 +167,10 @@ public PatientResponseDto.UpdatePatientInfo updatePatientInfo(String userEmail, @Override public PatientResponseDto.GetOnePatientInfo getOnePatientInfo(String userEmail, Long patientSeq) { //1. 관리자 정보 조회 - //1-1. 로그인 테이블 조회 - Optional userOpt = memberRepository.findByEmail(userEmail); // 토큰 이메일로 정보 조회 - if(userOpt.isEmpty()) throw new BadRequestException(ExceptionCode.DO_NOT_LOGIN); - TblUser userEntity = userOpt.get(); - - //1-2. 관리자 테이블 조회 - Optional centerManagerOpt = centerManagerRepository.findByMember_Id(userEntity.getId()); - if(!userEntity.getUserAuth().equals(RoleType.MANAGER) - || centerManagerOpt.isEmpty()) throw new BadRequestException(ExceptionCode.NOT_FOUND_MANAGER); - TblCenterManager centerManager = centerManagerOpt.get(); + TblCenterManager centerManager = loginAuthCheckService.checkManager(userEmail); //2. 어르신 정보 조회 (어르신 구분자 & 관리자 구분자) - Optional patientOpt = patientRepository.findById(patientSeq); - if(patientOpt.isEmpty()) throw new BadRequestException(ExceptionCode.NOT_FOUND_PATIENT); - TblPatient patient = patientOpt.get(); - if(!patient.getManager().getId().equals(centerManager.getId())) - throw new BadRequestException(ExceptionCode.UNAUTHORIZED_UPDATE); - + TblPatient patient = checkPatientManagerAuth(patientSeq, centerManager.getId()); //3. 어르신 돌봄 시간 요일 조회 List patientTimeList = patientTimeRepository.findByPatient_Id(patient.getId()); @@ -203,6 +182,43 @@ public PatientResponseDto.GetOnePatientInfo getOnePatientInfo(String userEmail, return resultDto; } + @Override + public PatientResponseDto.GetPatientList getPatientList(String userEmail, PatientRequestDto.GetPatientList dto) { + //1. 관리자 정보 조회 + TblCenterManager centerManager = loginAuthCheckService.checkManager(userEmail); + + //2. 해당 관리자가 관리중인 어르신 리스트 조회 + Pageable page = PageRequest.of( + dto.getPageNo()==null ? 0 : dto.getPageNo() + , dto.getPageSize()==null ? 10 : dto.getPageSize() + , Sort.by(Sort.Order.asc("name"), Sort.Order.desc("birthDate"), Sort.Order.desc("id"))); + Page listPage = patientRepository.findByManagerId(centerManager.getId(), page); + List patientEntityList = listPage.getContent(); + + //3. 성별/근무종류/주소지/장기요양등급 각 항목 이름 조회 및 dto 리스트 정리 + List resultList = new ArrayList<>(); + for (TblPatient entity : patientEntityList) { + resultList.add( + PatientResponseDto.GetPatientListInfo.builder() + .patientSeq(entity.getId()) + .name(entity.getName()) + .age(commonService.calculateAge(LocalDate.parse(entity.getBirthDate(), java.time.format.DateTimeFormatter.BASIC_ISO_DATE))) + .address(commonService.fullAddressString(entity.getTblAddressFirst(), entity.getTblAddressSecond(), entity.getTblAddressThird())) + .genderStr(careRepository.findCalNameListStr(TblCareTopEnum.GENDER.getCareSeq(), entity.getGender())) + .careLevelStr(careRepository.findCalNameListStr(TblCareTopEnum.CARE_LEVEL.getCareSeq(), entity.getCareLevel())) + .inmateStateStr(careRepository.findCalNameListStr(TblCareTopEnum.INMATE_STATE.getCareSeq(), entity.getInmateState())) + .build()); + } + + //4. 결과 반환 + return PatientResponseDto.GetPatientList.builder() + .totalPage(listPage.getTotalPages()) + .totalEle(listPage.getTotalElements()) + .hasNext(listPage.hasNext()) + .list(resultList) + .build(); + } + /** * 어르신 공고 등록 * @param userDetails UserDetails:토큰 조회 결과 데이터 @@ -213,33 +229,19 @@ public PatientResponseDto.GetOnePatientInfo getOnePatientInfo(String userEmail, @Transactional public PatientResponseDto.RecruitHelper recruitHelper(UserDetails userDetails, PatientRequestDto.RecruitHelper dto) { //1. 관리자 정보 조회 - //1-1. 로그인 테이블 조회 - Optional userOpt = memberRepository.findByEmail(userDetails.getUsername()); // 토큰 이메일로 정보 조회 - if(userOpt.isEmpty()) throw new BadRequestException(ExceptionCode.NOT_FOUND_MANAGER); - - //1-2. 관리자 테이블 조회 - Optional centerManagerOpt = centerManagerRepository.findByMember_Id(userOpt.get().getId()); - if(centerManagerOpt.isEmpty()) throw new BadRequestException(ExceptionCode.NOT_FOUND_MANAGER); - TblCenterManager centerManager = centerManagerOpt.get(); + TblCenterManager centerManager = loginAuthCheckService.checkManager(userDetails.getUsername()); //2. 어르신 정보 조회 (어르신 구분자 & 관리자 구분자) 및 수정 & 로그 등록 //2-1. 어르신 데이터 조회 - Optional patientOpt = patientRepository.findById(dto.getPatientSeq()); - if(patientOpt.isEmpty()) throw new BadRequestException(ExceptionCode.NOT_FOUND_PATIENT); - TblPatient patient = patientOpt.get(); - if(!patient.getManager().getId().equals(centerManager.getId())) - throw new BadRequestException(ExceptionCode.UNAUTHORIZED_UPDATE); + TblPatient patient = checkPatientManagerAuth(dto.getPatientSeq(), centerManager.getId()); //2-2. 주소 정보 검증 - Optional firstOpt = addressFirstRepository.findById(dto.getAfSeq()); - if(firstOpt.isEmpty()) throw new BadRequestException(ExceptionCode.INVALID_ADDRESS); - Optional secondOpt = addressSecondRepository.findById(dto.getAsSeq()); - if(secondOpt.isEmpty()) throw new BadRequestException(ExceptionCode.INVALID_ADDRESS); - Optional thirdOpt = addressThirdRepository.findById(dto.getAtSeq()); - if(thirdOpt.isEmpty()) throw new BadRequestException(ExceptionCode.INVALID_ADDRESS); + TblAddressFirst firstAddress = firstAddressService.validationCheck(dto.getAfSeq()); + TblAddressSecond secondAddress = secondAddressService.validationCheck(dto.getAfSeq(), dto.getAsSeq()); + TblAddressThird thirdAddress = thirdAddressService.validationCheck(dto.getAsSeq(), dto.getAtSeq()); //2-3. 데이터 수정 - patient.basicUpdate(dto, firstOpt.get(), secondOpt.get(), thirdOpt.get()); + patient.basicUpdate(dto, firstAddress, secondAddress, thirdAddress); //2-4. 임금 계산 Map calWage = calWage(dto.getWageState(), dto.getWage(), dto.getTimeList()); @@ -249,7 +251,7 @@ public PatientResponseDto.RecruitHelper recruitHelper(UserDetails userDetails, P dto.toEntity( patient, centerManager, calWage.get("timeWage"), calWage.get("dayWage"), calWage.get("weekWage"), - firstOpt.get(), secondOpt.get(), thirdOpt.get())); + firstAddress, secondAddress, thirdAddress)); //3. 어르신 돌봄 시간 요일 조회 및 삭제 List patientTimeList = patientTimeRepository.findByPatient_Id(patient.getId());