From 8a8fd4477e389296826c479c0c553027aedfb4d6 Mon Sep 17 00:00:00 2001 From: pkl0912 Date: Wed, 31 Jan 2024 18:20:26 +0900 Subject: [PATCH] =?UTF-8?q?#215=20[refactor]=20applicationRetrieve=20servi?= =?UTF-8?q?ce=20=EC=97=90=EC=84=9C=20=EC=BB=A8=ED=8A=B8=EB=A1=A4=EB=9F=AC?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designer/DesignerController.java | 37 ++++++++++++++++++- .../controller/model/dto/ApplicationDto.java | 15 ++++++++ .../model/dto/ApplicationModelInfoDto.java | 6 ++- .../HairModelApplicationRetrieveService.java | 32 +++------------- .../service/model/ModelRetrieveService.java | 18 ++++++++- .../HairServiceOfferRetrieveService.java | 7 ++++ 6 files changed, 84 insertions(+), 31 deletions(-) create mode 100644 src/main/java/com/moddy/server/controller/model/dto/ApplicationDto.java diff --git a/src/main/java/com/moddy/server/controller/designer/DesignerController.java b/src/main/java/com/moddy/server/controller/designer/DesignerController.java index d1d6b452..6311a601 100644 --- a/src/main/java/com/moddy/server/controller/designer/DesignerController.java +++ b/src/main/java/com/moddy/server/controller/designer/DesignerController.java @@ -3,15 +3,24 @@ import com.moddy.server.common.dto.ErrorResponse; import com.moddy.server.common.dto.SuccessNonDataResponse; import com.moddy.server.common.dto.SuccessResponse; +import com.moddy.server.common.exception.enums.ErrorCode; import com.moddy.server.common.exception.enums.SuccessCode; +import com.moddy.server.common.exception.model.NotFoundException; import com.moddy.server.config.resolver.user.UserId; import com.moddy.server.controller.designer.dto.request.OfferCreateRequest; import com.moddy.server.controller.designer.dto.request.OfferImageUrlRequestDto; import com.moddy.server.controller.designer.dto.response.ApplicationDetailInfoResponse; +import com.moddy.server.controller.designer.dto.response.ApplicationInfoResponse; import com.moddy.server.controller.designer.dto.response.DesignerMainResponse; import com.moddy.server.controller.designer.dto.response.DownloadUrlResponseDto; +import com.moddy.server.controller.designer.dto.response.ModelInfoResponse; +import com.moddy.server.controller.model.dto.ApplicationDto; +import com.moddy.server.controller.model.dto.ApplicationModelInfoDto; +import com.moddy.server.domain.hair_model_application.HairModelApplication; import com.moddy.server.service.application.HairModelApplicationRetrieveService; import com.moddy.server.service.designer.DesignerService; +import com.moddy.server.service.model.ModelRetrieveService; +import com.moddy.server.service.offer.HairServiceOfferRetrieveService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.Content; @@ -42,6 +51,8 @@ public class DesignerController { private final DesignerService designerService; private final HairModelApplicationRetrieveService hairModelApplicationRetrieveService; + private final ModelRetrieveService modelRetrieveService; + private final HairServiceOfferRetrieveService hairServiceOfferRetrieveService; @Operation(summary = "[JWT] 디자이너 메인 뷰 조회", description = "디자이너 메인 뷰 조회 API입니다.") @ApiResponses({ @@ -85,9 +96,31 @@ public SuccessNonDataResponse offerCreateRequest( @GetMapping("/{applicationId}") @SecurityRequirement(name = "JWT Auth") public SuccessResponse getApplicationDetailInfo( - @Parameter(hidden = true) @UserId Long userId, + @Parameter(hidden = true) @UserId Long designerId, @PathVariable(value = "applicationId") Long applicationId) { - return SuccessResponse.success(SuccessCode.MODEL_APPLICATION_DETAil_INFO_SUCCESS, hairModelApplicationRetrieveService.getApplicationDetail(userId, applicationId)); + ApplicationDto applicationDto = hairModelApplicationRetrieveService.getApplicationDetailInfo(applicationId); + ApplicationModelInfoDto modelInfoDto = modelRetrieveService.getApplicationModelInfo(applicationId); + ApplicationInfoResponse applicationInfoResponse = new ApplicationInfoResponse( + applicationId, + applicationDto.modelImgUrl(), + applicationDto.hairLength(), + applicationDto.preferHairStyleList(), + applicationDto.recordResponseList(), + applicationDto.hairDetail(), + hairServiceOfferRetrieveService.getIsSendStatus(applicationId, designerId) + ); + + ModelInfoResponse modelInfoResponse = new ModelInfoResponse( + modelInfoDto.modelId(), + modelInfoDto.name(), + modelInfoDto.age(), + modelInfoDto.gender(), + modelInfoDto.regionList(), + applicationDto.instgramId() + ); + + ApplicationDetailInfoResponse applicationDetailInfoResponse = new ApplicationDetailInfoResponse(applicationInfoResponse,modelInfoResponse); + return SuccessResponse.success(SuccessCode.MODEL_APPLICATION_DETAil_INFO_SUCCESS, applicationDetailInfoResponse); } @Operation(summary = "[JWT] 제안서 다운로드 링크", description = "디자이너 제안서 다운로드 링크 불러오는 API") diff --git a/src/main/java/com/moddy/server/controller/model/dto/ApplicationDto.java b/src/main/java/com/moddy/server/controller/model/dto/ApplicationDto.java new file mode 100644 index 00000000..bdbe3a4d --- /dev/null +++ b/src/main/java/com/moddy/server/controller/model/dto/ApplicationDto.java @@ -0,0 +1,15 @@ +package com.moddy.server.controller.model.dto; + +import com.moddy.server.controller.designer.dto.response.HairRecordResponse; + +import java.util.List; + +public record ApplicationDto( + String modelImgUrl, + String hairLength, + List preferHairStyleList, + List recordResponseList, + String hairDetail, + String instgramId +) { +} diff --git a/src/main/java/com/moddy/server/controller/model/dto/ApplicationModelInfoDto.java b/src/main/java/com/moddy/server/controller/model/dto/ApplicationModelInfoDto.java index d5445baf..b562b436 100644 --- a/src/main/java/com/moddy/server/controller/model/dto/ApplicationModelInfoDto.java +++ b/src/main/java/com/moddy/server/controller/model/dto/ApplicationModelInfoDto.java @@ -1,8 +1,12 @@ package com.moddy.server.controller.model.dto; +import java.util.List; + public record ApplicationModelInfoDto( + Long modelId, String name, int age, - String gender + String gender, + List regionList ) { } diff --git a/src/main/java/com/moddy/server/service/application/HairModelApplicationRetrieveService.java b/src/main/java/com/moddy/server/service/application/HairModelApplicationRetrieveService.java index dbf414b5..4d0123f4 100644 --- a/src/main/java/com/moddy/server/service/application/HairModelApplicationRetrieveService.java +++ b/src/main/java/com/moddy/server/service/application/HairModelApplicationRetrieveService.java @@ -8,6 +8,7 @@ import com.moddy.server.controller.designer.dto.response.HairModelApplicationResponse; import com.moddy.server.controller.designer.dto.response.HairRecordResponse; import com.moddy.server.controller.designer.dto.response.ModelInfoResponse; +import com.moddy.server.controller.model.dto.ApplicationDto; import com.moddy.server.controller.model.dto.ApplicationModelInfoDto; import com.moddy.server.domain.hair_model_application.HairModelApplication; import com.moddy.server.domain.hair_model_application.repository.HairModelApplicationJpaRepository; @@ -66,20 +67,15 @@ public DesignerMainResponse getDesignerMainInfo(final Long designerId, final int applicationResponsesList ); } - - public ApplicationDetailInfoResponse getApplicationDetail(final Long designerId, final Long applicationId) { - + public ApplicationDto getApplicationDetailInfo(final Long applicationId){ HairModelApplication hairModelApplication = hairModelApplicationJpaRepository.findById(applicationId).orElseThrow(() -> new NotFoundException(ErrorCode.NOT_FOUND_APPLICATION_EXCEPTION)); - - Long modelId = hairModelApplication.getModel().getId(); - ApplicationModelInfoDto modelInfoDto = modelRetrieveService.getApplicationModelInfo(modelId); - List preferHairStyles = preferHairStyleJpaRepository.findAllByHairModelApplicationId(applicationId); - List preferhairStyleList = preferHairStyles.stream().map(hairStyle -> { return hairStyle.getHairStyle().getValue(); }).collect(Collectors.toList()); + Long modelId = hairModelApplication.getModel().getId(); + List hairServiceRecords = hairServiceRecordJpaRepository.findAllByHairModelApplicationId(applicationId); hairServiceRecords.sort(Comparator.comparingInt(e -> e.getServiceRecordTerm().ordinal())); @@ -97,29 +93,13 @@ public ApplicationDetailInfoResponse getApplicationDetail(final Long designerId, return hairRecordResponse; }).collect(Collectors.toList()); - ApplicationInfoResponse applicationInfoResponse = new ApplicationInfoResponse( - applicationId, + return new ApplicationDto( hairModelApplication.getModelImgUrl(), hairModelApplication.getHairLength().getValue(), preferhairStyleList, recordResponseList, hairModelApplication.getHairDetail(), - getIsSendStatus(applicationId, designerId) - ); - - ModelInfoResponse modelInfoResponse = new ModelInfoResponse( - modelId, - modelInfoDto.name(), - modelInfoDto.age(), - modelInfoDto.gender(), - regionList, - hairModelApplication.getInstagramId() - ); - - return new ApplicationDetailInfoResponse( - applicationInfoResponse, - modelInfoResponse - ); + hairModelApplication.getInstagramId()); } private Page findApplicationsByPaging(final int page, final int size) { PageRequest pageRequest = PageRequest.of(page - 1, size, Sort.by(Sort.Direction.DESC, "id")); diff --git a/src/main/java/com/moddy/server/service/model/ModelRetrieveService.java b/src/main/java/com/moddy/server/service/model/ModelRetrieveService.java index 71e03b6b..9339ee1f 100644 --- a/src/main/java/com/moddy/server/service/model/ModelRetrieveService.java +++ b/src/main/java/com/moddy/server/service/model/ModelRetrieveService.java @@ -4,8 +4,12 @@ import com.moddy.server.common.exception.model.NotFoundException; import com.moddy.server.controller.auth.dto.response.RegionResponse; import com.moddy.server.controller.model.dto.ApplicationModelInfoDto; +import com.moddy.server.domain.hair_model_application.HairModelApplication; +import com.moddy.server.domain.hair_model_application.repository.HairModelApplicationJpaRepository; import com.moddy.server.domain.model.Model; import com.moddy.server.domain.model.repository.ModelJpaRepository; +import com.moddy.server.domain.prefer_region.PreferRegion; +import com.moddy.server.domain.prefer_region.repository.PreferRegionJpaRepository; import com.moddy.server.domain.region.repository.RegionJpaRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -20,10 +24,20 @@ public class ModelRetrieveService { private final ModelJpaRepository modelJpaRepository; private final RegionJpaRepository regionJpaRepository; + private final HairModelApplicationJpaRepository hairModelApplicationJpaRepository; + private final PreferRegionJpaRepository preferRegionJpaRepository; - public ApplicationModelInfoDto getApplicationModelInfo(final Long modelId) { + public ApplicationModelInfoDto getApplicationModelInfo(final Long applicationId) { + HairModelApplication hairModelApplication = hairModelApplicationJpaRepository.findById(applicationId).orElseThrow(() -> new NotFoundException(ErrorCode.NOT_FOUND_APPLICATION_EXCEPTION)); + Long modelId = hairModelApplication.getModel().getId(); Model model = modelJpaRepository.findById(modelId).orElseThrow(() -> new NotFoundException(ErrorCode.NOT_FOUND_MODEL_INFO)); - return new ApplicationModelInfoDto(model.getName(), model.getAge(), model.getGender().getValue()); + + List preferRegions = preferRegionJpaRepository.findAllByModelId(modelId); + + List regionList = preferRegions.stream().map(preferregion -> { + return preferregion.getRegion().getName(); + }).collect(Collectors.toList()); + return new ApplicationModelInfoDto(modelId, model.getName(), model.getAge(), model.getGender().getValue(), regionList); } public List getRegionList() { diff --git a/src/main/java/com/moddy/server/service/offer/HairServiceOfferRetrieveService.java b/src/main/java/com/moddy/server/service/offer/HairServiceOfferRetrieveService.java index b33fc159..d6ddbb57 100644 --- a/src/main/java/com/moddy/server/service/offer/HairServiceOfferRetrieveService.java +++ b/src/main/java/com/moddy/server/service/offer/HairServiceOfferRetrieveService.java @@ -13,6 +13,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Optional; + @Service @RequiredArgsConstructor @Transactional(readOnly = true) @@ -36,4 +38,9 @@ public OpenChatResponse getOpenChatInfo(final Long userId, final Long offerId) { return openChatResponse; } + + public Boolean getIsSendStatus(final Long applicationId, final Long userId) { + Optional offer = hairServiceOfferJpaRepository.findByHairModelApplicationIdAndDesignerId(applicationId, userId); + return offer.isPresent(); + } }