store-service 아이템 조회 api 추가

This commit is contained in:
bum12ark
2022-02-03 16:34:25 +09:00
parent 6bada8c437
commit 90ff506b14
5 changed files with 146 additions and 0 deletions

View File

@@ -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<ItemOptionDto> 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
// }
}

View File

@@ -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<Item, Long> {
}

View File

@@ -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);
}

View File

@@ -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);
}
}

View File

@@ -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<T> {
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();
}
}
}