From 19ae496f334cb17090dd2813565123f01287eb75 Mon Sep 17 00:00:00 2001 From: ming Date: Wed, 5 Nov 2025 17:52:34 +0900 Subject: [PATCH 1/4] =?UTF-8?q?[config]=20delivery=20=EC=84=9C=EB=B9=84?= =?UTF-8?q?=EC=8A=A4=20MSA=20=EA=B8=B0=EB=B3=B8=20=EC=84=A4=EC=A0=95=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/src/main/resources/config-repo/delivery-service.yml | 4 ++-- delivery/src/main/resources/application.yml | 6 ++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/config/src/main/resources/config-repo/delivery-service.yml b/config/src/main/resources/config-repo/delivery-service.yml index 3e2f2276..6f5f4a6e 100644 --- a/config/src/main/resources/config-repo/delivery-service.yml +++ b/config/src/main/resources/config-repo/delivery-service.yml @@ -2,14 +2,14 @@ spring: application: name: delivery-service datasource: - url: jdbc:mysql://localhost:3306/hubEleven?useSSL=false&serverTimezone=Asia/Seoul + url: jdbc:mysql://localhost:3306/hubEleven?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Seoul username: ${DB_USERNAME} password: ${DB_PASSWORD} driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate: - ddl-auto: create + ddl-auto: update show-sql: true properties: hibernate: diff --git a/delivery/src/main/resources/application.yml b/delivery/src/main/resources/application.yml index 9d441c6e..d5571889 100644 --- a/delivery/src/main/resources/application.yml +++ b/delivery/src/main/resources/application.yml @@ -1,10 +1,8 @@ spring: - application: - name: delivery-service - profiles: - active: native config: import: "configserver:" + application: + name: delivery-service cloud: config: discovery: From 3a04fa1f5a8ebcf89f3e3d099d87723974766f0e Mon Sep 17 00:00:00 2001 From: ming Date: Wed, 5 Nov 2025 17:55:16 +0900 Subject: [PATCH 2/4] =?UTF-8?q?[feat]=20DeliveryManager=20=EC=97=94?= =?UTF-8?q?=ED=8B=B0=ED=8B=B0=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/DeliveryManager.java | 47 +++++++++++++++++++ .../deliveryManager/domain/DeliveryType.java | 13 +++++ 2 files changed, 60 insertions(+) create mode 100644 delivery/src/main/java/com/hubEleven/deliveryManager/domain/DeliveryManager.java create mode 100644 delivery/src/main/java/com/hubEleven/deliveryManager/domain/DeliveryType.java diff --git a/delivery/src/main/java/com/hubEleven/deliveryManager/domain/DeliveryManager.java b/delivery/src/main/java/com/hubEleven/deliveryManager/domain/DeliveryManager.java new file mode 100644 index 00000000..620384f0 --- /dev/null +++ b/delivery/src/main/java/com/hubEleven/deliveryManager/domain/DeliveryManager.java @@ -0,0 +1,47 @@ +package com.hubEleven.deliveryManager.domain; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.Id; +import java.util.UUID; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class DeliveryManager { + + @Id + private Long deliveryManagerId; //userId를 받아올 것임 + + private UUID hubId; + + private String slackId; + + @Enumerated(EnumType.STRING) + private DeliveryType deliveryType; + + @Column(updatable = false, nullable = false) + private int deliveryOrder; + + private DeliveryManager(Long deliveryManagerId, UUID hubId, String slackId, + DeliveryType deliveryType, int deliveryOrder) { + this.deliveryManagerId = deliveryManagerId; + this.hubId = hubId; + this.slackId = slackId; + this.deliveryType = deliveryType; + this.deliveryOrder = deliveryOrder; + } + + public static DeliveryManager create( + Long id, UUID hubId, String slackId, DeliveryType deliveryType, int deliveryOrder + ) { + return new DeliveryManager(id, hubId, slackId, deliveryType, deliveryOrder); + + } +} + diff --git a/delivery/src/main/java/com/hubEleven/deliveryManager/domain/DeliveryType.java b/delivery/src/main/java/com/hubEleven/deliveryManager/domain/DeliveryType.java new file mode 100644 index 00000000..7eb88d5a --- /dev/null +++ b/delivery/src/main/java/com/hubEleven/deliveryManager/domain/DeliveryType.java @@ -0,0 +1,13 @@ +package com.hubEleven.deliveryManager.domain; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@Getter +@RequiredArgsConstructor +public enum DeliveryType { + HUB("허브 배송 담당자"), + COMPANY("업체 배송 담당자"); + + private final String description; +} \ No newline at end of file From e2a92be77d2b8b77aa09861c6b9ea08db372617d Mon Sep 17 00:00:00 2001 From: ming Date: Wed, 5 Nov 2025 17:57:29 +0900 Subject: [PATCH 3/4] =?UTF-8?q?[feat]=20DeliveryManager=20Create=20?= =?UTF-8?q?=EB=A9=94=EC=84=9C=EB=93=9C=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- delivery/build.gradle | 2 + delivery/settings.gradle | 1 - .../application/DeliveryManagerService.java | 81 +++++++++++++++++++ .../domain/DeliveryManagerRepository.java | 10 +++ .../DeliveryManagerJpaRepository.java | 12 +++ .../DeliveryManagerRepositoryImpl.java | 28 +++++++ .../DeliveryManagerController.java | 28 +++++++ .../DeliveryManagerCreateRequestDto.java | 12 +++ .../response/DeliveryManagerResponseDto.java | 23 ++++++ 9 files changed, 196 insertions(+), 1 deletion(-) delete mode 100644 delivery/settings.gradle create mode 100644 delivery/src/main/java/com/hubEleven/deliveryManager/application/DeliveryManagerService.java create mode 100644 delivery/src/main/java/com/hubEleven/deliveryManager/domain/DeliveryManagerRepository.java create mode 100644 delivery/src/main/java/com/hubEleven/deliveryManager/infrastructure/DeliveryManagerJpaRepository.java create mode 100644 delivery/src/main/java/com/hubEleven/deliveryManager/infrastructure/DeliveryManagerRepositoryImpl.java create mode 100644 delivery/src/main/java/com/hubEleven/deliveryManager/presentation/dto/request/DeliveryManagerCreateRequestDto.java create mode 100644 delivery/src/main/java/com/hubEleven/deliveryManager/presentation/dto/response/DeliveryManagerResponseDto.java diff --git a/delivery/build.gradle b/delivery/build.gradle index 9c70a061..63f62451 100644 --- a/delivery/build.gradle +++ b/delivery/build.gradle @@ -33,6 +33,8 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client' implementation 'org.springframework.cloud:spring-cloud-starter-config' + implementation 'org.springframework.boot:spring-boot-starter-validation' + compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.mysql:mysql-connector-j' annotationProcessor 'org.projectlombok:lombok' diff --git a/delivery/settings.gradle b/delivery/settings.gradle deleted file mode 100644 index 6a6c7abd..00000000 --- a/delivery/settings.gradle +++ /dev/null @@ -1 +0,0 @@ -rootProject.name = 'delivery' diff --git a/delivery/src/main/java/com/hubEleven/deliveryManager/application/DeliveryManagerService.java b/delivery/src/main/java/com/hubEleven/deliveryManager/application/DeliveryManagerService.java new file mode 100644 index 00000000..f5c4e69a --- /dev/null +++ b/delivery/src/main/java/com/hubEleven/deliveryManager/application/DeliveryManagerService.java @@ -0,0 +1,81 @@ +package com.hubEleven.deliveryManager.application; + +import com.hubEleven.deliveryManager.domain.DeliveryManager; +import com.hubEleven.deliveryManager.domain.DeliveryManagerRepository; +import com.hubEleven.deliveryManager.domain.DeliveryType; +import com.hubEleven.deliveryManager.presentation.dto.request.DeliveryManagerCreateRequestDto; +import com.hubEleven.deliveryManager.presentation.dto.response.DeliveryManagerResponseDto; +import java.util.UUID; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Slf4j +@Service +public class DeliveryManagerService { + + private final DeliveryManagerRepository deliveryManagerRepository; + + public DeliveryManagerService(DeliveryManagerRepository deliveryManagerRepository) { + this.deliveryManagerRepository = deliveryManagerRepository; + } + + //배송 담당자 생성 + @Transactional + public DeliveryManagerResponseDto createDeliveryManager(DeliveryManagerCreateRequestDto createRequestDto) { + // plan : 요청 dto로 유저id만 받고, 유저서비스에서 id로 정보를 조회해 나머지 엔티티 필드 채우기(hubID, slackId, DeliveryType, deliveryOrder(배송순번)) + /** + * TODO : 1. 생성 권한이 있는지 확인하기 (로그인한 유저가 마스터 혹은 허브관리자인가?) -> 컨트롤러에서 + * 2. RequestDto에서 id 꺼내와 FeignClient로 User-Service 서버에서 user정보 받아오기 (user정보에 id, slackId, 권한, 소속업체(허브)ID 존재) + * 3. 위에서 받아온 user정보에서 id 존재 여부 조회 후, role이 배송담당자인지 확인, 소속업체 확인하기(허브면 허브가 존재하는가?) + * 3-1 요청한 id가 이미 배달기사로 등록된 아이디가 아닌지 검증 + * 3-2 소속업체 id가 NULL이면 허브배송 담당자, NULL이 아니면 업체담당자(소속업체 id가 허브id가 맞는지도 검증해야 할까?) + * (배송담당자는 소속이 없거나, 허브소속이니까, 유저정보에서 배송담당자 권한이면서 소속이 있다면 그 소속은 허브라고 생각하고 검증을 안해도 되는가? -> 유저에서 검증 ) + * 4. 배송순번 부여하기 (전략: 배송담당자 타입별로 순번을 각각 부여해야하므로, 배송담당자 타입으로 조회하여 순번최댓값을 가져오고, +1 증가시켜 부여) -> 동시성 문제 생각할 것 + */ + + log.info("[Service] 배달 담당자 생성 요청"); + //임시 데이터---------------------------- + Long id = createRequestDto.deliveryManagerId(); + UUID hubId = UUID.randomUUID(); + String slackId = "slack001"; + DeliveryType deliveryType = DeliveryType.COMPANY; + //---------------------------------- + + //TODO: DB에 이미 존재하는 id 인지 확인 + Integer maxOrder; + + //배송순번 부여 + int deliveryOrder = setDeliveryOrder(deliveryType); + + DeliveryManager deliveryManager = DeliveryManager.create( + id, hubId, slackId, deliveryType, deliveryOrder + ); + + deliveryManagerRepository.save(deliveryManager); + + log.info("[Service] 배달 담당자 생성 - DB 저장 성공"); + + DeliveryManagerResponseDto responseDto = DeliveryManagerResponseDto.from(deliveryManager); + + return responseDto; + + } + + public int setDeliveryOrder(DeliveryType deliveryType) { + Integer maxOrder; + if (deliveryType == DeliveryType.HUB) { + maxOrder = deliveryManagerRepository.findMaxDeliveryOrderByDeliveryType(DeliveryType.HUB); + int nextOrder = maxOrder == null ? 1 : maxOrder + 1; + log.info("현재 마지막 순번 : {} , 생성된 배달 순번 : {}", maxOrder, nextOrder); + return nextOrder; + } else { + maxOrder = deliveryManagerRepository.findMaxDeliveryOrderByDeliveryType(DeliveryType.COMPANY); + int nextOrder = maxOrder == null ? 1 : maxOrder + 1; + log.info("현재 마지막 순번 : {} , 생성된 배달 순번 : {}", maxOrder, nextOrder); + + return nextOrder; + } + } + } + diff --git a/delivery/src/main/java/com/hubEleven/deliveryManager/domain/DeliveryManagerRepository.java b/delivery/src/main/java/com/hubEleven/deliveryManager/domain/DeliveryManagerRepository.java new file mode 100644 index 00000000..0a92b727 --- /dev/null +++ b/delivery/src/main/java/com/hubEleven/deliveryManager/domain/DeliveryManagerRepository.java @@ -0,0 +1,10 @@ +package com.hubEleven.deliveryManager.domain; + +public interface DeliveryManagerRepository { + + //deliveryType에 따른 최대 순번값 조회 + Integer findMaxDeliveryOrderByDeliveryType(DeliveryType type); + + DeliveryManager save(DeliveryManager deliveryManager); + +} diff --git a/delivery/src/main/java/com/hubEleven/deliveryManager/infrastructure/DeliveryManagerJpaRepository.java b/delivery/src/main/java/com/hubEleven/deliveryManager/infrastructure/DeliveryManagerJpaRepository.java new file mode 100644 index 00000000..5b65c8b0 --- /dev/null +++ b/delivery/src/main/java/com/hubEleven/deliveryManager/infrastructure/DeliveryManagerJpaRepository.java @@ -0,0 +1,12 @@ +package com.hubEleven.deliveryManager.infrastructure; + +import com.hubEleven.deliveryManager.domain.DeliveryManager; +import com.hubEleven.deliveryManager.domain.DeliveryType; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +public interface DeliveryManagerJpaRepository extends JpaRepository { + + @Query("SELECT MAX(dm.deliveryOrder) FROM DeliveryManager dm WHERE dm.deliveryType = :deliveryType") + Integer findMaxDeliveryOrderByDeliveryType(DeliveryType deliveryType); +} diff --git a/delivery/src/main/java/com/hubEleven/deliveryManager/infrastructure/DeliveryManagerRepositoryImpl.java b/delivery/src/main/java/com/hubEleven/deliveryManager/infrastructure/DeliveryManagerRepositoryImpl.java new file mode 100644 index 00000000..2b50c5ca --- /dev/null +++ b/delivery/src/main/java/com/hubEleven/deliveryManager/infrastructure/DeliveryManagerRepositoryImpl.java @@ -0,0 +1,28 @@ +package com.hubEleven.deliveryManager.infrastructure; + +import com.hubEleven.deliveryManager.domain.DeliveryManager; +import com.hubEleven.deliveryManager.domain.DeliveryManagerRepository; +import com.hubEleven.deliveryManager.domain.DeliveryType; +import org.springframework.stereotype.Repository; + +@Repository +public class DeliveryManagerRepositoryImpl implements DeliveryManagerRepository { + + private final DeliveryManagerJpaRepository deliveryManagerJpaRepository; + + + public DeliveryManagerRepositoryImpl(DeliveryManagerJpaRepository deliveryManagerJpaRepository) { + this.deliveryManagerJpaRepository = deliveryManagerJpaRepository; + } + + + @Override + public Integer findMaxDeliveryOrderByDeliveryType(DeliveryType deliveryType) { + return deliveryManagerJpaRepository.findMaxDeliveryOrderByDeliveryType(deliveryType); + } + + @Override + public DeliveryManager save(DeliveryManager deliveryManager) { + return deliveryManagerJpaRepository.save(deliveryManager); + } +} diff --git a/delivery/src/main/java/com/hubEleven/deliveryManager/presentation/DeliveryManagerController.java b/delivery/src/main/java/com/hubEleven/deliveryManager/presentation/DeliveryManagerController.java index 46e568e8..a9fc4005 100644 --- a/delivery/src/main/java/com/hubEleven/deliveryManager/presentation/DeliveryManagerController.java +++ b/delivery/src/main/java/com/hubEleven/deliveryManager/presentation/DeliveryManagerController.java @@ -1,10 +1,38 @@ package com.hubEleven.deliveryManager.presentation; +import com.hubEleven.deliveryManager.application.DeliveryManagerService; +import com.hubEleven.deliveryManager.presentation.dto.request.DeliveryManagerCreateRequestDto; +import com.hubEleven.deliveryManager.presentation.dto.response.DeliveryManagerResponseDto; +import jakarta.validation.Valid; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +@Slf4j @RestController +@RequestMapping("/v1/delivery-managers") public class DeliveryManagerController { + private final DeliveryManagerService deliveryManagerService; + + public DeliveryManagerController(DeliveryManagerService deliveryManagerService) { + this.deliveryManagerService = deliveryManagerService; + } + + + @PostMapping + public ResponseEntity createDeliveryManager( + @RequestBody @Valid DeliveryManagerCreateRequestDto createRequestDto) { + //TODO: JWT토큰 파싱하여 권한 검증 + log.info("[Controller] 배달 담당자 생성 요청"); + DeliveryManagerResponseDto responseDto = deliveryManagerService.createDeliveryManager(createRequestDto); + + return ResponseEntity.ok(responseDto); + } + } diff --git a/delivery/src/main/java/com/hubEleven/deliveryManager/presentation/dto/request/DeliveryManagerCreateRequestDto.java b/delivery/src/main/java/com/hubEleven/deliveryManager/presentation/dto/request/DeliveryManagerCreateRequestDto.java new file mode 100644 index 00000000..31a5407c --- /dev/null +++ b/delivery/src/main/java/com/hubEleven/deliveryManager/presentation/dto/request/DeliveryManagerCreateRequestDto.java @@ -0,0 +1,12 @@ +package com.hubEleven.deliveryManager.presentation.dto.request; + +import jakarta.validation.constraints.NotNull; + +public record DeliveryManagerCreateRequestDto( + //배송타입이 허브일때는 null, 업체일때는 id필수여야함 + @NotNull(message = "ID는 필수입니다.") + Long deliveryManagerId + +) { + +} diff --git a/delivery/src/main/java/com/hubEleven/deliveryManager/presentation/dto/response/DeliveryManagerResponseDto.java b/delivery/src/main/java/com/hubEleven/deliveryManager/presentation/dto/response/DeliveryManagerResponseDto.java new file mode 100644 index 00000000..4c24c1a9 --- /dev/null +++ b/delivery/src/main/java/com/hubEleven/deliveryManager/presentation/dto/response/DeliveryManagerResponseDto.java @@ -0,0 +1,23 @@ +package com.hubEleven.deliveryManager.presentation.dto.response; + +import com.hubEleven.deliveryManager.domain.DeliveryManager; +import com.hubEleven.deliveryManager.domain.DeliveryType; +import java.util.UUID; + +public record DeliveryManagerResponseDto( + Long deliveryManagerId, + UUID hubId, + String slackId, + DeliveryType deliveryType, + int deliveryOrder +) { + public static DeliveryManagerResponseDto from(DeliveryManager deliveryManager) { + return new DeliveryManagerResponseDto( + deliveryManager.getDeliveryManagerId(), + deliveryManager.getHubId(), + deliveryManager.getSlackId(), + deliveryManager.getDeliveryType(), + deliveryManager.getDeliveryOrder() + ); + } +} From 6a57a30273b1424dbd819a2cbc7662773055c237 Mon Sep 17 00:00:00 2001 From: ming Date: Wed, 5 Nov 2025 18:27:35 +0900 Subject: [PATCH 4/4] =?UTF-8?q?code=20=ED=8F=AC=EB=A7=A4=ED=8C=85=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/annotation/SoftDeletable.java | 6 +- .../com/hubEleven/common/code/ErrorCode.java | 18 +-- .../com/hubEleven/common/code/StatusCode.java | 8 +- .../hubEleven/common/code/SuccessCode.java | 11 +- .../common/exception/GlobalException.java | 2 +- .../exception/GlobalExceptionHandler.java | 20 +-- .../hubEleven/common/model/BaseEntity.java | 39 +++--- .../common/request/CommonPageRequest.java | 79 +++++------ .../common/response/ApiResponse.java | 8 +- .../common/response/ApiResponseEntity.java | 60 ++++---- .../common/response/CommonPageResponse.java | 41 +++--- .../hubEleven/common/utils/PagingUtils.java | 9 +- .../common/CommonApplicationTests.java | 5 +- .../application/DeliveryManagerService.java | 128 +++++++++--------- .../domain/DeliveryManager.java | 58 ++++---- .../domain/DeliveryManagerRepository.java | 7 +- .../deliveryManager/domain/DeliveryType.java | 8 +- .../DeliveryManagerJpaRepository.java | 5 +- .../DeliveryManagerRepositoryImpl.java | 26 ++-- .../DeliveryManagerController.java | 29 ++-- .../DeliveryManagerCreateRequestDto.java | 9 +- .../response/DeliveryManagerResponseDto.java | 28 ++-- gradlew | 0 23 files changed, 286 insertions(+), 318 deletions(-) mode change 100644 => 100755 gradlew diff --git a/common/src/main/java/com/hubEleven/common/annotation/SoftDeletable.java b/common/src/main/java/com/hubEleven/common/annotation/SoftDeletable.java index a0c36b18..4312188f 100644 --- a/common/src/main/java/com/hubEleven/common/annotation/SoftDeletable.java +++ b/common/src/main/java/com/hubEleven/common/annotation/SoftDeletable.java @@ -1,14 +1,12 @@ package com.hubEleven.common.annotation; -import org.hibernate.annotations.SQLRestriction; - import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import org.hibernate.annotations.SQLRestriction; @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @SQLRestriction("deleted_at IS NULL") -public @interface SoftDeletable { -} +public @interface SoftDeletable {} diff --git a/common/src/main/java/com/hubEleven/common/code/ErrorCode.java b/common/src/main/java/com/hubEleven/common/code/ErrorCode.java index f92689ad..cdafdfb0 100644 --- a/common/src/main/java/com/hubEleven/common/code/ErrorCode.java +++ b/common/src/main/java/com/hubEleven/common/code/ErrorCode.java @@ -1,21 +1,21 @@ package com.hubEleven.common.code; +import static org.springframework.http.HttpStatus.*; + import lombok.Getter; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; -import static org.springframework.http.HttpStatus.*; - @RequiredArgsConstructor @Getter public enum ErrorCode implements StatusCode { - SERVER_ERROR(INTERNAL_SERVER_ERROR, "서버 에러가 발생하였습니다."); + SERVER_ERROR(INTERNAL_SERVER_ERROR, "서버 에러가 발생하였습니다."); - private final HttpStatus httpStatus; - private final String message; + private final HttpStatus httpStatus; + private final String message; - @Override - public String getName() { - return this.name(); - } + @Override + public String getName() { + return this.name(); + } } diff --git a/common/src/main/java/com/hubEleven/common/code/StatusCode.java b/common/src/main/java/com/hubEleven/common/code/StatusCode.java index 36c805df..75f01a44 100644 --- a/common/src/main/java/com/hubEleven/common/code/StatusCode.java +++ b/common/src/main/java/com/hubEleven/common/code/StatusCode.java @@ -3,7 +3,9 @@ import org.springframework.http.HttpStatus; public interface StatusCode { - HttpStatus getHttpStatus(); - String getMessage(); - String getName(); + HttpStatus getHttpStatus(); + + String getMessage(); + + String getName(); } diff --git a/common/src/main/java/com/hubEleven/common/code/SuccessCode.java b/common/src/main/java/com/hubEleven/common/code/SuccessCode.java index ac492f02..3265d869 100644 --- a/common/src/main/java/com/hubEleven/common/code/SuccessCode.java +++ b/common/src/main/java/com/hubEleven/common/code/SuccessCode.java @@ -1,17 +1,16 @@ package com.hubEleven.common.code; +import static org.springframework.http.HttpStatus.*; + import lombok.Getter; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; -import static org.springframework.http.HttpStatus.*; - @Getter @RequiredArgsConstructor public enum SuccessCode { + SUCCESS(OK, "성공했습니다."); - SUCCESS(OK, "성공했습니다."); - - private final HttpStatus status; - private final String message; + private final HttpStatus status; + private final String message; } diff --git a/common/src/main/java/com/hubEleven/common/exception/GlobalException.java b/common/src/main/java/com/hubEleven/common/exception/GlobalException.java index 7bae01e2..7f4451cb 100644 --- a/common/src/main/java/com/hubEleven/common/exception/GlobalException.java +++ b/common/src/main/java/com/hubEleven/common/exception/GlobalException.java @@ -7,5 +7,5 @@ @Getter @RequiredArgsConstructor public class GlobalException extends RuntimeException { - private final StatusCode errorCode; + private final StatusCode errorCode; } diff --git a/common/src/main/java/com/hubEleven/common/exception/GlobalExceptionHandler.java b/common/src/main/java/com/hubEleven/common/exception/GlobalExceptionHandler.java index ca41c1c3..a8ffb794 100644 --- a/common/src/main/java/com/hubEleven/common/exception/GlobalExceptionHandler.java +++ b/common/src/main/java/com/hubEleven/common/exception/GlobalExceptionHandler.java @@ -1,5 +1,7 @@ package com.hubEleven.common.exception; +import static com.hubEleven.common.code.ErrorCode.*; + import com.hubEleven.common.response.ApiResponse; import com.hubEleven.common.response.ApiResponseEntity; import org.springframework.http.ResponseEntity; @@ -7,18 +9,16 @@ import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler; -import static com.hubEleven.common.code.ErrorCode.*; - @RestControllerAdvice public class GlobalExceptionHandler extends ResponseEntityExceptionHandler { - @ExceptionHandler(GlobalException.class) - ResponseEntity globalExceptionHandler(GlobalException e) { - return ApiResponseEntity.onFailure(e.getErrorCode()); - } + @ExceptionHandler(GlobalException.class) + ResponseEntity globalExceptionHandler(GlobalException e) { + return ApiResponseEntity.onFailure(e.getErrorCode()); + } - @ExceptionHandler(Exception.class) - public ResponseEntity> handleException(final Exception e) { - return ApiResponseEntity.onFailure(SERVER_ERROR); - } + @ExceptionHandler(Exception.class) + public ResponseEntity> handleException(final Exception e) { + return ApiResponseEntity.onFailure(SERVER_ERROR); + } } diff --git a/common/src/main/java/com/hubEleven/common/model/BaseEntity.java b/common/src/main/java/com/hubEleven/common/model/BaseEntity.java index f031b36e..ddd15468 100644 --- a/common/src/main/java/com/hubEleven/common/model/BaseEntity.java +++ b/common/src/main/java/com/hubEleven/common/model/BaseEntity.java @@ -3,6 +3,7 @@ import jakarta.persistence.Column; import jakarta.persistence.EntityListeners; import jakarta.persistence.MappedSuperclass; +import java.time.LocalDateTime; import lombok.Getter; import org.springframework.data.annotation.CreatedBy; import org.springframework.data.annotation.CreatedDate; @@ -10,37 +11,33 @@ import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; -import java.time.LocalDateTime; - @Getter @MappedSuperclass @EntityListeners(AuditingEntityListener.class) public abstract class BaseEntity { - @CreatedDate - @Column(updatable = false, nullable = false) - private LocalDateTime createdAt; + @CreatedDate + @Column(updatable = false, nullable = false) + private LocalDateTime createdAt; - @CreatedBy - @Column(updatable = false) - private Long createdBy; + @CreatedBy + @Column(updatable = false) + private Long createdBy; - @LastModifiedDate - private LocalDateTime updatedAt; + @LastModifiedDate private LocalDateTime updatedAt; - @LastModifiedBy - private Long updatedBy; + @LastModifiedBy private Long updatedBy; - private LocalDateTime deletedAt; + private LocalDateTime deletedAt; - private Long deletedBy; + private Long deletedBy; - public void delete(Long deletedBy) { - this.deletedAt = LocalDateTime.now(); - this.deletedBy = deletedBy; - } + public void delete(Long deletedBy) { + this.deletedAt = LocalDateTime.now(); + this.deletedBy = deletedBy; + } - public boolean isDeleted() { - return this.deletedAt != null; - } + public boolean isDeleted() { + return this.deletedAt != null; + } } diff --git a/common/src/main/java/com/hubEleven/common/request/CommonPageRequest.java b/common/src/main/java/com/hubEleven/common/request/CommonPageRequest.java index c1279cbb..f79808ce 100644 --- a/common/src/main/java/com/hubEleven/common/request/CommonPageRequest.java +++ b/common/src/main/java/com/hubEleven/common/request/CommonPageRequest.java @@ -5,46 +5,41 @@ import org.springframework.data.domain.Sort; public record CommonPageRequest( - int page, - int size, - SortType sortType, - Sort.Direction direction, - String keyword -) { - public CommonPageRequest { - if (page < 0) { - page = 0; - } - - if (size != 10 && size != 30 && size != 50) { - size = 10; - } - - if (sortType == null) { - sortType = SortType.CREATED_AT; - } - - if (direction == null) { - direction = Sort.Direction.DESC; - } - } - - public Pageable toPageable() { - return PageRequest.of(page, size, Sort.by(direction, sortType.getFieldName())); - } - - public enum SortType { - CREATED_AT("createdAt"), - UPDATED_AT("updatedAt"); - - private final String fieldName; - - SortType(String fieldName) { - this.fieldName = fieldName; - } - - public String getFieldName() { - return fieldName; - } - } + int page, int size, SortType sortType, Sort.Direction direction, String keyword) { + public CommonPageRequest { + if (page < 0) { + page = 0; + } + + if (size != 10 && size != 30 && size != 50) { + size = 10; + } + + if (sortType == null) { + sortType = SortType.CREATED_AT; + } + + if (direction == null) { + direction = Sort.Direction.DESC; + } + } + + public Pageable toPageable() { + return PageRequest.of(page, size, Sort.by(direction, sortType.getFieldName())); + } + + public enum SortType { + CREATED_AT("createdAt"), + UPDATED_AT("updatedAt"); + + private final String fieldName; + + SortType(String fieldName) { + this.fieldName = fieldName; + } + + public String getFieldName() { + return fieldName; + } + } } diff --git a/common/src/main/java/com/hubEleven/common/response/ApiResponse.java b/common/src/main/java/com/hubEleven/common/response/ApiResponse.java index 8190e69c..95630ec2 100644 --- a/common/src/main/java/com/hubEleven/common/response/ApiResponse.java +++ b/common/src/main/java/com/hubEleven/common/response/ApiResponse.java @@ -4,9 +4,5 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; @JsonPropertyOrder({"code", "message", "result"}) -public record ApiResponse ( - String code, - String message, - @JsonInclude(JsonInclude.Include.NON_NULL) T result -) { -} +public record ApiResponse( + String code, String message, @JsonInclude(JsonInclude.Include.NON_NULL) T result) {} diff --git a/common/src/main/java/com/hubEleven/common/response/ApiResponseEntity.java b/common/src/main/java/com/hubEleven/common/response/ApiResponseEntity.java index 8af7d9ae..ece09fd0 100644 --- a/common/src/main/java/com/hubEleven/common/response/ApiResponseEntity.java +++ b/common/src/main/java/com/hubEleven/common/response/ApiResponseEntity.java @@ -2,38 +2,40 @@ import com.hubEleven.common.code.StatusCode; import com.hubEleven.common.code.SuccessCode; +import java.net.URI; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import java.net.URI; - public class ApiResponseEntity { - public static ResponseEntity> success(T result) { - return ResponseEntity.ok().body(new ApiResponse<>(SuccessCode.SUCCESS.name(), SuccessCode.SUCCESS.getMessage(), result)); - } - - public static ResponseEntity> from(StatusCode code, T result) { - return ResponseEntity.status(code.getHttpStatus()) - .body(new ApiResponse<>(code.getName(), code.getMessage(), result)); - } - - public static ResponseEntity> create(StatusCode code, String url, T result) { - return ResponseEntity.created(URI.create(url)) - .body(new ApiResponse<>(code.getName(), code.getMessage(), result)); - } - - public static ResponseEntity> onFailure(StatusCode code) { - return ResponseEntity.status(code.getHttpStatus()) - .body(new ApiResponse<>(code.getName(), code.getMessage(), null)); - } - - public static ResponseEntity> badRequest(String message) { - return ResponseEntity.badRequest() - .body(new ApiResponse<>(HttpStatus.BAD_REQUEST.name(), message, null)); - } - - public static ResponseEntity> ok(String message) { - return ResponseEntity.ok().body(new ApiResponse<>(HttpStatus.OK.name(), message, null)); - } + public static ResponseEntity> success(T result) { + return ResponseEntity.ok() + .body( + new ApiResponse<>( + SuccessCode.SUCCESS.name(), SuccessCode.SUCCESS.getMessage(), result)); + } + + public static ResponseEntity> from(StatusCode code, T result) { + return ResponseEntity.status(code.getHttpStatus()) + .body(new ApiResponse<>(code.getName(), code.getMessage(), result)); + } + + public static ResponseEntity> create(StatusCode code, String url, T result) { + return ResponseEntity.created(URI.create(url)) + .body(new ApiResponse<>(code.getName(), code.getMessage(), result)); + } + + public static ResponseEntity> onFailure(StatusCode code) { + return ResponseEntity.status(code.getHttpStatus()) + .body(new ApiResponse<>(code.getName(), code.getMessage(), null)); + } + + public static ResponseEntity> badRequest(String message) { + return ResponseEntity.badRequest() + .body(new ApiResponse<>(HttpStatus.BAD_REQUEST.name(), message, null)); + } + + public static ResponseEntity> ok(String message) { + return ResponseEntity.ok().body(new ApiResponse<>(HttpStatus.OK.name(), message, null)); + } } diff --git a/common/src/main/java/com/hubEleven/common/response/CommonPageResponse.java b/common/src/main/java/com/hubEleven/common/response/CommonPageResponse.java index c6db7d36..b9d9d2f1 100644 --- a/common/src/main/java/com/hubEleven/common/response/CommonPageResponse.java +++ b/common/src/main/java/com/hubEleven/common/response/CommonPageResponse.java @@ -1,27 +1,24 @@ package com.hubEleven.common.response; -import org.springframework.data.domain.Page; - import java.util.List; +import org.springframework.data.domain.Page; -public record CommonPageResponse ( - List content, - int page, - int size, - long totalElements, - int totalPages, - boolean first, - boolean last -) { - public static CommonPageResponse of(Page page) { - return new CommonPageResponse<>( - page.getContent(), - page.getNumber(), - page.getSize(), - page.getTotalElements(), - page.getTotalPages(), - page.isFirst(), - page.isLast() - ); - } +public record CommonPageResponse( + List content, + int page, + int size, + long totalElements, + int totalPages, + boolean first, + boolean last) { + public static CommonPageResponse of(Page page) { + return new CommonPageResponse<>( + page.getContent(), + page.getNumber(), + page.getSize(), + page.getTotalElements(), + page.getTotalPages(), + page.isFirst(), + page.isLast()); + } } diff --git a/common/src/main/java/com/hubEleven/common/utils/PagingUtils.java b/common/src/main/java/com/hubEleven/common/utils/PagingUtils.java index 4540d5c8..5eb6b2db 100644 --- a/common/src/main/java/com/hubEleven/common/utils/PagingUtils.java +++ b/common/src/main/java/com/hubEleven/common/utils/PagingUtils.java @@ -1,13 +1,12 @@ package com.hubEleven.common.utils; import com.hubEleven.common.response.CommonPageResponse; -import org.springframework.data.domain.Page; - import java.util.function.Function; +import org.springframework.data.domain.Page; public class PagingUtils { - public static CommonPageResponse convert(Page page, Function mapper) { - return CommonPageResponse.of(page.map(mapper)); - } + public static CommonPageResponse convert(Page page, Function mapper) { + return CommonPageResponse.of(page.map(mapper)); + } } diff --git a/common/src/test/java/com/hubEleven/common/CommonApplicationTests.java b/common/src/test/java/com/hubEleven/common/CommonApplicationTests.java index 5b206589..e9e17456 100644 --- a/common/src/test/java/com/hubEleven/common/CommonApplicationTests.java +++ b/common/src/test/java/com/hubEleven/common/CommonApplicationTests.java @@ -1,9 +1,6 @@ package com.hubEleven.common; -import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest -class CommonApplicationTests { - -} +class CommonApplicationTests {} diff --git a/delivery/src/main/java/com/hubEleven/deliveryManager/application/DeliveryManagerService.java b/delivery/src/main/java/com/hubEleven/deliveryManager/application/DeliveryManagerService.java index f5c4e69a..77d27eb9 100644 --- a/delivery/src/main/java/com/hubEleven/deliveryManager/application/DeliveryManagerService.java +++ b/delivery/src/main/java/com/hubEleven/deliveryManager/application/DeliveryManagerService.java @@ -14,68 +14,66 @@ @Service public class DeliveryManagerService { - private final DeliveryManagerRepository deliveryManagerRepository; - - public DeliveryManagerService(DeliveryManagerRepository deliveryManagerRepository) { - this.deliveryManagerRepository = deliveryManagerRepository; - } - - //배송 담당자 생성 - @Transactional - public DeliveryManagerResponseDto createDeliveryManager(DeliveryManagerCreateRequestDto createRequestDto) { - // plan : 요청 dto로 유저id만 받고, 유저서비스에서 id로 정보를 조회해 나머지 엔티티 필드 채우기(hubID, slackId, DeliveryType, deliveryOrder(배송순번)) - /** - * TODO : 1. 생성 권한이 있는지 확인하기 (로그인한 유저가 마스터 혹은 허브관리자인가?) -> 컨트롤러에서 - * 2. RequestDto에서 id 꺼내와 FeignClient로 User-Service 서버에서 user정보 받아오기 (user정보에 id, slackId, 권한, 소속업체(허브)ID 존재) - * 3. 위에서 받아온 user정보에서 id 존재 여부 조회 후, role이 배송담당자인지 확인, 소속업체 확인하기(허브면 허브가 존재하는가?) - * 3-1 요청한 id가 이미 배달기사로 등록된 아이디가 아닌지 검증 - * 3-2 소속업체 id가 NULL이면 허브배송 담당자, NULL이 아니면 업체담당자(소속업체 id가 허브id가 맞는지도 검증해야 할까?) - * (배송담당자는 소속이 없거나, 허브소속이니까, 유저정보에서 배송담당자 권한이면서 소속이 있다면 그 소속은 허브라고 생각하고 검증을 안해도 되는가? -> 유저에서 검증 ) - * 4. 배송순번 부여하기 (전략: 배송담당자 타입별로 순번을 각각 부여해야하므로, 배송담당자 타입으로 조회하여 순번최댓값을 가져오고, +1 증가시켜 부여) -> 동시성 문제 생각할 것 - */ - - log.info("[Service] 배달 담당자 생성 요청"); - //임시 데이터---------------------------- - Long id = createRequestDto.deliveryManagerId(); - UUID hubId = UUID.randomUUID(); - String slackId = "slack001"; - DeliveryType deliveryType = DeliveryType.COMPANY; - //---------------------------------- - - //TODO: DB에 이미 존재하는 id 인지 확인 - Integer maxOrder; - - //배송순번 부여 - int deliveryOrder = setDeliveryOrder(deliveryType); - - DeliveryManager deliveryManager = DeliveryManager.create( - id, hubId, slackId, deliveryType, deliveryOrder - ); - - deliveryManagerRepository.save(deliveryManager); - - log.info("[Service] 배달 담당자 생성 - DB 저장 성공"); - - DeliveryManagerResponseDto responseDto = DeliveryManagerResponseDto.from(deliveryManager); - - return responseDto; - - } - - public int setDeliveryOrder(DeliveryType deliveryType) { - Integer maxOrder; - if (deliveryType == DeliveryType.HUB) { - maxOrder = deliveryManagerRepository.findMaxDeliveryOrderByDeliveryType(DeliveryType.HUB); - int nextOrder = maxOrder == null ? 1 : maxOrder + 1; - log.info("현재 마지막 순번 : {} , 생성된 배달 순번 : {}", maxOrder, nextOrder); - return nextOrder; - } else { - maxOrder = deliveryManagerRepository.findMaxDeliveryOrderByDeliveryType(DeliveryType.COMPANY); - int nextOrder = maxOrder == null ? 1 : maxOrder + 1; - log.info("현재 마지막 순번 : {} , 생성된 배달 순번 : {}", maxOrder, nextOrder); - - return nextOrder; - } - } - } - + private final DeliveryManagerRepository deliveryManagerRepository; + + public DeliveryManagerService(DeliveryManagerRepository deliveryManagerRepository) { + this.deliveryManagerRepository = deliveryManagerRepository; + } + + // 배송 담당자 생성 + @Transactional + public DeliveryManagerResponseDto createDeliveryManager( + DeliveryManagerCreateRequestDto createRequestDto) { + // plan : 요청 dto로 유저id만 받고, 유저서비스에서 id로 정보를 조회해 나머지 엔티티 필드 채우기(hubID, slackId, DeliveryType, + // deliveryOrder(배송순번)) + /** + * TODO : 1. 생성 권한이 있는지 확인하기 (로그인한 유저가 마스터 혹은 허브관리자인가?) -> 컨트롤러에서 2. RequestDto에서 id 꺼내와 + * FeignClient로 User-Service 서버에서 user정보 받아오기 (user정보에 id, slackId, 권한, 소속업체(허브)ID 존재) 3. 위에서 + * 받아온 user정보에서 id 존재 여부 조회 후, role이 배송담당자인지 확인, 소속업체 확인하기(허브면 허브가 존재하는가?) 3-1 요청한 id가 이미 배달기사로 + * 등록된 아이디가 아닌지 검증 3-2 소속업체 id가 NULL이면 허브배송 담당자, NULL이 아니면 업체담당자(소속업체 id가 허브id가 맞는지도 검증해야 할까?) + * (배송담당자는 소속이 없거나, 허브소속이니까, 유저정보에서 배송담당자 권한이면서 소속이 있다면 그 소속은 허브라고 생각하고 검증을 안해도 되는가? -> 유저에서 검증 + * ) 4. 배송순번 부여하기 (전략: 배송담당자 타입별로 순번을 각각 부여해야하므로, 배송담당자 타입으로 조회하여 순번최댓값을 가져오고, +1 증가시켜 부여) -> + * 동시성 문제 생각할 것 + */ + log.info("[Service] 배달 담당자 생성 요청"); + // 임시 데이터---------------------------- + Long id = createRequestDto.deliveryManagerId(); + UUID hubId = UUID.randomUUID(); + String slackId = "slack001"; + DeliveryType deliveryType = DeliveryType.COMPANY; + // ---------------------------------- + + // TODO: DB에 이미 존재하는 id 인지 확인 + Integer maxOrder; + + // 배송순번 부여 + int deliveryOrder = setDeliveryOrder(deliveryType); + + DeliveryManager deliveryManager = + DeliveryManager.create(id, hubId, slackId, deliveryType, deliveryOrder); + + deliveryManagerRepository.save(deliveryManager); + + log.info("[Service] 배달 담당자 생성 - DB 저장 성공"); + + DeliveryManagerResponseDto responseDto = DeliveryManagerResponseDto.from(deliveryManager); + + return responseDto; + } + + public int setDeliveryOrder(DeliveryType deliveryType) { + Integer maxOrder; + if (deliveryType == DeliveryType.HUB) { + maxOrder = deliveryManagerRepository.findMaxDeliveryOrderByDeliveryType(DeliveryType.HUB); + int nextOrder = maxOrder == null ? 1 : maxOrder + 1; + log.info("현재 마지막 순번 : {} , 생성된 배달 순번 : {}", maxOrder, nextOrder); + return nextOrder; + } else { + maxOrder = deliveryManagerRepository.findMaxDeliveryOrderByDeliveryType(DeliveryType.COMPANY); + int nextOrder = maxOrder == null ? 1 : maxOrder + 1; + log.info("현재 마지막 순번 : {} , 생성된 배달 순번 : {}", maxOrder, nextOrder); + + return nextOrder; + } + } +} diff --git a/delivery/src/main/java/com/hubEleven/deliveryManager/domain/DeliveryManager.java b/delivery/src/main/java/com/hubEleven/deliveryManager/domain/DeliveryManager.java index 620384f0..9ab8d143 100644 --- a/delivery/src/main/java/com/hubEleven/deliveryManager/domain/DeliveryManager.java +++ b/delivery/src/main/java/com/hubEleven/deliveryManager/domain/DeliveryManager.java @@ -15,33 +15,33 @@ @NoArgsConstructor(access = AccessLevel.PROTECTED) public class DeliveryManager { - @Id - private Long deliveryManagerId; //userId를 받아올 것임 - - private UUID hubId; - - private String slackId; - - @Enumerated(EnumType.STRING) - private DeliveryType deliveryType; - - @Column(updatable = false, nullable = false) - private int deliveryOrder; - - private DeliveryManager(Long deliveryManagerId, UUID hubId, String slackId, - DeliveryType deliveryType, int deliveryOrder) { - this.deliveryManagerId = deliveryManagerId; - this.hubId = hubId; - this.slackId = slackId; - this.deliveryType = deliveryType; - this.deliveryOrder = deliveryOrder; - } - - public static DeliveryManager create( - Long id, UUID hubId, String slackId, DeliveryType deliveryType, int deliveryOrder - ) { - return new DeliveryManager(id, hubId, slackId, deliveryType, deliveryOrder); - - } + @Id private Long deliveryManagerId; // userId를 받아올 것임 + + private UUID hubId; + + private String slackId; + + @Enumerated(EnumType.STRING) + private DeliveryType deliveryType; + + @Column(updatable = false, nullable = false) + private int deliveryOrder; + + private DeliveryManager( + Long deliveryManagerId, + UUID hubId, + String slackId, + DeliveryType deliveryType, + int deliveryOrder) { + this.deliveryManagerId = deliveryManagerId; + this.hubId = hubId; + this.slackId = slackId; + this.deliveryType = deliveryType; + this.deliveryOrder = deliveryOrder; + } + + public static DeliveryManager create( + Long id, UUID hubId, String slackId, DeliveryType deliveryType, int deliveryOrder) { + return new DeliveryManager(id, hubId, slackId, deliveryType, deliveryOrder); + } } - diff --git a/delivery/src/main/java/com/hubEleven/deliveryManager/domain/DeliveryManagerRepository.java b/delivery/src/main/java/com/hubEleven/deliveryManager/domain/DeliveryManagerRepository.java index 0a92b727..e8540485 100644 --- a/delivery/src/main/java/com/hubEleven/deliveryManager/domain/DeliveryManagerRepository.java +++ b/delivery/src/main/java/com/hubEleven/deliveryManager/domain/DeliveryManagerRepository.java @@ -2,9 +2,8 @@ public interface DeliveryManagerRepository { - //deliveryType에 따른 최대 순번값 조회 - Integer findMaxDeliveryOrderByDeliveryType(DeliveryType type); - - DeliveryManager save(DeliveryManager deliveryManager); + // deliveryType에 따른 최대 순번값 조회 + Integer findMaxDeliveryOrderByDeliveryType(DeliveryType type); + DeliveryManager save(DeliveryManager deliveryManager); } diff --git a/delivery/src/main/java/com/hubEleven/deliveryManager/domain/DeliveryType.java b/delivery/src/main/java/com/hubEleven/deliveryManager/domain/DeliveryType.java index 7eb88d5a..4c527e99 100644 --- a/delivery/src/main/java/com/hubEleven/deliveryManager/domain/DeliveryType.java +++ b/delivery/src/main/java/com/hubEleven/deliveryManager/domain/DeliveryType.java @@ -6,8 +6,8 @@ @Getter @RequiredArgsConstructor public enum DeliveryType { - HUB("허브 배송 담당자"), - COMPANY("업체 배송 담당자"); + HUB("허브 배송 담당자"), + COMPANY("업체 배송 담당자"); - private final String description; -} \ No newline at end of file + private final String description; +} diff --git a/delivery/src/main/java/com/hubEleven/deliveryManager/infrastructure/DeliveryManagerJpaRepository.java b/delivery/src/main/java/com/hubEleven/deliveryManager/infrastructure/DeliveryManagerJpaRepository.java index 5b65c8b0..62ab647e 100644 --- a/delivery/src/main/java/com/hubEleven/deliveryManager/infrastructure/DeliveryManagerJpaRepository.java +++ b/delivery/src/main/java/com/hubEleven/deliveryManager/infrastructure/DeliveryManagerJpaRepository.java @@ -7,6 +7,7 @@ public interface DeliveryManagerJpaRepository extends JpaRepository { - @Query("SELECT MAX(dm.deliveryOrder) FROM DeliveryManager dm WHERE dm.deliveryType = :deliveryType") - Integer findMaxDeliveryOrderByDeliveryType(DeliveryType deliveryType); + @Query( + "SELECT MAX(dm.deliveryOrder) FROM DeliveryManager dm WHERE dm.deliveryType = :deliveryType") + Integer findMaxDeliveryOrderByDeliveryType(DeliveryType deliveryType); } diff --git a/delivery/src/main/java/com/hubEleven/deliveryManager/infrastructure/DeliveryManagerRepositoryImpl.java b/delivery/src/main/java/com/hubEleven/deliveryManager/infrastructure/DeliveryManagerRepositoryImpl.java index 2b50c5ca..3fe30e49 100644 --- a/delivery/src/main/java/com/hubEleven/deliveryManager/infrastructure/DeliveryManagerRepositoryImpl.java +++ b/delivery/src/main/java/com/hubEleven/deliveryManager/infrastructure/DeliveryManagerRepositoryImpl.java @@ -8,21 +8,19 @@ @Repository public class DeliveryManagerRepositoryImpl implements DeliveryManagerRepository { - private final DeliveryManagerJpaRepository deliveryManagerJpaRepository; + private final DeliveryManagerJpaRepository deliveryManagerJpaRepository; + public DeliveryManagerRepositoryImpl(DeliveryManagerJpaRepository deliveryManagerJpaRepository) { + this.deliveryManagerJpaRepository = deliveryManagerJpaRepository; + } - public DeliveryManagerRepositoryImpl(DeliveryManagerJpaRepository deliveryManagerJpaRepository) { - this.deliveryManagerJpaRepository = deliveryManagerJpaRepository; - } + @Override + public Integer findMaxDeliveryOrderByDeliveryType(DeliveryType deliveryType) { + return deliveryManagerJpaRepository.findMaxDeliveryOrderByDeliveryType(deliveryType); + } - - @Override - public Integer findMaxDeliveryOrderByDeliveryType(DeliveryType deliveryType) { - return deliveryManagerJpaRepository.findMaxDeliveryOrderByDeliveryType(deliveryType); - } - - @Override - public DeliveryManager save(DeliveryManager deliveryManager) { - return deliveryManagerJpaRepository.save(deliveryManager); - } + @Override + public DeliveryManager save(DeliveryManager deliveryManager) { + return deliveryManagerJpaRepository.save(deliveryManager); + } } diff --git a/delivery/src/main/java/com/hubEleven/deliveryManager/presentation/DeliveryManagerController.java b/delivery/src/main/java/com/hubEleven/deliveryManager/presentation/DeliveryManagerController.java index a9fc4005..a93b7b07 100644 --- a/delivery/src/main/java/com/hubEleven/deliveryManager/presentation/DeliveryManagerController.java +++ b/delivery/src/main/java/com/hubEleven/deliveryManager/presentation/DeliveryManagerController.java @@ -1,6 +1,5 @@ package com.hubEleven.deliveryManager.presentation; - import com.hubEleven.deliveryManager.application.DeliveryManagerService; import com.hubEleven.deliveryManager.presentation.dto.request.DeliveryManagerCreateRequestDto; import com.hubEleven.deliveryManager.presentation.dto.response.DeliveryManagerResponseDto; @@ -17,22 +16,20 @@ @RequestMapping("/v1/delivery-managers") public class DeliveryManagerController { - private final DeliveryManagerService deliveryManagerService; - - public DeliveryManagerController(DeliveryManagerService deliveryManagerService) { - this.deliveryManagerService = deliveryManagerService; - } - - - @PostMapping - public ResponseEntity createDeliveryManager( - @RequestBody @Valid DeliveryManagerCreateRequestDto createRequestDto) { - //TODO: JWT토큰 파싱하여 권한 검증 - log.info("[Controller] 배달 담당자 생성 요청"); - DeliveryManagerResponseDto responseDto = deliveryManagerService.createDeliveryManager(createRequestDto); + private final DeliveryManagerService deliveryManagerService; - return ResponseEntity.ok(responseDto); - } + public DeliveryManagerController(DeliveryManagerService deliveryManagerService) { + this.deliveryManagerService = deliveryManagerService; + } + @PostMapping + public ResponseEntity createDeliveryManager( + @RequestBody @Valid DeliveryManagerCreateRequestDto createRequestDto) { + // TODO: JWT토큰 파싱하여 권한 검증 + log.info("[Controller] 배달 담당자 생성 요청"); + DeliveryManagerResponseDto responseDto = + deliveryManagerService.createDeliveryManager(createRequestDto); + return ResponseEntity.ok(responseDto); + } } diff --git a/delivery/src/main/java/com/hubEleven/deliveryManager/presentation/dto/request/DeliveryManagerCreateRequestDto.java b/delivery/src/main/java/com/hubEleven/deliveryManager/presentation/dto/request/DeliveryManagerCreateRequestDto.java index 31a5407c..8db3e745 100644 --- a/delivery/src/main/java/com/hubEleven/deliveryManager/presentation/dto/request/DeliveryManagerCreateRequestDto.java +++ b/delivery/src/main/java/com/hubEleven/deliveryManager/presentation/dto/request/DeliveryManagerCreateRequestDto.java @@ -3,10 +3,5 @@ import jakarta.validation.constraints.NotNull; public record DeliveryManagerCreateRequestDto( - //배송타입이 허브일때는 null, 업체일때는 id필수여야함 - @NotNull(message = "ID는 필수입니다.") - Long deliveryManagerId - -) { - -} + // 배송타입이 허브일때는 null, 업체일때는 id필수여야함 + @NotNull(message = "ID는 필수입니다.") Long deliveryManagerId) {} diff --git a/delivery/src/main/java/com/hubEleven/deliveryManager/presentation/dto/response/DeliveryManagerResponseDto.java b/delivery/src/main/java/com/hubEleven/deliveryManager/presentation/dto/response/DeliveryManagerResponseDto.java index 4c24c1a9..42d198a7 100644 --- a/delivery/src/main/java/com/hubEleven/deliveryManager/presentation/dto/response/DeliveryManagerResponseDto.java +++ b/delivery/src/main/java/com/hubEleven/deliveryManager/presentation/dto/response/DeliveryManagerResponseDto.java @@ -5,19 +5,17 @@ import java.util.UUID; public record DeliveryManagerResponseDto( - Long deliveryManagerId, - UUID hubId, - String slackId, - DeliveryType deliveryType, - int deliveryOrder -) { - public static DeliveryManagerResponseDto from(DeliveryManager deliveryManager) { - return new DeliveryManagerResponseDto( - deliveryManager.getDeliveryManagerId(), - deliveryManager.getHubId(), - deliveryManager.getSlackId(), - deliveryManager.getDeliveryType(), - deliveryManager.getDeliveryOrder() - ); - } + Long deliveryManagerId, + UUID hubId, + String slackId, + DeliveryType deliveryType, + int deliveryOrder) { + public static DeliveryManagerResponseDto from(DeliveryManager deliveryManager) { + return new DeliveryManagerResponseDto( + deliveryManager.getDeliveryManagerId(), + deliveryManager.getHubId(), + deliveryManager.getSlackId(), + deliveryManager.getDeliveryType(), + deliveryManager.getDeliveryOrder()); + } } diff --git a/gradlew b/gradlew old mode 100644 new mode 100755