Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,13 @@ dependencies {

// spring security
implementation 'org.springframework.boot:spring-boot-starter-security'

// apache commons
implementation 'org.apache.commons:commons-csv:1.8'

// feign
implementation "org.springframework.cloud:spring-cloud-starter-openfeign:4.1.3"
implementation 'io.github.openfeign:feign-jackson:12.1'
}


Expand Down
2 changes: 2 additions & 0 deletions src/main/java/hyu/erica/capstone/CapstoneApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

@SpringBootApplication
@EnableJpaAuditing
@EnableFeignClients
public class CapstoneApplication {

public static void main(String[] args) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ public enum ErrorStatus implements BaseErrorCode {
_MEMBER_EMAIL_EXIST(HttpStatus.BAD_REQUEST, "COMMON4014", "이미 가입 된 이메일입니다. 다른 로그인 방식을 이용해주세요."),
_RSA_ERROR(HttpStatus.BAD_REQUEST, "COMMON4015", "RSA 에러가 발생했습니다."),

// 파일 에러
_FILE_INPUT_ERROR(HttpStatus.BAD_REQUEST, "FILE4000", "파일 입력 중 에러가 발생했습니다."),

//유저 에러
_USER_NOT_FOUND(HttpStatus.NOT_FOUND, "USER4040", "사용자를 찾을 수 없습니다."),
_INVALID_PASSWORD(HttpStatus.BAD_REQUEST, "USER4001", "비밀번호가 일치하지 않습니다."),
Expand All @@ -38,6 +41,9 @@ public enum ErrorStatus implements BaseErrorCode {
_STYLE_NOT_FOUND(HttpStatus.NOT_FOUND, "STYLE4040", "입력하신 여행 스타일을 찾을 수 없습니다."),
_UNAUTHORIZED_USER(HttpStatus.FORBIDDEN, "STYLE4001", "해당 사용자는 권한이 없습니다."),

// 식당 관련
_RESTAURANT_NOT_FOUND(HttpStatus.NOT_FOUND, "RESTAURANT4040", "입력하신 식당을 찾을 수 없습니다."),

;


Expand Down
17 changes: 17 additions & 0 deletions src/main/java/hyu/erica/capstone/client/PlanClient.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package hyu.erica.capstone.client;

import hyu.erica.capstone.web.dto.client.AttractionRequestDTO;
import hyu.erica.capstone.web.dto.client.RestaurantRequestDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

@FeignClient(name = "planApiClient", url = "${plan.api.url}")
public interface PlanClient {

@GetMapping("/restaurants/search")
RestaurantRequestDTO getRestaurants(@RequestParam String query);

@GetMapping("/attractions/search")
AttractionRequestDTO getAttractions(@RequestParam String query);
}
88 changes: 87 additions & 1 deletion src/main/java/hyu/erica/capstone/domain/Attraction.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,91 @@
package hyu.erica.capstone.domain;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Lob;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;

@Entity
@Getter
@Builder
@DynamicUpdate
@DynamicInsert
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class Attraction {
// 추후 작성 예정

@Id
@Column(name = "UC_SEQ")
private Long ucSeq;

@Column(name = "MAIN_TITLE")
private String mainTitle;

@Column(name = "GUGUN_NM")
private String gugunNm;

@Column(name = "LAT")
private Double lat;

@Column(name = "LNG")
private Double lng;

@Column(name = "PLACE")
private String place;

@Column(name = "TITLE")
private String title;

@Column(name = "SUBTITLE")
private String subtitle;

@Column(name = "MAIN_PLACE")
private String mainPlace;

@Column(name = "ADDR1")
private String addr1;

@Column(name = "ADDR2")
private String addr2;

@Column(name = "CNTCT_TEL")
private String cntctTel;

@Column(name = "HOMEPAGE_URL")
private String homepageUrl;

@Column(name = "TRFC_INFO", columnDefinition = "TEXT")
private String trfcInfo;

@Column(name = "USAGE_DAY")
private String usageDay;

@Column(name = "HLDY_INFO")
private String hldyInfo;

@Column(name = "USAGE_DAY_WEEK_AND_TIME", columnDefinition = "TEXT")
private String usageDayWeekAndTime;

@Column(name = "USAGE_AMOUNT")
private String usageAmount;

@Column(name = "MIDDLE_SIZE_RM1")
private String middleSizeRm1;

@Column(name = "MAIN_IMG_NORMAL")
private String mainImgNormal;

@Column(name = "MAIN_IMG_THUMB")
private String mainImgThumb;

@Lob
@Column(name = "ITEMCNTNTS")
private String itemcntnts; // ITEMCNTNTS (상세 설명)
}
151 changes: 150 additions & 1 deletion src/main/java/hyu/erica/capstone/domain/Restaurant.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,154 @@
package hyu.erica.capstone.domain;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;


@Entity
@Table(name = "restaurant") // 테이블명 설정
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Restaurant {
// 추후 작성 예정

@Id
@Column(name = "RSTR_ID")
private Long rstrId; // 식당 고유 ID

@Column(name = "RSTR_NM")
private String rstrNm; // 식당 이름

@Column(name = "RSTR_RDNMADR")
private String rstrRdnmAdr; // 도로명 주소

@Column(name = "RSTR_LNNO_ADRES")
private String rstrLnnoAdres; // 지번 주소

@Column(name = "RSTR_LA")
private Double rstrLa; // 위도

@Column(name = "RSTR_LO")
private Double rstrLo; // 경도

@Column(name = "RSTR_TELNO")
private String rstrTelNo; // 전화번호

@Column(name = "BSNS_STATM_BZCND_NM")
private String bsnsStatmBzcndNm; // 영업 상태

@Column(name = "BSNS_LCNC_NM")
private String bsnsLcncNm; // 업종명

@Column(name = "RSTR_INTRCN_CONT", columnDefinition = "TEXT")
private String rstrIntrcnCont; // 식당 소개

@Column(name = "AREA_NM")
private String areaNm; // 지역명

@Column(name = "PRDL_SEAT_CNT")
private Integer prdlSeatCnt; // 예상 좌석 수

@Column(name = "SEAT_CNT")
private Integer seatCnt; // 실제 좌석 수

@Column(name = "PRKG_POS_YN")
private String prkgPosYn; // 주차 가능 여부 (Y/N)

@Column(name = "WIFI_OFR_YN")
private String wifiOfrYn; // 와이파이 제공 여부 (Y/N)

@Column(name = "DCRN_YN")
private String dcrnYn; // 할인 여부 (Y/N)

@Column(name = "PET_ENTRN_POSBL_YN")
private String petEntrnPosblYn; // 반려동물 동반 가능 여부 (Y/N)

@Column(name = "FGGG_MENU_OFR_YN")
private String fgggMenuOfrYn; // 외국인 메뉴 제공 여부 (Y/N)

@Column(name = "TLROM_INFO_CN")
private String tlromInfoCn; // 화장실 정보

@Column(name = "RESTDY_INFO_CN")
private String restdyInfoCn; // 휴무일 정보

@Column(name = "BSNS_TM_CN")
private String bsnsTmCn; // 영업시간

@Column(name = "HMDLV_SALE_YN")
private String hmdlvSaleYn; // 홈딜리버리 판매 여부 (Y/N)

@Column(name = "DSBR_CVNTL_YN")
private String dsbrCvntlYn; // 장애인 편의시설 제공 여부 (Y/N)

@Column(name = "DELV_SRVIC_YN")
private String delvSrvicYn; // 배달 서비스 제공 여부 (Y/N)

@Column(name = "RSRV_MTHD_NM")
private String rsrvMthdNm; // 예약 방법

@Column(name = "ONLINE_RSRV_INFO_CN")
private String onlineRsrvInfoCn; // 온라인 예약 정보

@Column(name = "HMPG_URL")
private String hmpgUrl; // 홈페이지 URL

@Column(name = "CRCMF_LDMARK_NM")
private String crcmfLdmarkNm; // 근처 랜드마크 이름

@Column(name = "CRCMF_LDMARK_LA")
private Double crcmfLdmarkLa; // 근처 랜드마크 위도

@Column(name = "CRCMF_LDMARK_LO")
private Double crcmfLdmarkLo; // 근처 랜드마크 경도

@Column(name = "CRCMF_LDMARK_DIST")
private Double crcmfLdmarkDist; // 근처 랜드마크 거리

@Column(name = "KIOSK_YN")
private String kioskYn; // 키오스크 여부 (Y/N)

@Column(name = "MB_PMAMT_YN")
private String mbPmamtYn; // 모바일 결제 가능 여부 (Y/N)

@Column(name = "SMORDER_YN")
private String smorderYn; // 스마트 오더 가능 여부 (Y/N)

@Column(name = "REPRSNT_MENU_NM")
private String reprsntMenuNm; // 대표 메뉴

@Column(name = "AWARD_INFO_DSCRN")
private String awardInfoDscrn; // 수상 정보

@Column(name = "RTI_IDEX")
private Double rtiIdex; // RTI 지수

@Column(name = "ONLINE_CONV_PRGS_YN")
private String onlineConvPrgsYn; // 온라인 컨버전 진행 여부 (Y/N)

@Column(name = "ACCPN_STTUS_IDEX")
private Double accpnSttusIdex; // 수용 상태 지수

@Column(name = "RATING_IDEX")
private Double ratingIdex; // 평점 지수

@Column(name = "TRPDVSR_GRAD")
private Double trpdvsrGrad; // 트립어드바이저 평점

@Column(name = "CTRIP_GRAD")
private Double ctripGrad; // 씨트립 평점

@Column(name = "NAVER_GRAD")
private Double naverGrad; // 네이버 평점
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,9 @@ public class PreferAttraction extends BaseEntity {
@Id @GeneratedValue(strategy = IDENTITY)
private Long id;

//private Attraction attraction;
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "attraction_id")
private Attraction attraction;

@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "user_id")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,9 @@ public class PreferRestaurant extends BaseEntity {
@Id @GeneratedValue(strategy = IDENTITY)
private Long id;

// private Restaurant restaurant;
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "restaurant_id")
private Restaurant restaurant;

@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "user_id")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package hyu.erica.capstone.repository;

import hyu.erica.capstone.domain.Attraction;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface AttractionRepository extends JpaRepository<Attraction, Long> {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package hyu.erica.capstone.repository;

import hyu.erica.capstone.domain.mapping.PreferAttraction;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface PreferAttractionRepository extends JpaRepository<PreferAttraction, Long> {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package hyu.erica.capstone.repository;

import hyu.erica.capstone.domain.mapping.PreferRestaurant;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface PreferRestaurantRepository extends JpaRepository<PreferRestaurant, Long> {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package hyu.erica.capstone.repository;

import hyu.erica.capstone.domain.Restaurant;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface RestaurantRepository extends JpaRepository<Restaurant, Long> {
}
Loading