This commit is contained in:
youbeen 2025-06-12 09:27:09 +09:00
parent 0f92015b84
commit 113ef48f97
12 changed files with 359 additions and 359 deletions

View File

@ -1,19 +1,19 @@
package com.ktds.hi.common.dto; package com.ktds.hi.common.dto;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
/** /**
* 기본 요청 DTO * 기본 요청 DTO
*/ */
@Getter @Getter
@Setter @Setter
public abstract class BaseRequest { public abstract class BaseRequest {
private String requestId; private String requestId;
private Long timestamp; private Long timestamp;
public BaseRequest() { public BaseRequest() {
this.timestamp = System.currentTimeMillis(); this.timestamp = System.currentTimeMillis();
} }
} }

View File

@ -1,26 +1,26 @@
package com.ktds.hi.common.dto; package com.ktds.hi.common.dto;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.Setter; import lombok.Setter;
/** /**
* 기본 응답 DTO * 기본 응답 DTO
*/ */
@Getter @Getter
@Setter @Setter
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public abstract class BaseResponse { public abstract class BaseResponse {
private Boolean success; private Boolean success;
private String message; private String message;
private Long timestamp; private Long timestamp;
public BaseResponse(Boolean success, String message) { public BaseResponse(Boolean success, String message) {
this.success = success; this.success = success;
this.message = message; this.message = message;
this.timestamp = System.currentTimeMillis(); this.timestamp = System.currentTimeMillis();
} }
} }

View File

@ -1,25 +1,25 @@
package com.ktds.hi.common.dto; package com.ktds.hi.common.dto;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
/** /**
* 페이징 요청 DTO * 페이징 요청 DTO
*/ */
@Getter @Getter
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class PageRequest { public class PageRequest {
@Builder.Default @Builder.Default
private Integer page = 0; private Integer page = 0;
@Builder.Default @Builder.Default
private Integer size = 10; private Integer size = 10;
private String sort; private String sort;
private String direction; private String direction;
} }

View File

@ -1,27 +1,27 @@
package com.ktds.hi.common.dto; package com.ktds.hi.common.dto;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.util.List; import java.util.List;
/** /**
* 페이징 응답 DTO * 페이징 응답 DTO
*/ */
@Getter @Getter
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class PageResponse<T> { public class PageResponse<T> {
private List<T> content; private List<T> content;
private Integer page; private Integer page;
private Integer size; private Integer size;
private Long totalElements; private Long totalElements;
private Integer totalPages; private Integer totalPages;
private Boolean first; private Boolean first;
private Boolean last; private Boolean last;
private Boolean empty; private Boolean empty;
} }

View File

@ -1,60 +1,60 @@
package com.ktds.hi.common.response; package com.ktds.hi.common.response;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
/** /**
* API 응답 래퍼 * API 응답 래퍼
*/ */
@Getter @Getter
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class ApiResponse<T> { public class ApiResponse<T> {
private Boolean success; private Boolean success;
private String code; private String code;
private String message; private String message;
private T data; private T data;
private Long timestamp; private Long timestamp;
public static <T> ApiResponse<T> success(T data) { public static <T> ApiResponse<T> success(T data) {
return ApiResponse.<T>builder() return ApiResponse.<T>builder()
.success(true) .success(true)
.code(ResponseCode.SUCCESS.getCode()) .code(ResponseCode.SUCCESS.getCode())
.message(ResponseCode.SUCCESS.getMessage()) .message(ResponseCode.SUCCESS.getMessage())
.data(data) .data(data)
.timestamp(System.currentTimeMillis()) .timestamp(System.currentTimeMillis())
.build(); .build();
} }
public static <T> ApiResponse<T> success(String message, T data) { public static <T> ApiResponse<T> success(String message, T data) {
return ApiResponse.<T>builder() return ApiResponse.<T>builder()
.success(true) .success(true)
.code(ResponseCode.SUCCESS.getCode()) .code(ResponseCode.SUCCESS.getCode())
.message(message) .message(message)
.data(data) .data(data)
.timestamp(System.currentTimeMillis()) .timestamp(System.currentTimeMillis())
.build(); .build();
} }
public static <T> ApiResponse<T> error(ResponseCode responseCode) { public static <T> ApiResponse<T> error(ResponseCode responseCode) {
return ApiResponse.<T>builder() return ApiResponse.<T>builder()
.success(false) .success(false)
.code(responseCode.getCode()) .code(responseCode.getCode())
.message(responseCode.getMessage()) .message(responseCode.getMessage())
.timestamp(System.currentTimeMillis()) .timestamp(System.currentTimeMillis())
.build(); .build();
} }
public static <T> ApiResponse<T> error(String code, String message) { public static <T> ApiResponse<T> error(String code, String message) {
return ApiResponse.<T>builder() return ApiResponse.<T>builder()
.success(false) .success(false)
.code(code) .code(code)
.message(message) .message(message)
.timestamp(System.currentTimeMillis()) .timestamp(System.currentTimeMillis())
.build(); .build();
} }
} }

View File

@ -1,52 +1,52 @@
package com.ktds.hi.common.response; package com.ktds.hi.common.response;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.util.List; import java.util.List;
/** /**
* 에러 응답 DTO * 에러 응답 DTO
*/ */
@Getter @Getter
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class ErrorResponse { public class ErrorResponse {
private String code; private String code;
private String message; private String message;
private String path; private String path;
private Long timestamp; private Long timestamp;
private List<ValidationError> validationErrors; private List<ValidationError> validationErrors;
@Getter @Getter
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public static class ValidationError { public static class ValidationError {
private String field; private String field;
private Object rejectedValue; private Object rejectedValue;
private String message; private String message;
} }
public static ErrorResponse of(ResponseCode responseCode, String path) { public static ErrorResponse of(ResponseCode responseCode, String path) {
return ErrorResponse.builder() return ErrorResponse.builder()
.code(responseCode.getCode()) .code(responseCode.getCode())
.message(responseCode.getMessage()) .message(responseCode.getMessage())
.path(path) .path(path)
.timestamp(System.currentTimeMillis()) .timestamp(System.currentTimeMillis())
.build(); .build();
} }
public static ErrorResponse of(String code, String message, String path) { public static ErrorResponse of(String code, String message, String path) {
return ErrorResponse.builder() return ErrorResponse.builder()
.code(code) .code(code)
.message(message) .message(message)
.path(path) .path(path)
.timestamp(System.currentTimeMillis()) .timestamp(System.currentTimeMillis())
.build(); .build();
} }
} }

View File

@ -1,30 +1,30 @@
package com.ktds.hi.common.response; package com.ktds.hi.common.response;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
/** /**
* 응답 코드 열거형 * 응답 코드 열거형
*/ */
@Getter @Getter
@AllArgsConstructor @AllArgsConstructor
public enum ResponseCode { public enum ResponseCode {
// 성공 // 성공
SUCCESS("200", "성공"), SUCCESS("200", "성공"),
// 클라이언트 에러 // 클라이언트 에러
BAD_REQUEST("400", "잘못된 요청"), BAD_REQUEST("400", "잘못된 요청"),
UNAUTHORIZED("401", "인증 실패"), UNAUTHORIZED("401", "인증 실패"),
FORBIDDEN("403", "접근 권한 없음"), FORBIDDEN("403", "접근 권한 없음"),
NOT_FOUND("404", "리소스를 찾을 수 없음"), NOT_FOUND("404", "리소스를 찾을 수 없음"),
CONFLICT("409", "리소스 충돌"), CONFLICT("409", "리소스 충돌"),
VALIDATION_ERROR("422", "입력값 검증 실패"), VALIDATION_ERROR("422", "입력값 검증 실패"),
// 서버 에러 // 서버 에러
INTERNAL_SERVER_ERROR("500", "내부 서버 오류"), INTERNAL_SERVER_ERROR("500", "내부 서버 오류"),
SERVICE_UNAVAILABLE("503", "서비스 이용 불가"); SERVICE_UNAVAILABLE("503", "서비스 이용 불가");
private final String code; private final String code;
private final String message; private final String message;
} }

View File

@ -1,19 +1,19 @@
package com.ktds.hi.store.biz.domain; package com.ktds.hi.store.biz.domain;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
/** /**
* 좌표 객체 * 좌표 객체
*/ */
@Getter @Getter
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class Coordinates { public class Coordinates {
private Double latitude; private Double latitude;
private Double longitude; private Double longitude;
} }

View File

@ -1,27 +1,27 @@
package com.ktds.hi.store.biz.domain; package com.ktds.hi.store.biz.domain;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.math.BigDecimal; import java.math.BigDecimal;
/** /**
* 메뉴 도메인 엔티티 * 메뉴 도메인 엔티티
*/ */
@Getter @Getter
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class Menu { public class Menu {
private Long id; private Long id;
private Long storeId; private Long storeId;
private String name; private String name;
private String description; private String description;
private BigDecimal price; private BigDecimal price;
private String category; private String category;
private String imageUrl; private String imageUrl;
private Boolean isAvailable; private Boolean isAvailable;
} }

View File

@ -1,38 +1,38 @@
package com.ktds.hi.store.biz.domain; package com.ktds.hi.store.biz.domain;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
import java.util.List; import java.util.List;
/** /**
* 매장 도메인 엔티티 * 매장 도메인 엔티티
*/ */
@Getter @Getter
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class Store { public class Store {
private Long id; private Long id;
private Long ownerId; private Long ownerId;
private String name; private String name;
private String description; private String description;
private String address; private String address;
private String phoneNumber; private String phoneNumber;
private String category; private String category;
private Double latitude; private Double latitude;
private Double longitude; private Double longitude;
private LocalTime openTime; private LocalTime openTime;
private LocalTime closeTime; private LocalTime closeTime;
private String imageUrl; private String imageUrl;
private Boolean isActive; private Boolean isActive;
private LocalDateTime createdAt; private LocalDateTime createdAt;
private LocalDateTime updatedAt; private LocalDateTime updatedAt;
private List<String> tags; private List<String> tags;
private List<Menu> menus; private List<Menu> menus;
} }

View File

@ -1,25 +1,25 @@
package com.ktds.hi.store.biz.domain; package com.ktds.hi.store.biz.domain;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
/** /**
* 매장 검색 조건 * 매장 검색 조건
*/ */
@Getter @Getter
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class StoreSearchCriteria { public class StoreSearchCriteria {
private String keyword; private String keyword;
private String category; private String category;
private String tags; private String tags;
private Double latitude; private Double latitude;
private Double longitude; private Double longitude;
private Integer radius; private Integer radius;
private Integer page; private Integer page;
private Integer size; private Integer size;
} }

View File

@ -1,20 +1,20 @@
package com.ktds.hi.store.biz.domain; package com.ktds.hi.store.biz.domain;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
/** /**
* 매장 태그 도메인 엔티티 * 매장 태그 도메인 엔티티
*/ */
@Getter @Getter
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class StoreTag { public class StoreTag {
private Long id; private Long id;
private Long storeId; private Long storeId;
private String tagName; private String tagName;
} }