diff --git a/common/src/main/java/com/ktds/hi/common/dto/BaseRequest.java b/common/src/main/java/com/ktds/hi/common/dto/BaseRequest.java index 6d70863..039c276 100644 --- a/common/src/main/java/com/ktds/hi/common/dto/BaseRequest.java +++ b/common/src/main/java/com/ktds/hi/common/dto/BaseRequest.java @@ -1,4 +1,19 @@ -package com.ktds.hi.common.dto; - -public class BaseRequest { -} +package com.ktds.hi.common.dto; + +import lombok.Getter; +import lombok.Setter; + +/** + * 기본 요청 DTO + */ +@Getter +@Setter +public abstract class BaseRequest { + + private String requestId; + private Long timestamp; + + public BaseRequest() { + this.timestamp = System.currentTimeMillis(); + } +} diff --git a/common/src/main/java/com/ktds/hi/common/dto/BaseResponse.java b/common/src/main/java/com/ktds/hi/common/dto/BaseResponse.java index 62431e7..965e673 100644 --- a/common/src/main/java/com/ktds/hi/common/dto/BaseResponse.java +++ b/common/src/main/java/com/ktds/hi/common/dto/BaseResponse.java @@ -1,4 +1,26 @@ -package com.ktds.hi.common.dto; - -public class BaseResponse { -} +package com.ktds.hi.common.dto; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +/** + * 기본 응답 DTO + */ +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +public abstract class BaseResponse { + + private Boolean success; + private String message; + private Long timestamp; + + public BaseResponse(Boolean success, String message) { + this.success = success; + this.message = message; + this.timestamp = System.currentTimeMillis(); + } +} diff --git a/common/src/main/java/com/ktds/hi/common/dto/PageRequest.java b/common/src/main/java/com/ktds/hi/common/dto/PageRequest.java index ac14f8c..e54810f 100644 --- a/common/src/main/java/com/ktds/hi/common/dto/PageRequest.java +++ b/common/src/main/java/com/ktds/hi/common/dto/PageRequest.java @@ -1,4 +1,25 @@ -package com.ktds.hi.common.dto; - -public class PageRequest { -} +package com.ktds.hi.common.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +/** + * 페이징 요청 DTO + */ +@Getter +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PageRequest { + + @Builder.Default + private Integer page = 0; + + @Builder.Default + private Integer size = 10; + + private String sort; + private String direction; +} \ No newline at end of file diff --git a/common/src/main/java/com/ktds/hi/common/dto/PageResponse.java b/common/src/main/java/com/ktds/hi/common/dto/PageResponse.java index b5fc331..3bd45b0 100644 --- a/common/src/main/java/com/ktds/hi/common/dto/PageResponse.java +++ b/common/src/main/java/com/ktds/hi/common/dto/PageResponse.java @@ -1,4 +1,27 @@ -package com.ktds.hi.common.dto; - -public class PageResponse { -} +package com.ktds.hi.common.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 페이징 응답 DTO + */ +@Getter +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PageResponse { + + private List content; + private Integer page; + private Integer size; + private Long totalElements; + private Integer totalPages; + private Boolean first; + private Boolean last; + private Boolean empty; +} \ No newline at end of file diff --git a/common/src/main/java/com/ktds/hi/common/response/ApiResponse.java b/common/src/main/java/com/ktds/hi/common/response/ApiResponse.java index 905e386..d4f1bf9 100644 --- a/common/src/main/java/com/ktds/hi/common/response/ApiResponse.java +++ b/common/src/main/java/com/ktds/hi/common/response/ApiResponse.java @@ -1,4 +1,60 @@ -package com.ktds.hi.common.response; - -public class ApiResponse { -} +package com.ktds.hi.common.response; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +/** + * API 응답 래퍼 + */ +@Getter +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ApiResponse { + + private Boolean success; + private String code; + private String message; + private T data; + private Long timestamp; + + public static ApiResponse success(T data) { + return ApiResponse.builder() + .success(true) + .code(ResponseCode.SUCCESS.getCode()) + .message(ResponseCode.SUCCESS.getMessage()) + .data(data) + .timestamp(System.currentTimeMillis()) + .build(); + } + + public static ApiResponse success(String message, T data) { + return ApiResponse.builder() + .success(true) + .code(ResponseCode.SUCCESS.getCode()) + .message(message) + .data(data) + .timestamp(System.currentTimeMillis()) + .build(); + } + + public static ApiResponse error(ResponseCode responseCode) { + return ApiResponse.builder() + .success(false) + .code(responseCode.getCode()) + .message(responseCode.getMessage()) + .timestamp(System.currentTimeMillis()) + .build(); + } + + public static ApiResponse error(String code, String message) { + return ApiResponse.builder() + .success(false) + .code(code) + .message(message) + .timestamp(System.currentTimeMillis()) + .build(); + } +} \ No newline at end of file diff --git a/common/src/main/java/com/ktds/hi/common/response/ErrorResponse.java b/common/src/main/java/com/ktds/hi/common/response/ErrorResponse.java index 28ad0e6..a3205ca 100644 --- a/common/src/main/java/com/ktds/hi/common/response/ErrorResponse.java +++ b/common/src/main/java/com/ktds/hi/common/response/ErrorResponse.java @@ -1,4 +1,52 @@ -package com.ktds.hi.common.response; - -public class ErrorResponse { -} +package com.ktds.hi.common.response; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 에러 응답 DTO + */ +@Getter +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ErrorResponse { + + private String code; + private String message; + private String path; + private Long timestamp; + private List validationErrors; + + @Getter + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class ValidationError { + private String field; + private Object rejectedValue; + private String message; + } + + public static ErrorResponse of(ResponseCode responseCode, String path) { + return ErrorResponse.builder() + .code(responseCode.getCode()) + .message(responseCode.getMessage()) + .path(path) + .timestamp(System.currentTimeMillis()) + .build(); + } + + public static ErrorResponse of(String code, String message, String path) { + return ErrorResponse.builder() + .code(code) + .message(message) + .path(path) + .timestamp(System.currentTimeMillis()) + .build(); + } +} \ No newline at end of file diff --git a/common/src/main/java/com/ktds/hi/common/response/ResponseCode.java b/common/src/main/java/com/ktds/hi/common/response/ResponseCode.java index ee629e3..9319219 100644 --- a/common/src/main/java/com/ktds/hi/common/response/ResponseCode.java +++ b/common/src/main/java/com/ktds/hi/common/response/ResponseCode.java @@ -1,4 +1,30 @@ -package com.ktds.hi.common.response; - -public class ResponseCode { -} +package com.ktds.hi.common.response; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 응답 코드 열거형 + */ +@Getter +@AllArgsConstructor +public enum ResponseCode { + + // 성공 + SUCCESS("200", "성공"), + + // 클라이언트 에러 + BAD_REQUEST("400", "잘못된 요청"), + UNAUTHORIZED("401", "인증 실패"), + FORBIDDEN("403", "접근 권한 없음"), + NOT_FOUND("404", "리소스를 찾을 수 없음"), + CONFLICT("409", "리소스 충돌"), + VALIDATION_ERROR("422", "입력값 검증 실패"), + + // 서버 에러 + INTERNAL_SERVER_ERROR("500", "내부 서버 오류"), + SERVICE_UNAVAILABLE("503", "서비스 이용 불가"); + + private final String code; + private final String message; +} \ No newline at end of file diff --git a/common/src/main/java/com/ktds/hi/common/security/JwtAuthenticationFilter.java b/common/src/main/java/com/ktds/hi/common/security/JwtAuthenticationFilter.java index a6990e5..890a898 100644 --- a/common/src/main/java/com/ktds/hi/common/security/JwtAuthenticationFilter.java +++ b/common/src/main/java/com/ktds/hi/common/security/JwtAuthenticationFilter.java @@ -2,7 +2,6 @@ package com.ktds.hi.common.security; import com.fasterxml.jackson.databind.ObjectMapper; import com.ktds.hi.common.constants.SecurityConstants; -import com.ktds.hi.common.response.ApiResponse; import com.ktds.hi.common.response.ResponseCode; import jakarta.servlet.FilterChain; import jakarta.servlet.ServletException; diff --git a/store/src/main/java/com/ktds/hi/store/domain/Coordinates.java b/store/src/main/java/com/ktds/hi/store/domain/Coordinates.java index 6db3424..000ca65 100644 --- a/store/src/main/java/com/ktds/hi/store/domain/Coordinates.java +++ b/store/src/main/java/com/ktds/hi/store/domain/Coordinates.java @@ -1,4 +1,19 @@ -package com.ktds.hi.store.domain; - -public class Coordinates { -} +package com.ktds.hi.store.biz.domain; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +/** + * 좌표 값 객체 + */ +@Getter +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class Coordinates { + + private Double latitude; + private Double longitude; +} \ No newline at end of file diff --git a/store/src/main/java/com/ktds/hi/store/domain/Menu.java b/store/src/main/java/com/ktds/hi/store/domain/Menu.java index 5177d00..a3ac246 100644 --- a/store/src/main/java/com/ktds/hi/store/domain/Menu.java +++ b/store/src/main/java/com/ktds/hi/store/domain/Menu.java @@ -1,4 +1,27 @@ -package com.ktds.hi.store.domain; - -public class Menu { -} +package com.ktds.hi.store.biz.domain; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +/** + * 메뉴 도메인 엔티티 + */ +@Getter +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class Menu { + + private Long id; + private Long storeId; + private String name; + private String description; + private BigDecimal price; + private String category; + private String imageUrl; + private Boolean isAvailable; +} diff --git a/store/src/main/java/com/ktds/hi/store/domain/Store.java b/store/src/main/java/com/ktds/hi/store/domain/Store.java index f8317f6..68eb7b7 100644 --- a/store/src/main/java/com/ktds/hi/store/domain/Store.java +++ b/store/src/main/java/com/ktds/hi/store/domain/Store.java @@ -1,4 +1,38 @@ -package com.ktds.hi.store.domain; - -public class Store { -} +package com.ktds.hi.store.biz.domain; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.util.List; + +/** + * 매장 도메인 엔티티 + */ +@Getter +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class Store { + + private Long id; + private Long ownerId; + private String name; + private String description; + private String address; + private String phoneNumber; + private String category; + private Double latitude; + private Double longitude; + private LocalTime openTime; + private LocalTime closeTime; + private String imageUrl; + private Boolean isActive; + private LocalDateTime createdAt; + private LocalDateTime updatedAt; + private List tags; + private List menus; +} \ No newline at end of file diff --git a/store/src/main/java/com/ktds/hi/store/domain/StoreSearchCriteria.java b/store/src/main/java/com/ktds/hi/store/domain/StoreSearchCriteria.java index efb834a..1230435 100644 --- a/store/src/main/java/com/ktds/hi/store/domain/StoreSearchCriteria.java +++ b/store/src/main/java/com/ktds/hi/store/domain/StoreSearchCriteria.java @@ -1,4 +1,25 @@ -package com.ktds.hi.store.domain; - -public class StoreSearchCriteria { -} +package com.ktds.hi.store.biz.domain; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +/** + * 매장 검색 조건 + */ +@Getter +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class StoreSearchCriteria { + + private String keyword; + private String category; + private String tags; + private Double latitude; + private Double longitude; + private Integer radius; + private Integer page; + private Integer size; +} \ No newline at end of file diff --git a/store/src/main/java/com/ktds/hi/store/domain/StoreTag.java b/store/src/main/java/com/ktds/hi/store/domain/StoreTag.java index a5aa1eb..2a4ff66 100644 --- a/store/src/main/java/com/ktds/hi/store/domain/StoreTag.java +++ b/store/src/main/java/com/ktds/hi/store/domain/StoreTag.java @@ -1,4 +1,20 @@ -package com.ktds.hi.store.domain; - -public class StoreTag { -} +package com.ktds.hi.store.biz.domain; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +/** + * 매장 태그 도메인 엔티티 + */ +@Getter +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class StoreTag { + + private Long id; + private Long storeId; + private String tagName; +} \ No newline at end of file