From 04dc8a3d1c0ed62664b8419eff56d8aeca44cfdc Mon Sep 17 00:00:00 2001 From: bum12ark Date: Fri, 11 Mar 2022 15:33:24 +0900 Subject: [PATCH] =?UTF-8?q?feat(store):=20[API]=20=ED=9A=8C=EC=9B=90=20?= =?UTF-8?q?=EA=B3=A0=EC=9C=A0=EB=B2=88=ED=98=B8=EB=A1=9C=20=EB=A7=A4?= =?UTF-8?q?=EC=9E=A5=20=EC=B0=BE=EA=B8=B0=20=EB=A1=9C=EC=A7=81=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/store/dto/StoreByUserIdDto.java | 24 + .../domain/store/service/StoreService.java | 4 +- .../store/service/StoreServiceImpl.java | 11 +- .../domain/store/web/StoreController.java | 2 +- .../store/web/StoreOwnerApiController.java | 43 + .../main/resources/static/docs/api-docs.html | 778 ------------------ .../domain/store/web/StoreControllerTest.java | 2 +- 7 files changed, 82 insertions(+), 782 deletions(-) create mode 100644 store-service/src/main/java/com/justpickup/storeservice/domain/store/dto/StoreByUserIdDto.java create mode 100644 store-service/src/main/java/com/justpickup/storeservice/domain/store/web/StoreOwnerApiController.java delete mode 100644 store-service/src/main/resources/static/docs/api-docs.html diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/store/dto/StoreByUserIdDto.java b/store-service/src/main/java/com/justpickup/storeservice/domain/store/dto/StoreByUserIdDto.java new file mode 100644 index 0000000..0e9e9a6 --- /dev/null +++ b/store-service/src/main/java/com/justpickup/storeservice/domain/store/dto/StoreByUserIdDto.java @@ -0,0 +1,24 @@ +package com.justpickup.storeservice.domain.store.dto; + +import com.justpickup.storeservice.domain.store.entity.Store; +import lombok.Builder; +import lombok.Getter; + +@Getter +public class StoreByUserIdDto { + private Long id; + private String name; + + @Builder + public StoreByUserIdDto(Long id, String name) { + this.id = id; + this.name = name; + } + + public static StoreByUserIdDto of(Store store) { + return StoreByUserIdDto.builder() + .id(store.getId()) + .name(store.getName()) + .build(); + } +} diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/store/service/StoreService.java b/store-service/src/main/java/com/justpickup/storeservice/domain/store/service/StoreService.java index 1787b50..b389943 100644 --- a/store-service/src/main/java/com/justpickup/storeservice/domain/store/service/StoreService.java +++ b/store-service/src/main/java/com/justpickup/storeservice/domain/store/service/StoreService.java @@ -2,6 +2,7 @@ package com.justpickup.storeservice.domain.store.service; import com.justpickup.storeservice.domain.store.dto.SearchStoreCondition; import com.justpickup.storeservice.domain.store.dto.SearchStoreResult; +import com.justpickup.storeservice.domain.store.dto.StoreByUserIdDto; import com.justpickup.storeservice.domain.store.dto.StoreDto; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.SliceImpl; @@ -11,5 +12,6 @@ import java.util.List; public interface StoreService { SliceImpl findSearchStoreScroll(SearchStoreCondition condition, Pageable pageable); List findFavoriteStore(SearchStoreCondition condition, Long userId); - StoreDto findStore(Long storeId); + StoreDto findStoreById(Long storeId); + StoreByUserIdDto findStoreByUserId(Long userId); } diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/store/service/StoreServiceImpl.java b/store-service/src/main/java/com/justpickup/storeservice/domain/store/service/StoreServiceImpl.java index 3caf57e..75f3305 100644 --- a/store-service/src/main/java/com/justpickup/storeservice/domain/store/service/StoreServiceImpl.java +++ b/store-service/src/main/java/com/justpickup/storeservice/domain/store/service/StoreServiceImpl.java @@ -3,6 +3,7 @@ package com.justpickup.storeservice.domain.store.service; import com.justpickup.storeservice.domain.favoritestore.repository.FavoriteStoreCustom; import com.justpickup.storeservice.domain.store.dto.SearchStoreCondition; import com.justpickup.storeservice.domain.store.dto.SearchStoreResult; +import com.justpickup.storeservice.domain.store.dto.StoreByUserIdDto; import com.justpickup.storeservice.domain.store.dto.StoreDto; import com.justpickup.storeservice.domain.store.entity.Store; import com.justpickup.storeservice.domain.store.exception.NotExistStoreException; @@ -47,10 +48,18 @@ public class StoreServiceImpl implements StoreService { } @Override - public StoreDto findStore(Long storeId) { + public StoreDto findStoreById(Long storeId) { Store store = storeRepository.findById(storeId) .orElseThrow(() -> new NotExistStoreException(storeId + "는 없는 매장 고유번호입니다.")); return new StoreDto(store); } + + @Override + public StoreByUserIdDto findStoreByUserId(Long userId) { + Store store = storeRepository.findByUserId(userId) + .orElseThrow(() -> new NotExistStoreException(userId + "의 매장은 없습니다.")); + + return StoreByUserIdDto.of(store); + } } diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/store/web/StoreController.java b/store-service/src/main/java/com/justpickup/storeservice/domain/store/web/StoreController.java index 3bbe6f2..f3fbc3c 100644 --- a/store-service/src/main/java/com/justpickup/storeservice/domain/store/web/StoreController.java +++ b/store-service/src/main/java/com/justpickup/storeservice/domain/store/web/StoreController.java @@ -21,7 +21,7 @@ public class StoreController { @GetMapping("/{storeId}") public ResponseEntity getStore(@PathVariable("storeId") Long storeId) { - StoreDto storeDto = storeService.findStore(storeId); + StoreDto storeDto = storeService.findStoreById(storeId); GetStoreResponse getStoreResponse = new GetStoreResponse(storeDto); return ResponseEntity.ok(Result.createSuccessResult(getStoreResponse)); diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/store/web/StoreOwnerApiController.java b/store-service/src/main/java/com/justpickup/storeservice/domain/store/web/StoreOwnerApiController.java new file mode 100644 index 0000000..9979e5b --- /dev/null +++ b/store-service/src/main/java/com/justpickup/storeservice/domain/store/web/StoreOwnerApiController.java @@ -0,0 +1,43 @@ +package com.justpickup.storeservice.domain.store.web; + +import com.justpickup.storeservice.domain.store.dto.StoreByUserIdDto; +import com.justpickup.storeservice.domain.store.service.StoreService; +import com.justpickup.storeservice.global.dto.Result; +import lombok.Data; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/api") +@Slf4j +public class StoreOwnerApiController { + + private final StoreService storeService; + + @GetMapping("/api/store") + public ResponseEntity getStoreByUserId(@RequestHeader("user-id") String userHeader) { + Long userId = Long.valueOf(userHeader); + + StoreByUserIdDto dto = storeService.findStoreByUserId(userId); + + return ResponseEntity.ok(Result.createSuccessResult(dto)); + } + + @Data + static class StoreByUserIdResponse { + private Long id; + private String name; + + public StoreByUserIdResponse(StoreByUserIdDto dto) { + this.id = dto.getId(); + this.name = dto.getName(); + } + + } +} diff --git a/store-service/src/main/resources/static/docs/api-docs.html b/store-service/src/main/resources/static/docs/api-docs.html deleted file mode 100644 index 590a541..0000000 --- a/store-service/src/main/resources/static/docs/api-docs.html +++ /dev/null @@ -1,778 +0,0 @@ - - - - - - - -개요 - - - - - - -
-
-

HTTP 동사

-
-
-

본 REST API에서 사용하는 HTTP 동사(verbs)는 가능한한 표준 HTTP와 REST 규약을 따릅니다.

-
- ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
동사용례

GET

리소스를 가져올 때 사용

POST

새 리소스를 만들 때 사용

PUT

기존 리소스를 수정할 때 사용

PATCH

기존 리소스의 일부를 수정할 때 사용

DELETE

기존 리소스를 삭제할 떄 사용

-
-
-
-

HTTP 상태 코드

-
-
-

본 REST API에서 사용하는 HTTP 상태 코드는 가능한 표준 HTTP와 REST 규약을 따릅니다.

-
- ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
상태 코드용례

200 OK

요청을 성공적으로 처리함

201 Created

새 리소스를 성공적으로 생성함. 응답의 Location 헤더에 해당 리소스의 URI가 담겨있다.

204 No Content

기존 리소스를 성공적으로 수정함.

400 Bad Request

잘못된 요청을 보낸 경우. 응답 본문에 더 오류에 대한 정보가 담겨있다.

404 Not Found

요청한 리소스가 없음.

409 Conflict

클라이언트의 요청이 서버의 상태와 충돌이 발생한 경우.

-
-
-
-

snippets 작성 컨벤션

-
-
-

domain-httpRequestCode-etc

-
-
-
-
-

상품

-
-
-

상품 조회

-
-

Curl request

-
-
-
$ curl 'http://127.0.0.1:8001/item/1' -i -X GET
-
-
-
-
-

HTTP request

-
-
-
GET /item/1 HTTP/1.1
-Host: 127.0.0.1:8001
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 200 OK
-Content-Type: application/json
-Content-Length: 146
-
-{
-  "code" : "SUCCESS",
-  "message" : "",
-  "data" : {
-    "id" : 1,
-    "name" : "아메리카노",
-    "salesYn" : "Y",
-    "price" : 1500
-  }
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /item/{itemId}
ParameterDescription

itemId

상품 고유 번호

-
-
-

Response fields

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

code

String

결과 코드 SUCCESS/ERROR

message

String

메시지

data.id

Number

상품 고유 번호

data.name

String

상품 이름

data.salesYn

String

화면 표시 여부 Y/N

data.price

Number

상품 가격

-
-
-
-

상품 조회 (존재하지 않는 상품)

-
-

Curl request

-
-
-
$ curl 'http://127.0.0.1:8001/item/9999' -i -X GET
-
-
-
-
-

HTTP request

-
-
-
GET /item/9999 HTTP/1.1
-Host: 127.0.0.1:8001
-
-
-
-
-

HTTP response

-
-
-
HTTP/1.1 409 Conflict
-Content-Type: application/json
-Content-Length: 93
-
-{
-  "code" : "ERROR",
-  "message" : "존재하지 않는 상품입니다.",
-  "data" : null
-}
-
-
-
-
-

Path parameters

- - ---- - - - - - - - - - - - - -
Table 1. /item/{itemId}
ParameterDescription

itemId

상품 고유 번호

-
-
-

Response fields

- ----- - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeDescription

code

String

결과 코드 SUCCESS/ERROR

message

String

메시지

data

Null

데이터

-
-
-
-
-
- - - - - - \ No newline at end of file diff --git a/store-service/src/test/java/com/justpickup/storeservice/domain/store/web/StoreControllerTest.java b/store-service/src/test/java/com/justpickup/storeservice/domain/store/web/StoreControllerTest.java index 09737d0..b2284a6 100644 --- a/store-service/src/test/java/com/justpickup/storeservice/domain/store/web/StoreControllerTest.java +++ b/store-service/src/test/java/com/justpickup/storeservice/domain/store/web/StoreControllerTest.java @@ -41,7 +41,7 @@ class StoreControllerTest { void getStore() throws Exception { //given String storeId = "1"; - given(storeService.findStore(1L)).willReturn(getWillReturnStore()); + given(storeService.findStoreById(1L)).willReturn(getWillReturnStore()); //when ResultActions actions = mockMvc.perform(get("/store/{storeId}", storeId));