From 2d06d104535bdde62531655bea4b2a2908ad271a Mon Sep 17 00:00:00 2001 From: jg Date: Sat, 26 Jul 2025 21:26:41 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[FEATURE]=20=EC=9A=94=EC=96=91=EB=B3=B4?= =?UTF-8?q?=ED=98=B8=EC=82=AC=20-=20=EC=96=B4=EB=A5=B4=EC=8B=A0=20?= =?UTF-8?q?=EA=B3=B5=EA=B3=A0=20=EC=83=81=EC=84=B8=20=EC=A1=B0=ED=9A=8C=20?= =?UTF-8?q?API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../patient/recruit/RecruitController.java | 21 ++++++- .../recruit/dto/RecruitResponseDto.java | 57 +++++++++++++++++++ .../recruit/service/RecruitService.java | 2 +- .../recruit/service/RecruitServiceImpl.java | 44 ++++++++++---- 4 files changed, 111 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/balybus/galaxy/patient/recruit/RecruitController.java b/src/main/java/com/balybus/galaxy/patient/recruit/RecruitController.java index 58eb7ae9..38216c19 100644 --- a/src/main/java/com/balybus/galaxy/patient/recruit/RecruitController.java +++ b/src/main/java/com/balybus/galaxy/patient/recruit/RecruitController.java @@ -88,7 +88,26 @@ public ResponseEntity getRecruitPersonalList(@AuthenticationPrincipal UserDet }) public ResponseEntity getOneRecruitPatientInfo(@AuthenticationPrincipal UserDetails userDetails, @PathVariable("patientLogSeq") Long patientLogSeq) { - return ResponseEntity.ok().body(noticeService.getOneRecruitPatientInfo(userDetails.getUsername(), patientLogSeq)); + return ResponseEntity.ok().body(noticeService.getOneRecruitPatientInfo(userDetails.getUsername(), patientLogSeq, true)); + } + + @GetMapping("/{patientLogSeq}/detail-helper") + @Operation(summary = "요양보호사 - 어르신 공고 상세 조회 API", description = "어르신 공고를 조회합니다.") + @ApiResponses({ + @ApiResponse(responseCode = "200", description = "수정 성공", + content = @Content(schema = @Schema(implementation = RecruitResponseDto.GetOneRecruitPatientInfo.class))), + @ApiResponse(responseCode = "4008", description = "사용자정의에러코드:로그인이 정보 없음(쿠키 없음)", + content = @Content(schema = @Schema(implementation = ErrorResponse.class))), + @ApiResponse(responseCode = "8001", description = "사용자정의에러코드:NOT_FOUND_PATIENT_RECRUIT", + 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 getOneRecruitPatientInfoToHelper(@AuthenticationPrincipal UserDetails userDetails, + @PathVariable("patientLogSeq") Long patientLogSeq) { + return ResponseEntity.ok().body(noticeService.getOneRecruitPatientInfo(userDetails.getUsername(), patientLogSeq, false)); } diff --git a/src/main/java/com/balybus/galaxy/patient/recruit/dto/RecruitResponseDto.java b/src/main/java/com/balybus/galaxy/patient/recruit/dto/RecruitResponseDto.java index ea7401b3..e9a637e6 100644 --- a/src/main/java/com/balybus/galaxy/patient/recruit/dto/RecruitResponseDto.java +++ b/src/main/java/com/balybus/galaxy/patient/recruit/dto/RecruitResponseDto.java @@ -102,6 +102,63 @@ public void setCareBaseDtoNull(){ } + @Data + @EqualsAndHashCode(callSuper = true) + public static class GetOneRecruitPatientInfoToHelper extends PatientBaseDto { + private Boolean linkingYn; //어르신 기본정보로 업데이트 할 것인지 여부 + private Boolean wageNegotiation; //급여 협의 여부 + private int wageState; // 1:시급, 2:일급, 3:주급 구분 + private int wage; // 급여 + private String requestContents; // 기타 요청 사항 + + private CareChoiceListDto careChoice; + public GetOneRecruitPatientInfoToHelper(TblPatientLog patient, List patientTimeList){ + this.wageNegotiation = patient.getWageNegotiation(); + this.wageState = patient.getWageState(); + this.wage = patient.getWage(); + this.requestContents = patient.getRequestContents(); + this.welfare = patient.getWelfare(); // 복리후생 + + this.afSeq = patient.getTblAddressFirst().getId(); // 광역시.도 구분자 + this.asSeq = patient.getTblAddressSecond().getId(); // 시.군.구 구분자 + this.atSeq = patient.getTblAddressThird().getId(); // 읍.면.동 구분자 + this.careLevel = patient.getCareLevel(); // 장기요양등급 + this.inmateState = patient.getInmateState(); // 동거인 여부 + this.workType = patient.getWorkType(); // 근무종류 + this.gender = patient.getGender(); // 남성:1 여성:2 + this.dementiaSymptom = patient.getDementiaSymptom(); // 치매증상 + this.serviceMeal = patient.getServiceMeal(); // 식사보조 + this.serviceToilet = patient.getServiceToilet(); // 배변보조 + this.serviceMobility = patient.getServiceMobility(); // 이동보조 + this.serviceDaily = patient.getServiceDaily(); // 일상생활 + this.name = patient.getName(); // 어르신 이름 + this.birthDate = patient.getBirthDate(); // 생년월일 + this.weight = patient.getWeight(); // 몸무게 + this.diseases = patient.getDiseases(); // 보유 질병/질환 + this.timeNegotiation = patient.getTimeNegotiation(); // 돌봄 요일 시간 협의 여부 + + List timeList = new ArrayList<>(); + for(TblPatientTimeLog patientTime: patientTimeList){ + timeList.add(new SavePatientTimeInfo(patientTime)); + } + this.timeList = timeList; // 돌봄요일 리스트 : 선택한 요일에 대한 데이터만 리스트에 넣어서 전달. + } + + public void setCareBaseDtoNull(){ + this.careLevel = null; // 장기요양등급 + this.inmateState = null; // 동거인여부 + this.workType = null; // 근무종류 + this.gender = null; // 남성:1 여성:2 + this.dementiaSymptom = null; // 치매증상 + this.serviceMeal = null; // 식사보조 + this.serviceToilet = null; // 배변보조 + this.serviceMobility = null; // 이동보조 + this.serviceDaily = null; // 일상생활 + this.welfare = null; // 복리후생 + } + + } + @Getter @Builder public static class UpdateRecruitPatientInfo{ diff --git a/src/main/java/com/balybus/galaxy/patient/recruit/service/RecruitService.java b/src/main/java/com/balybus/galaxy/patient/recruit/service/RecruitService.java index 0eefff6b..26969411 100644 --- a/src/main/java/com/balybus/galaxy/patient/recruit/service/RecruitService.java +++ b/src/main/java/com/balybus/galaxy/patient/recruit/service/RecruitService.java @@ -8,6 +8,6 @@ public interface RecruitService { RecruitResponseDto.RecruitHelper recruitHelper(UserDetails userDetails, RecruitRequestDto.RecruitHelper dto); // 어르신 공고 등록 RecruitResponseDto.GetRecruitList getRecruitList(String userEmail, RecruitRequestDto.GetRecruitList dto); // 어르신 공고 리스트 조회 RecruitResponseDto.GetRecruitList getRecruitPersonalList(String userEmail, RecruitRequestDto.GetRecruitPersonalList dto); // 어르신 개인 공고 리스트 조회 - RecruitResponseDto.GetOneRecruitPatientInfo getOneRecruitPatientInfo(String userEmail, Long patientLogSeq); // 어르신 정보 상세 조회 + RecruitResponseDto.GetOneRecruitPatientInfo getOneRecruitPatientInfo(String userEmail, Long patientLogSeq, boolean managerYn); // 어르신 정보 상세 조회 RecruitResponseDto.UpdateRecruitPatientInfo updateRecruitPatientInfo(String userEmail, RecruitRequestDto.UpdateRecruitPatientInfo dto); // 어르신 정보 상세 조회 } diff --git a/src/main/java/com/balybus/galaxy/patient/recruit/service/RecruitServiceImpl.java b/src/main/java/com/balybus/galaxy/patient/recruit/service/RecruitServiceImpl.java index 39d3db89..384bea05 100644 --- a/src/main/java/com/balybus/galaxy/patient/recruit/service/RecruitServiceImpl.java +++ b/src/main/java/com/balybus/galaxy/patient/recruit/service/RecruitServiceImpl.java @@ -1,5 +1,6 @@ package com.balybus.galaxy.patient.recruit.service; +import com.balybus.galaxy.careAssistant.domain.TblHelper; import com.balybus.galaxy.global.domain.tblAddressFirst.TblAddressFirst; import com.balybus.galaxy.global.domain.tblAddressSecond.TblAddressSecond; import com.balybus.galaxy.global.domain.tblAddressThird.TblAddressThird; @@ -8,6 +9,8 @@ import com.balybus.galaxy.global.domain.tblCare.service.TblCareServiceImpl; import com.balybus.galaxy.global.domain.tblCenterManager.TblCenterManager; import com.balybus.galaxy.global.domain.tblMatching.MatchingServiceImpl; +import com.balybus.galaxy.global.domain.tblMatching.TblMatching; +import com.balybus.galaxy.global.domain.tblMatching.TblMatchingRepository; import com.balybus.galaxy.global.exception.BadRequestException; import com.balybus.galaxy.global.exception.ExceptionCode; import com.balybus.galaxy.global.utils.address.service.serviceImpl.TblAddressFirstServiceImpl; @@ -51,6 +54,7 @@ public class RecruitServiceImpl implements RecruitService { private final TblPatientLogRepository patientLogRepository; private final TblPatientTimeLogRepository patientTimeLogRepository; private final TblCareRepository careRepository; + private final TblMatchingRepository matchingRepository; private final LoginAuthCheckServiceImpl loginAuthCheckService; private final MatchingServiceImpl matchingService; @@ -257,17 +261,24 @@ public RecruitResponseDto.GetRecruitList getRecruitPersonalList(String userEmail * @return PatientResponseDto.GetOnePatientInfo */ @Override - public RecruitResponseDto.GetOneRecruitPatientInfo getOneRecruitPatientInfo(String userEmail, Long patientLogSeq) { - //1. 관리자 정보 조회 - TblCenterManager centerManager = loginAuthCheckService.checkManager(userEmail); - - //어르신 로그 정보 조회 - Optional patientLogOpt = patientLogRepository.findById(patientLogSeq); - if(patientLogOpt.isEmpty()) throw new BadRequestException(ExceptionCode.NOT_FOUND_PATIENT_RECRUIT); - TblPatientLog patientLog = patientLogOpt.get(); - - //2. 어르신 정보 조회 (어르신 구분자 & 관리자 구분자) - TblPatient patient = loginAuthCheckService.checkPatientManagerAuth(patientLog.getPatient().getId(), centerManager.getId()); + public RecruitResponseDto.GetOneRecruitPatientInfo getOneRecruitPatientInfo(String userEmail, Long patientLogSeq, boolean managerYn) { + //1. 어르신 로그 정보 조회 + TblPatientLog patientLog = getPatientLog(patientLogSeq); + + //2. 로그인 정보 조회 + if(managerYn) { + //2-1-1. 관리자 정보 조회 + TblCenterManager centerManager = loginAuthCheckService.checkManager(userEmail); + //2-1-2. 어르신 정보 조회 가능 여부 확인(어르신 구분자 & 관리자 구분자) + TblPatient patient = loginAuthCheckService.checkPatientManagerAuth(patientLog.getPatient().getId(), centerManager.getId()); + } else { + //2-2-1. 요양보호사 정보 조회 + TblHelper helper = loginAuthCheckService.checkHelper(userEmail); + + //2-2-2. 어르신 정보 조회 가능 여부 확인(매칭 확인 - 요양보호사) + Optional matchingOpt = matchingRepository.findByPatientLog_idAndHelper_id(patientLogSeq, helper.getId()); + if(matchingOpt.isEmpty()) throw new BadRequestException(ExceptionCode.NOT_FOUND_PATIENT_RECRUIT); + } //3. 어르신 돌봄 시간 요일 조회 List patientTimeLogList = patientTimeLogRepository.findByPatientLog_Id(patientLog.getId()); @@ -279,6 +290,17 @@ public RecruitResponseDto.GetOneRecruitPatientInfo getOneRecruitPatientInfo(Stri return resultDto; } + /** + * 어르신 로그 정보 조회 + * @param patientLogSeq 어르신로그(공고) 구분자 + * @return TblPatientLog 엔티티 + */ + private TblPatientLog getPatientLog(Long patientLogSeq){ + Optional patientLogOpt = patientLogRepository.findById(patientLogSeq); + if(patientLogOpt.isEmpty()) throw new BadRequestException(ExceptionCode.NOT_FOUND_PATIENT_RECRUIT); + return patientLogOpt.get(); + } + /** * 어르신 공고 등록 From 38261409c0aafaff3aa950dd7839c4b2f63c0a88 Mon Sep 17 00:00:00 2001 From: jg Date: Sat, 26 Jul 2025 21:27:22 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[FEATURE]=20=EC=9A=94=EC=96=91=EB=B3=B4?= =?UTF-8?q?=ED=98=B8=EC=82=AC=20-=20=EC=96=B4=EB=A5=B4=EC=8B=A0=20?= =?UTF-8?q?=EA=B3=B5=EA=B3=A0=20=EC=83=81=EC=84=B8=20=EC=A1=B0=ED=9A=8C=20?= =?UTF-8?q?API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../recruit/dto/RecruitResponseDto.java | 57 ------------------- 1 file changed, 57 deletions(-) diff --git a/src/main/java/com/balybus/galaxy/patient/recruit/dto/RecruitResponseDto.java b/src/main/java/com/balybus/galaxy/patient/recruit/dto/RecruitResponseDto.java index e9a637e6..ea7401b3 100644 --- a/src/main/java/com/balybus/galaxy/patient/recruit/dto/RecruitResponseDto.java +++ b/src/main/java/com/balybus/galaxy/patient/recruit/dto/RecruitResponseDto.java @@ -102,63 +102,6 @@ public void setCareBaseDtoNull(){ } - @Data - @EqualsAndHashCode(callSuper = true) - public static class GetOneRecruitPatientInfoToHelper extends PatientBaseDto { - private Boolean linkingYn; //어르신 기본정보로 업데이트 할 것인지 여부 - private Boolean wageNegotiation; //급여 협의 여부 - private int wageState; // 1:시급, 2:일급, 3:주급 구분 - private int wage; // 급여 - private String requestContents; // 기타 요청 사항 - - private CareChoiceListDto careChoice; - public GetOneRecruitPatientInfoToHelper(TblPatientLog patient, List patientTimeList){ - this.wageNegotiation = patient.getWageNegotiation(); - this.wageState = patient.getWageState(); - this.wage = patient.getWage(); - this.requestContents = patient.getRequestContents(); - this.welfare = patient.getWelfare(); // 복리후생 - - this.afSeq = patient.getTblAddressFirst().getId(); // 광역시.도 구분자 - this.asSeq = patient.getTblAddressSecond().getId(); // 시.군.구 구분자 - this.atSeq = patient.getTblAddressThird().getId(); // 읍.면.동 구분자 - this.careLevel = patient.getCareLevel(); // 장기요양등급 - this.inmateState = patient.getInmateState(); // 동거인 여부 - this.workType = patient.getWorkType(); // 근무종류 - this.gender = patient.getGender(); // 남성:1 여성:2 - this.dementiaSymptom = patient.getDementiaSymptom(); // 치매증상 - this.serviceMeal = patient.getServiceMeal(); // 식사보조 - this.serviceToilet = patient.getServiceToilet(); // 배변보조 - this.serviceMobility = patient.getServiceMobility(); // 이동보조 - this.serviceDaily = patient.getServiceDaily(); // 일상생활 - this.name = patient.getName(); // 어르신 이름 - this.birthDate = patient.getBirthDate(); // 생년월일 - this.weight = patient.getWeight(); // 몸무게 - this.diseases = patient.getDiseases(); // 보유 질병/질환 - this.timeNegotiation = patient.getTimeNegotiation(); // 돌봄 요일 시간 협의 여부 - - List timeList = new ArrayList<>(); - for(TblPatientTimeLog patientTime: patientTimeList){ - timeList.add(new SavePatientTimeInfo(patientTime)); - } - this.timeList = timeList; // 돌봄요일 리스트 : 선택한 요일에 대한 데이터만 리스트에 넣어서 전달. - } - - public void setCareBaseDtoNull(){ - this.careLevel = null; // 장기요양등급 - this.inmateState = null; // 동거인여부 - this.workType = null; // 근무종류 - this.gender = null; // 남성:1 여성:2 - this.dementiaSymptom = null; // 치매증상 - this.serviceMeal = null; // 식사보조 - this.serviceToilet = null; // 배변보조 - this.serviceMobility = null; // 이동보조 - this.serviceDaily = null; // 일상생활 - this.welfare = null; // 복리후생 - } - - } - @Getter @Builder public static class UpdateRecruitPatientInfo{