From 0f92015b84e948efb753b2a0105f2a58dbc4f1dc Mon Sep 17 00:00:00 2001 From: lsh9672 Date: Wed, 11 Jun 2025 17:43:38 +0900 Subject: [PATCH] =?UTF-8?q?Fix=20:=20=EB=A0=88=EB=94=94=EC=8A=A4=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95=20deprecated=EB=A1=9C=20=EB=B3=80=EA=B2=BD(s?= =?UTF-8?q?pring=20boot=203.2=EB=B6=80=ED=84=B0=20=EB=B3=80=EA=B2=BD?= =?UTF-8?q?=EB=90=A8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- analytics/src/main/resources/application.yml | 11 ++-- .../com/ktds/hi/common/dto/BaseRequest.java | 17 +++++- .../com/ktds/hi/common/dto/BaseResponse.java | 24 +++++++- .../com/ktds/hi/common/dto/PageRequest.java | 23 ++++++- .../com/ktds/hi/common/dto/PageResponse.java | 27 ++++++++- .../ktds/hi/common/response/ApiResponse.java | 60 ++++++++++++++++++- .../hi/common/response/ErrorResponse.java | 50 +++++++++++++++- .../ktds/hi/common/response/ResponseCode.java | 30 +++++++++- .../security/JwtAuthenticationFilter.java | 1 - member/src/main/resources/application.yml | 25 ++++---- recommend/src/main/resources/application.yml | 11 ++-- review/src/main/resources/application.yml | 10 ++-- .../com/ktds/hi/store/domain/Coordinates.java | 19 +++++- .../java/com/ktds/hi/store/domain/Menu.java | 25 +++++++- .../java/com/ktds/hi/store/domain/Store.java | 38 +++++++++++- .../hi/store/domain/StoreSearchCriteria.java | 25 +++++++- .../com/ktds/hi/store/domain/StoreTag.java | 20 ++++++- store/src/main/resources/application.yml | 9 +-- 18 files changed, 374 insertions(+), 51 deletions(-) diff --git a/analytics/src/main/resources/application.yml b/analytics/src/main/resources/application.yml index 3207091..d867388 100644 --- a/analytics/src/main/resources/application.yml +++ b/analytics/src/main/resources/application.yml @@ -19,11 +19,12 @@ spring: hibernate: format_sql: true dialect: org.hibernate.dialect.PostgreSQLDialect - - redis: - host: ${REDIS_HOST:localhost} - port: ${REDIS_PORT:6379} - password: ${REDIS_PASSWORD:} + + data: + redis: + host: ${REDIS_HOST:localhost} + port: ${REDIS_PORT:6379} + password: ${REDIS_PASSWORD:} ai-api: openai: 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..d2272c5 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 { +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..f8d7b33 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 { +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..baf53c0 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; +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..1dc79d9 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 { -} +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..ebe2b17 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 { -} +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..c7e06c1 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; +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..8842192 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 { -} +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/member/src/main/resources/application.yml b/member/src/main/resources/application.yml index ebc4e5d..9e0c649 100644 --- a/member/src/main/resources/application.yml +++ b/member/src/main/resources/application.yml @@ -19,18 +19,19 @@ spring: hibernate: format_sql: true dialect: org.hibernate.dialect.PostgreSQLDialect - - redis: - host: ${REDIS_HOST:localhost} - port: ${REDIS_PORT:6379} - password: ${REDIS_PASSWORD:} - timeout: 2000ms - lettuce: - pool: - max-active: 8 - max-wait: -1ms - max-idle: 8 - min-idle: 0 + + data: + redis: + host: ${REDIS_HOST:localhost} + port: ${REDIS_PORT:6379} + password: ${REDIS_PASSWORD:} + timeout: 2000ms + lettuce: + pool: + max-active: 8 + max-wait: -1ms + max-idle: 8 + min-idle: 0 jwt: secret: ${JWT_SECRET:hiorder-secret-key-for-jwt-token-generation-must-be-long-enough} diff --git a/recommend/src/main/resources/application.yml b/recommend/src/main/resources/application.yml index 40c79a3..1ef7b17 100644 --- a/recommend/src/main/resources/application.yml +++ b/recommend/src/main/resources/application.yml @@ -19,11 +19,12 @@ spring: hibernate: format_sql: true dialect: org.hibernate.dialect.PostgreSQLDialect - - redis: - host: ${REDIS_HOST:localhost} - port: ${REDIS_PORT:6379} - password: ${REDIS_PASSWORD:} + + data: + redis: + host: ${REDIS_HOST:localhost} + port: ${REDIS_PORT:6379} + password: ${REDIS_PASSWORD:} recommendation: cache-ttl: 3600 # 1시간 diff --git a/review/src/main/resources/application.yml b/review/src/main/resources/application.yml index 855d35b..cd0e998 100644 --- a/review/src/main/resources/application.yml +++ b/review/src/main/resources/application.yml @@ -19,11 +19,11 @@ spring: hibernate: format_sql: true dialect: org.hibernate.dialect.PostgreSQLDialect - - redis: - host: ${REDIS_HOST:localhost} - port: ${REDIS_PORT:6379} - password: ${REDIS_PASSWORD:} + data: + redis: + host: ${REDIS_HOST:localhost} + port: ${REDIS_PORT:6379} + password: ${REDIS_PASSWORD:} servlet: multipart: 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..5ae7593 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; +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..263570c 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; +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..babdf8b 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; +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..7144049 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; +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..f4f7d46 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; +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 diff --git a/store/src/main/resources/application.yml b/store/src/main/resources/application.yml index 0651ce6..086c764 100644 --- a/store/src/main/resources/application.yml +++ b/store/src/main/resources/application.yml @@ -20,10 +20,11 @@ spring: format_sql: true dialect: org.hibernate.dialect.PostgreSQLDialect - redis: - host: ${REDIS_HOST:localhost} - port: ${REDIS_PORT:6379} - password: ${REDIS_PASSWORD:} + data: + redis: + host: ${REDIS_HOST:localhost} + port: ${REDIS_PORT:6379} + password: ${REDIS_PASSWORD:} external-api: naver: