Fix : 레디스 설정 deprecated로 변경(spring boot 3.2부터 변경됨)
This commit is contained in:
parent
65d8b91140
commit
0f92015b84
@ -20,10 +20,11 @@ spring:
|
|||||||
format_sql: true
|
format_sql: true
|
||||||
dialect: org.hibernate.dialect.PostgreSQLDialect
|
dialect: org.hibernate.dialect.PostgreSQLDialect
|
||||||
|
|
||||||
redis:
|
data:
|
||||||
host: ${REDIS_HOST:localhost}
|
redis:
|
||||||
port: ${REDIS_PORT:6379}
|
host: ${REDIS_HOST:localhost}
|
||||||
password: ${REDIS_PASSWORD:}
|
port: ${REDIS_PORT:6379}
|
||||||
|
password: ${REDIS_PASSWORD:}
|
||||||
|
|
||||||
ai-api:
|
ai-api:
|
||||||
openai:
|
openai:
|
||||||
|
|||||||
@ -1,4 +1,19 @@
|
|||||||
package com.ktds.hi.common.dto;
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,26 @@
|
|||||||
package com.ktds.hi.common.dto;
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,25 @@
|
|||||||
package com.ktds.hi.common.dto;
|
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 {
|
public class PageRequest {
|
||||||
|
|
||||||
|
@Builder.Default
|
||||||
|
private Integer page = 0;
|
||||||
|
|
||||||
|
@Builder.Default
|
||||||
|
private Integer size = 10;
|
||||||
|
|
||||||
|
private String sort;
|
||||||
|
private String direction;
|
||||||
}
|
}
|
||||||
@ -1,4 +1,27 @@
|
|||||||
package com.ktds.hi.common.dto;
|
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<T> {
|
||||||
|
|
||||||
|
private List<T> content;
|
||||||
|
private Integer page;
|
||||||
|
private Integer size;
|
||||||
|
private Long totalElements;
|
||||||
|
private Integer totalPages;
|
||||||
|
private Boolean first;
|
||||||
|
private Boolean last;
|
||||||
|
private Boolean empty;
|
||||||
}
|
}
|
||||||
@ -1,4 +1,60 @@
|
|||||||
package com.ktds.hi.common.response;
|
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<T> {
|
||||||
|
|
||||||
|
private Boolean success;
|
||||||
|
private String code;
|
||||||
|
private String message;
|
||||||
|
private T data;
|
||||||
|
private Long timestamp;
|
||||||
|
|
||||||
|
public static <T> ApiResponse<T> success(T data) {
|
||||||
|
return ApiResponse.<T>builder()
|
||||||
|
.success(true)
|
||||||
|
.code(ResponseCode.SUCCESS.getCode())
|
||||||
|
.message(ResponseCode.SUCCESS.getMessage())
|
||||||
|
.data(data)
|
||||||
|
.timestamp(System.currentTimeMillis())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <T> ApiResponse<T> success(String message, T data) {
|
||||||
|
return ApiResponse.<T>builder()
|
||||||
|
.success(true)
|
||||||
|
.code(ResponseCode.SUCCESS.getCode())
|
||||||
|
.message(message)
|
||||||
|
.data(data)
|
||||||
|
.timestamp(System.currentTimeMillis())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <T> ApiResponse<T> error(ResponseCode responseCode) {
|
||||||
|
return ApiResponse.<T>builder()
|
||||||
|
.success(false)
|
||||||
|
.code(responseCode.getCode())
|
||||||
|
.message(responseCode.getMessage())
|
||||||
|
.timestamp(System.currentTimeMillis())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <T> ApiResponse<T> error(String code, String message) {
|
||||||
|
return ApiResponse.<T>builder()
|
||||||
|
.success(false)
|
||||||
|
.code(code)
|
||||||
|
.message(message)
|
||||||
|
.timestamp(System.currentTimeMillis())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -1,4 +1,52 @@
|
|||||||
package com.ktds.hi.common.response;
|
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 {
|
public class ErrorResponse {
|
||||||
|
|
||||||
|
private String code;
|
||||||
|
private String message;
|
||||||
|
private String path;
|
||||||
|
private Long timestamp;
|
||||||
|
private List<ValidationError> 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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -1,4 +1,30 @@
|
|||||||
package com.ktds.hi.common.response;
|
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;
|
||||||
}
|
}
|
||||||
@ -2,7 +2,6 @@ package com.ktds.hi.common.security;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.ktds.hi.common.constants.SecurityConstants;
|
import com.ktds.hi.common.constants.SecurityConstants;
|
||||||
import com.ktds.hi.common.response.ApiResponse;
|
|
||||||
import com.ktds.hi.common.response.ResponseCode;
|
import com.ktds.hi.common.response.ResponseCode;
|
||||||
import jakarta.servlet.FilterChain;
|
import jakarta.servlet.FilterChain;
|
||||||
import jakarta.servlet.ServletException;
|
import jakarta.servlet.ServletException;
|
||||||
|
|||||||
@ -20,17 +20,18 @@ spring:
|
|||||||
format_sql: true
|
format_sql: true
|
||||||
dialect: org.hibernate.dialect.PostgreSQLDialect
|
dialect: org.hibernate.dialect.PostgreSQLDialect
|
||||||
|
|
||||||
redis:
|
data:
|
||||||
host: ${REDIS_HOST:localhost}
|
redis:
|
||||||
port: ${REDIS_PORT:6379}
|
host: ${REDIS_HOST:localhost}
|
||||||
password: ${REDIS_PASSWORD:}
|
port: ${REDIS_PORT:6379}
|
||||||
timeout: 2000ms
|
password: ${REDIS_PASSWORD:}
|
||||||
lettuce:
|
timeout: 2000ms
|
||||||
pool:
|
lettuce:
|
||||||
max-active: 8
|
pool:
|
||||||
max-wait: -1ms
|
max-active: 8
|
||||||
max-idle: 8
|
max-wait: -1ms
|
||||||
min-idle: 0
|
max-idle: 8
|
||||||
|
min-idle: 0
|
||||||
|
|
||||||
jwt:
|
jwt:
|
||||||
secret: ${JWT_SECRET:hiorder-secret-key-for-jwt-token-generation-must-be-long-enough}
|
secret: ${JWT_SECRET:hiorder-secret-key-for-jwt-token-generation-must-be-long-enough}
|
||||||
|
|||||||
@ -20,10 +20,11 @@ spring:
|
|||||||
format_sql: true
|
format_sql: true
|
||||||
dialect: org.hibernate.dialect.PostgreSQLDialect
|
dialect: org.hibernate.dialect.PostgreSQLDialect
|
||||||
|
|
||||||
redis:
|
data:
|
||||||
host: ${REDIS_HOST:localhost}
|
redis:
|
||||||
port: ${REDIS_PORT:6379}
|
host: ${REDIS_HOST:localhost}
|
||||||
password: ${REDIS_PASSWORD:}
|
port: ${REDIS_PORT:6379}
|
||||||
|
password: ${REDIS_PASSWORD:}
|
||||||
|
|
||||||
recommendation:
|
recommendation:
|
||||||
cache-ttl: 3600 # 1시간
|
cache-ttl: 3600 # 1시간
|
||||||
|
|||||||
@ -19,11 +19,11 @@ spring:
|
|||||||
hibernate:
|
hibernate:
|
||||||
format_sql: true
|
format_sql: true
|
||||||
dialect: org.hibernate.dialect.PostgreSQLDialect
|
dialect: org.hibernate.dialect.PostgreSQLDialect
|
||||||
|
data:
|
||||||
redis:
|
redis:
|
||||||
host: ${REDIS_HOST:localhost}
|
host: ${REDIS_HOST:localhost}
|
||||||
port: ${REDIS_PORT:6379}
|
port: ${REDIS_PORT:6379}
|
||||||
password: ${REDIS_PASSWORD:}
|
password: ${REDIS_PASSWORD:}
|
||||||
|
|
||||||
servlet:
|
servlet:
|
||||||
multipart:
|
multipart:
|
||||||
|
|||||||
@ -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 {
|
public class Coordinates {
|
||||||
|
|
||||||
|
private Double latitude;
|
||||||
|
private Double longitude;
|
||||||
}
|
}
|
||||||
@ -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 {
|
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;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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 {
|
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<String> tags;
|
||||||
|
private List<Menu> menus;
|
||||||
}
|
}
|
||||||
@ -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 {
|
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;
|
||||||
}
|
}
|
||||||
@ -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 {
|
public class StoreTag {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
private Long storeId;
|
||||||
|
private String tagName;
|
||||||
}
|
}
|
||||||
@ -20,10 +20,11 @@ spring:
|
|||||||
format_sql: true
|
format_sql: true
|
||||||
dialect: org.hibernate.dialect.PostgreSQLDialect
|
dialect: org.hibernate.dialect.PostgreSQLDialect
|
||||||
|
|
||||||
redis:
|
data:
|
||||||
host: ${REDIS_HOST:localhost}
|
redis:
|
||||||
port: ${REDIS_PORT:6379}
|
host: ${REDIS_HOST:localhost}
|
||||||
password: ${REDIS_PASSWORD:}
|
port: ${REDIS_PORT:6379}
|
||||||
|
password: ${REDIS_PASSWORD:}
|
||||||
|
|
||||||
external-api:
|
external-api:
|
||||||
naver:
|
naver:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user