diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/item/dto/ItemDto.java b/store-service/src/main/java/com/justpickup/storeservice/domain/item/dto/ItemDto.java new file mode 100644 index 0000000..f620c9c --- /dev/null +++ b/store-service/src/main/java/com/justpickup/storeservice/domain/item/dto/ItemDto.java @@ -0,0 +1,49 @@ +package com.justpickup.storeservice.domain.item.dto; + +import com.justpickup.storeservice.domain.item.entity.Item; +import com.justpickup.storeservice.global.entity.Yn; +import lombok.Builder; +import lombok.Getter; + +@Getter +public class ItemDto { + + private Long id; + + private String name; + + private Yn salesYn; + + private Long price; + + /* + private PhotoDto photoDto; + private CategoryDto categoryDto; + private StoreDto storeDto; + private List itemOptionDtoList; + */ + + // == 생성 메소드 == // + @Builder + public ItemDto(Long id, String name, Yn salesYn, Long price) { + this.id = id; + this.name = name; + this.salesYn = salesYn; + this.price = price; + } + + public static ItemDto createItemDto(Item item) { + return ItemDto.builder() + .id(item.getId()) + .name(item.getName()) + .price(item.getPrice()) + .salesYn(item.getSalesYn()) + .build(); + } + + // TODO: 2022/02/03 queryDsl 쿼리 생성 시 구현 필요 +// public static ItemDto createFullItemDto(Item item) { +// return null +// } + +} diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/item/repository/ItemRepository.java b/store-service/src/main/java/com/justpickup/storeservice/domain/item/repository/ItemRepository.java new file mode 100644 index 0000000..de7b237 --- /dev/null +++ b/store-service/src/main/java/com/justpickup/storeservice/domain/item/repository/ItemRepository.java @@ -0,0 +1,7 @@ +package com.justpickup.storeservice.domain.item.repository; + +import com.justpickup.storeservice.domain.item.entity.Item; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface ItemRepository extends JpaRepository { +} diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/item/service/ItemService.java b/store-service/src/main/java/com/justpickup/storeservice/domain/item/service/ItemService.java new file mode 100644 index 0000000..518088d --- /dev/null +++ b/store-service/src/main/java/com/justpickup/storeservice/domain/item/service/ItemService.java @@ -0,0 +1,8 @@ +package com.justpickup.storeservice.domain.item.service; + +import com.justpickup.storeservice.domain.item.dto.ItemDto; + +public interface ItemService { + + ItemDto findItemByItemId(Long itemId); +} diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/item/service/ItemServiceImpl.java b/store-service/src/main/java/com/justpickup/storeservice/domain/item/service/ItemServiceImpl.java new file mode 100644 index 0000000..1500450 --- /dev/null +++ b/store-service/src/main/java/com/justpickup/storeservice/domain/item/service/ItemServiceImpl.java @@ -0,0 +1,29 @@ +package com.justpickup.storeservice.domain.item.service; + +import com.justpickup.storeservice.domain.item.dto.ItemDto; +import com.justpickup.storeservice.domain.item.entity.Item; +import com.justpickup.storeservice.domain.item.repository.ItemRepository; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.NoSuchElementException; + +@Service +@RequiredArgsConstructor +@Transactional(readOnly = true) +@Slf4j +public class ItemServiceImpl implements ItemService { + + private final ItemRepository itemRepository; + + + @Override + public ItemDto findItemByItemId(Long itemId) { + Item findItem = itemRepository.findById(itemId) + .orElseThrow(NoSuchElementException::new); + + return ItemDto.createItemDto(findItem); + } +} diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/item/web/ItemController.java b/store-service/src/main/java/com/justpickup/storeservice/domain/item/web/ItemController.java new file mode 100644 index 0000000..d349329 --- /dev/null +++ b/store-service/src/main/java/com/justpickup/storeservice/domain/item/web/ItemController.java @@ -0,0 +1,53 @@ +package com.justpickup.storeservice.domain.item.web; + +import com.justpickup.storeservice.domain.item.dto.ItemDto; +import com.justpickup.storeservice.domain.item.service.ItemService; +import com.justpickup.storeservice.global.entity.Yn; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/item") +public class ItemController { + + private final ItemService itemService; + + @GetMapping("/{itemId}") + public ResponseEntity getItem(@PathVariable("itemId") Long itemId) { + ItemDto itemByItemId = itemService.findItemByItemId(itemId); + + GetItemResponse getItemResponse = new GetItemResponse(itemByItemId); + return ResponseEntity.status(HttpStatus.OK) + .body(new Result<>("OK", getItemResponse)); + } + + @Data @NoArgsConstructor @AllArgsConstructor + static class Result { + private String message; + private T data; + } + + @Data @NoArgsConstructor @AllArgsConstructor + static class GetItemResponse { + private Long id; + private String name; + private Yn salesYn; + private Long price; + + public GetItemResponse(ItemDto itemDto) { + this.id = itemDto.getId(); + this.name = itemDto.getName(); + this.salesYn = itemDto.getSalesYn(); + this.price = itemDto.getPrice(); + } + } +}