Skip to content

Commit

Permalink
Merge pull request #105 from modu-menu/feat/update-search
Browse files Browse the repository at this point in the history
Food 테이블 변경 및 엔티티 반영, etc
  • Loading branch information
eelseungmin authored May 28, 2024
2 parents f61daec + 110934d commit eb88709
Show file tree
Hide file tree
Showing 13 changed files with 345 additions and 299 deletions.
6 changes: 5 additions & 1 deletion src/main/java/modu/menu/core/util/DistanceCalculator.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,16 @@
// ref: https://www.baeldung.com/java-find-distance-between-points#calculate-the-distance-using-vincentys-formula
// 정확도가 가장 높은 Vincenty의 공식을 사용해서 두 지점 간 거리를 구하는 클래스
public class DistanceCalculator {

private DistanceCalculator() {
}

private static final double SEMI_MAJOR_AXIS_MT = 6378137;
private static final double SEMI_MINOR_AXIS_MT = 6356752.314245;
private static final double FLATTENING = 1 / 298.257223563;
private static final double ERROR_TOLERANCE = 1e-12;

public static double calculateDistance(double latitude1, double longitude1, double latitude2, double longitude2) {
public static double calculate(double latitude1, double longitude1, double latitude2, double longitude2) {
double U1 = Math.atan((1 - FLATTENING) * Math.tan(Math.toRadians(latitude1)));
double U2 = Math.atan((1 - FLATTENING) * Math.tan(Math.toRadians(latitude2)));

Expand Down
24 changes: 24 additions & 0 deletions src/main/java/modu/menu/food/domain/Food.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
import jakarta.persistence.*;
import lombok.*;

import java.util.ArrayList;
import java.util.List;

@Builder
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
Expand All @@ -18,4 +21,25 @@ public class Food {
@Column(length = 30)
@Enumerated(EnumType.STRING)
private FoodType type;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "food_id")
private Food parent;

@OneToMany(mappedBy = "food")
private List<Food> children = new ArrayList<>();

public void addChildren(Food food) {
food.syncParent(this);
children.add(food);
}

public void removeChildren(Food food) {
food.syncParent(null);
children.remove(food);
}

public void syncParent(Food food) {
this.parent = food;
}
}
81 changes: 40 additions & 41 deletions src/main/java/modu/menu/food/domain/FoodType.java
Original file line number Diff line number Diff line change
@@ -1,52 +1,51 @@
package modu.menu.food.domain;

import com.fasterxml.jackson.annotation.JsonValue;
import lombok.AllArgsConstructor;
import lombok.Getter;

@Getter
@AllArgsConstructor
public enum FoodType {

KOREAN_FOOD("한식", "한식"),
KOREAN_SEAFOOD("한식", "해물,생선"),
CONGEE("한식", "죽"),
JOKBAL("한식", "족발, 보쌈"),
HOT_POP("한식", "찌개,전골"),
MEAT("한식", "육류,고기"),
SUNDAE("한식", "순대"),
STREET_FOOD("한식", "분식"),
NOODLE("한식", "면"),
LUNCH_BOX("한식", "도시락"),
KOREAN_CHICKEN("한식", "닭요리"),
INTESTINE("한식", "곱창,막창"),
TEPPAN_YAKI("한식", "철판요리"),
JAPANESE_FOOD("일식", "일식"),
CHINESE_FOOD("중식", "중식"),
WESTERN_FOOD("양식", "양식"),
HAMBURGER("양식", "햄버거"),
WESTERN_SEAFOOD("양식", "해산물"),
PIZZA("양식", "피자"),
FRENCH_FOOD("양식", "프랑스음식"),
FAST_FOOD("양식", "패스트푸드"),
FAMILY_RESTAURANT("양식", "패밀리레스토랑"),
CHICKEN("양식", "치킨"),
ITALIAN_FOOD("양식", "이탈리안"),
SPANISH_FOOD("양식", "스페인"),
SALAD("양식", "샐러드"),
LATIN("양식", "멕시칸,브라질"),
ASIAN_FOOD("아시아음식", "아시아음식"),
BAR("술집", "술집"),
BUFFET("뷔페", "뷔페"),
DESSERT("디저트", "디저트");
// 한식
KOREAN_FOOD("한식"),
KOREAN_SEAFOOD("해물,생선"),
CONGEE("죽"),
JOKBAL("족발, 보쌈"),
HOT_POP("찌개,전골"),
MEAT("육류,고기"),
SUNDAE("순대"),
STREET_FOOD("분식"),
NOODLE("면"),
LUNCH_BOX("도시락"),
KOREAN_CHICKEN("닭요리"),
INTESTINE("곱창,막창"),
TEPPAN_YAKI("철판요리"),

private final String title;
private final String detail;
// 일식, 중식
JAPANESE_FOOD("일식"),
CHINESE_FOOD("중식"),

// 양식
WESTERN_FOOD("양식"),
HAMBURGER("햄버거"),
WESTERN_SEAFOOD("해산물"),
PIZZA("피자"),
FRENCH_FOOD("프랑스음식"),
FAST_FOOD("패스트푸드"),
FAMILY_RESTAURANT("패밀리레스토랑"),
CHICKEN("치킨"),
ITALIAN_FOOD("이탈리안"),
SPANISH_FOOD("스페인"),
SALAD("샐러드"),
LATIN("멕시칸,브라질"),

public String getTitle() {
return title;
}
// 기타
ASIAN_FOOD("아시아음식"),
BAR("술집"),
BUFFET("뷔페"),
DESSERT("디저트");

private final String title;

@JsonValue
public String getDetail() {
return detail;
}
}
26 changes: 20 additions & 6 deletions src/main/java/modu/menu/place/domain/Place.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

@Builder
@AllArgsConstructor
Expand Down Expand Up @@ -50,32 +51,45 @@ public class Place extends BaseTime {
private List<PlaceVibe> placeVibes = new ArrayList<>();

public void addVoteItem(VoteItem voteItem) {
voteItems.add(voteItem);
voteItem.syncPlace(this);
voteItems.add(voteItem);
}

public void removeVoteItem(VoteItem voteItem) {
voteItems.remove(voteItem);
voteItem.syncPlace(null);
voteItems.remove(voteItem);
}

public void addPlaceFood(PlaceFood placeFood) {
placeFoods.add(placeFood);
placeFood.syncPlace(this);
placeFoods.add(placeFood);
}

public void removePlaceFood(PlaceFood placeFood) {
placeFoods.remove(placeFood);
placeFood.syncPlace(null);
placeFoods.remove(placeFood);
}

public void addPlaceVibe(PlaceVibe placeVibe) {
placeVibes.add(placeVibe);
placeVibe.syncPlace(this);
placeVibes.add(placeVibe);
}

public void removePlaceVibe(PlaceVibe placeVibe) {
placeVibes.remove(placeVibe);
placeVibe.syncPlace(null);
placeVibes.remove(placeVibe);
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Place place = (Place) o;
return Objects.equals(getId(), place.getId());
}

@Override
public int hashCode() {
return Objects.hash(getId());
}
}
Loading

0 comments on commit eb88709

Please sign in to comment.