diff --git a/owner-frontend-service/src/main/java/com/justpickup/ownerfrontendservice/domain/category/web/CategoryController.java b/owner-frontend-service/src/main/java/com/justpickup/ownerfrontendservice/domain/category/web/CategoryController.java
new file mode 100644
index 0000000..cfc2ca9
--- /dev/null
+++ b/owner-frontend-service/src/main/java/com/justpickup/ownerfrontendservice/domain/category/web/CategoryController.java
@@ -0,0 +1,14 @@
+package com.justpickup.ownerfrontendservice.domain.category.web;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+
+@Controller
+public class CategoryController {
+
+ @GetMapping("/category")
+ public String category(){
+
+ return "/domain/category/category";
+ }
+}
diff --git a/owner-frontend-service/src/main/resources/templates/domain/category/category.html b/owner-frontend-service/src/main/resources/templates/domain/category/category.html
new file mode 100644
index 0000000..ffd3d53
--- /dev/null
+++ b/owner-frontend-service/src/main/resources/templates/domain/category/category.html
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+
+
+
+
category
+
버튼을 눌러 카테고리 등록
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/owner-frontend-service/src/main/resources/templates/layouts/layout.html b/owner-frontend-service/src/main/resources/templates/layouts/layout.html
index bab8ff6..9fe8b24 100644
--- a/owner-frontend-service/src/main/resources/templates/layouts/layout.html
+++ b/owner-frontend-service/src/main/resources/templates/layouts/layout.html
@@ -44,6 +44,7 @@
+
diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/category/dto/CategoryDto.java b/store-service/src/main/java/com/justpickup/storeservice/domain/category/dto/CategoryDto.java
new file mode 100644
index 0000000..5f7bbaa
--- /dev/null
+++ b/store-service/src/main/java/com/justpickup/storeservice/domain/category/dto/CategoryDto.java
@@ -0,0 +1,31 @@
+package com.justpickup.storeservice.domain.category.dto;
+
+import com.justpickup.storeservice.domain.category.entity.Category;
+import com.justpickup.storeservice.domain.item.entity.Item;
+import com.justpickup.storeservice.domain.store.entity.Store;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Getter
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class CategoryDto {
+
+ private String name;
+ private Integer order;
+ private Store store;
+ private List- items;
+
+ public CategoryDto(Category category) {
+ this.name = category.getName();
+ this.order = category.getOrder();
+ this.store = category.getStore();
+ this.items = category.getItems();
+ this.name = category.getName();
+ }
+}
diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/category/entity/Category.java b/store-service/src/main/java/com/justpickup/storeservice/domain/category/entity/Category.java
index 7d8ceac..742e6b7 100644
--- a/store-service/src/main/java/com/justpickup/storeservice/domain/category/entity/Category.java
+++ b/store-service/src/main/java/com/justpickup/storeservice/domain/category/entity/Category.java
@@ -8,7 +8,6 @@ import lombok.Getter;
import lombok.NoArgsConstructor;
import javax.persistence.*;
-
import java.util.List;
import static javax.persistence.FetchType.LAZY;
@@ -24,7 +23,8 @@ public class Category extends BaseEntity {
private String name;
- private Integer orders;
+ @Column(name = "orders")
+ private Integer order;
@ManyToOne(fetch = LAZY)
@JoinColumn(name = "store_id")
diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/category/repository/CategoryRepository.java b/store-service/src/main/java/com/justpickup/storeservice/domain/category/repository/CategoryRepository.java
new file mode 100644
index 0000000..2cace37
--- /dev/null
+++ b/store-service/src/main/java/com/justpickup/storeservice/domain/category/repository/CategoryRepository.java
@@ -0,0 +1,13 @@
+package com.justpickup.storeservice.domain.category.repository;
+
+import com.justpickup.storeservice.domain.category.entity.Category;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface CategoryRepository extends JpaRepository {
+
+ List findAllByStoreIdOrderByOrder(Long storeId);
+}
diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/category/service/CategoryService.java b/store-service/src/main/java/com/justpickup/storeservice/domain/category/service/CategoryService.java
new file mode 100644
index 0000000..07b4453
--- /dev/null
+++ b/store-service/src/main/java/com/justpickup/storeservice/domain/category/service/CategoryService.java
@@ -0,0 +1,28 @@
+package com.justpickup.storeservice.domain.category.service;
+
+import com.justpickup.storeservice.domain.category.dto.CategoryDto;
+import com.justpickup.storeservice.domain.category.repository.CategoryRepository;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+@Slf4j
+@RequiredArgsConstructor
+@Transactional(readOnly = true)
+public class CategoryService {
+
+ private final CategoryRepository categoryRepository;
+
+ public List getCategoryList(Long storeId){
+
+ return categoryRepository.findAllByStoreIdOrderByOrder(storeId)
+ .stream()
+ .map(CategoryDto::new)
+ .collect(Collectors.toList());
+ }
+}
diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/category/web/CategoryController.java b/store-service/src/main/java/com/justpickup/storeservice/domain/category/web/CategoryController.java
new file mode 100644
index 0000000..6271ed5
--- /dev/null
+++ b/store-service/src/main/java/com/justpickup/storeservice/domain/category/web/CategoryController.java
@@ -0,0 +1,50 @@
+package com.justpickup.storeservice.domain.category.web;
+
+import com.justpickup.storeservice.domain.category.dto.CategoryDto;
+import com.justpickup.storeservice.domain.category.service.CategoryService;
+import com.justpickup.storeservice.global.dto.Result;
+import lombok.Data;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+@RestController
+@RequiredArgsConstructor
+@Slf4j
+public class CategoryController {
+
+ private final CategoryService categoryService;
+
+ @GetMapping("/category")
+ public ResponseEntity getCategoryList( ){
+ Long storeId = 1L;
+ List categoryList = categoryService.getCategoryList(storeId);
+
+ List categoryResponseList = categoryList.stream()
+ .map(CategoryResponse::new)
+ .collect(Collectors.toList());
+
+
+ return ResponseEntity.status(HttpStatus.OK)
+ .body(Result.createSuccessResult(categoryResponseList));
+ }
+
+
+ @Data
+ static class CategoryResponse{
+ private String name;
+ private Integer order;
+
+ public CategoryResponse (CategoryDto categoryDto){
+ this.name= categoryDto.getName();
+ this.order= categoryDto.getOrder();
+ }
+ }
+
+}
diff --git a/store-service/src/main/java/com/justpickup/storeservice/global/client/exception/FeignClientException.java b/store-service/src/main/java/com/justpickup/storeservice/global/client/exception/FeignClientException.java
new file mode 100644
index 0000000..921ba6f
--- /dev/null
+++ b/store-service/src/main/java/com/justpickup/storeservice/global/client/exception/FeignClientException.java
@@ -0,0 +1,12 @@
+package com.justpickup.storeservice.global.client.exception;
+
+
+import com.justpickup.storeservice.global.exception.CustomException;
+import org.springframework.http.HttpStatus;
+
+public class FeignClientException extends CustomException {
+
+ public FeignClientException(HttpStatus status, String message) {
+ super(status, message);
+ }
+}
diff --git a/store-service/src/main/java/com/justpickup/storeservice/global/client/exception/FeignClientExceptionErrorDecoder.java b/store-service/src/main/java/com/justpickup/storeservice/global/client/exception/FeignClientExceptionErrorDecoder.java
new file mode 100644
index 0000000..0284355
--- /dev/null
+++ b/store-service/src/main/java/com/justpickup/storeservice/global/client/exception/FeignClientExceptionErrorDecoder.java
@@ -0,0 +1,38 @@
+package com.justpickup.storeservice.global.client.exception;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.justpickup.storeservice.global.dto.Result;
+import feign.Response;
+import feign.codec.ErrorDecoder;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpStatus;
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+
+@Component
+@RequiredArgsConstructor
+@Slf4j
+public class FeignClientExceptionErrorDecoder implements ErrorDecoder {
+
+ private final ObjectMapper objectMapper;
+
+ @Override
+ public Exception decode(String methodKey, Response response) {
+ String message = null;
+ if (response.body() != null) {
+ try {
+ Result result = objectMapper.readValue(response.body().asInputStream(), Result.class);
+ message = result.getMessage();
+ } catch (IOException e) {
+ String catchErrorMessage = "Error Deserializing response body from failed feign request response.";
+ log.warn(methodKey + catchErrorMessage, e);
+
+ return new FeignClientException(HttpStatus.INTERNAL_SERVER_ERROR, "고객센터로 문의해주세요.");
+ }
+ }
+
+ return new FeignClientException(HttpStatus.INTERNAL_SERVER_ERROR, message);
+ }
+}
diff --git a/store-service/src/main/java/com/justpickup/storeservice/global/client/user/GetCustomerResponse.java b/store-service/src/main/java/com/justpickup/storeservice/global/client/user/GetCustomerResponse.java
new file mode 100644
index 0000000..b86995d
--- /dev/null
+++ b/store-service/src/main/java/com/justpickup/storeservice/global/client/user/GetCustomerResponse.java
@@ -0,0 +1,10 @@
+package com.justpickup.storeservice.global.client.user;
+
+import lombok.Data;
+
+@Data
+public class GetCustomerResponse {
+ private Long userId;
+ private String userName;
+ private String phoneNumber;
+}
diff --git a/store-service/src/main/java/com/justpickup/storeservice/global/client/user/UserClient.java b/store-service/src/main/java/com/justpickup/storeservice/global/client/user/UserClient.java
new file mode 100644
index 0000000..941b739
--- /dev/null
+++ b/store-service/src/main/java/com/justpickup/storeservice/global/client/user/UserClient.java
@@ -0,0 +1,13 @@
+package com.justpickup.storeservice.global.client.user;
+
+import com.justpickup.storeservice.global.dto.Result;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+
+@FeignClient(name = "USER-SERVICE", url = "127.0.0.1:8001/user-service")
+public interface UserClient {
+
+ @GetMapping("/customer/{userId}")
+ Result getUser(@PathVariable("userId") Long userId);
+}
diff --git a/store-service/src/main/java/com/justpickup/storeservice/global/config/FeignClientConfig.java b/store-service/src/main/java/com/justpickup/storeservice/global/config/FeignClientConfig.java
new file mode 100644
index 0000000..95b0886
--- /dev/null
+++ b/store-service/src/main/java/com/justpickup/storeservice/global/config/FeignClientConfig.java
@@ -0,0 +1,14 @@
+package com.justpickup.storeservice.global.config;
+
+import feign.Logger;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class FeignClientConfig {
+
+ @Bean
+ public Logger.Level feignLoggerLevel() {
+ return Logger.Level.FULL;
+ }
+}
diff --git a/store-service/src/main/java/com/justpickup/storeservice/global/config/QueryDslConfig.java b/store-service/src/main/java/com/justpickup/storeservice/global/config/QueryDslConfig.java
new file mode 100644
index 0000000..648d20a
--- /dev/null
+++ b/store-service/src/main/java/com/justpickup/storeservice/global/config/QueryDslConfig.java
@@ -0,0 +1,22 @@
+package com.justpickup.storeservice.global.config;
+
+import com.querydsl.jpa.impl.JPAQueryFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+@Configuration
+@EnableJpaAuditing
+public class QueryDslConfig {
+
+ @PersistenceContext
+ private EntityManager entityManager;
+
+ @Bean
+ public JPAQueryFactory jpaQueryFactory() {
+ return new JPAQueryFactory(this.entityManager);
+ }
+}
diff --git a/store-service/src/main/resources/application.yml b/store-service/src/main/resources/application.yml
index 0636d57..9f0efbc 100644
--- a/store-service/src/main/resources/application.yml
+++ b/store-service/src/main/resources/application.yml
@@ -7,7 +7,7 @@ spring:
jpa:
hibernate:
- ddl-auto: create-drop
+ ddl-auto: validate
properties:
hibernate:
format_sql: true