Skip to content

Commit 7e727c1

Browse files
committed
Merge branch 'develop' into feat/PRODUCT-238
2 parents c6df6e4 + 701abe0 commit 7e727c1

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+276
-467
lines changed

src/main/java/eatda/client/map/MapClientStoreSearchResult.java

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
44
import com.fasterxml.jackson.annotation.JsonProperty;
5-
import eatda.domain.store.Store;
5+
import eatda.domain.store.District;
66
import eatda.domain.store.StoreCategory;
77
import eatda.domain.store.StoreSearchResult;
88
import java.util.Map;
@@ -29,6 +29,7 @@ public record MapClientStoreSearchResult(
2929
"음식점 > 카페", StoreCategory.CAFE,
3030
"음식점 > 간식 > 제과,베이커리", StoreCategory.CAFE
3131
);
32+
private static final District DEFAULT_DISTRICT = District.ETC;
3233

3334
public boolean isFoodStore() {
3435
return "FD6".equals(categoryGroupCode);
@@ -54,18 +55,15 @@ public StoreCategory getStoreCategory() {
5455
.orElse(StoreCategory.OTHER);
5556
}
5657

57-
public Store toStore() {
58-
return Store.builder()
59-
.kakaoId(kakaoId)
60-
.category(getStoreCategory())
61-
.phoneNumber(phoneNumber)
62-
.name(name)
63-
.placeUrl(placeUrl)
64-
.roadAddress(roadAddress)
65-
.lotNumberAddress(lotNumberAddress)
66-
.latitude(latitude)
67-
.longitude(longitude)
68-
.build();
58+
public District getDistrict() {
59+
if (lotNumberAddress == null || lotNumberAddress.isBlank()) {
60+
return DEFAULT_DISTRICT;
61+
}
62+
String[] addressParts = lotNumberAddress.split(" ");
63+
if (addressParts.length < 2) {
64+
return DEFAULT_DISTRICT;
65+
}
66+
return District.fromName(addressParts[1]);
6967
}
7068

7169
public StoreSearchResult toDomain() {
@@ -77,6 +75,7 @@ public StoreSearchResult toDomain() {
7775
placeUrl,
7876
lotNumberAddress,
7977
roadAddress,
78+
getDistrict(),
8079
latitude,
8180
longitude
8281
);

src/main/java/eatda/controller/article/ArticleController.java

Lines changed: 0 additions & 24 deletions
This file was deleted.

src/main/java/eatda/controller/article/ArticleResponse.java

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/main/java/eatda/controller/article/ArticlesResponse.java

Lines changed: 0 additions & 8 deletions
This file was deleted.

src/main/java/eatda/domain/article/Article.java

Lines changed: 0 additions & 46 deletions
This file was deleted.

src/main/java/eatda/domain/cheer/CheerTag.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,15 @@
1111
import jakarta.persistence.JoinColumn;
1212
import jakarta.persistence.ManyToOne;
1313
import jakarta.persistence.Table;
14+
import jakarta.persistence.UniqueConstraint;
1415
import lombok.AccessLevel;
1516
import lombok.Getter;
1617
import lombok.NoArgsConstructor;
1718

18-
@Table(name = "cheer_tag")
19+
@Table(
20+
name = "cheer_tag",
21+
uniqueConstraints = @UniqueConstraint(name = "uk_cheer_tag_cheer_id_name", columnNames = {"cheer_id", "name"})
22+
)
1923
@Entity
2024
@Getter
2125
@NoArgsConstructor(access = AccessLevel.PROTECTED)

src/main/java/eatda/domain/cheer/CheerTagName.java

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,28 +5,30 @@
55
@Getter
66
public enum CheerTagName {
77

8-
OLD_STORE_MOOD(CheerTagCategory.MOOD),
9-
ENERGETIC(CheerTagCategory.MOOD),
10-
GOOD_FOR_DATING(CheerTagCategory.MOOD),
11-
QUIET(CheerTagCategory.MOOD),
12-
GOOD_FOR_DRINKING(CheerTagCategory.MOOD),
13-
INSTAGRAMMABLE(CheerTagCategory.MOOD),
14-
GOOD_FOR_FAMILY(CheerTagCategory.MOOD),
15-
YOUTUBE_FAMOUS(CheerTagCategory.MOOD),
8+
OLD_STORE_MOOD(CheerTagCategory.MOOD, "노포 감성"),
9+
ENERGETIC(CheerTagCategory.MOOD, "활기찬"),
10+
GOOD_FOR_DATING(CheerTagCategory.MOOD, "데이트하기좋은"),
11+
QUIET(CheerTagCategory.MOOD, "조용한"),
12+
GOOD_FOR_DRINKING(CheerTagCategory.MOOD, "술 땡기는"),
13+
INSTAGRAMMABLE(CheerTagCategory.MOOD, "인스타 감성"),
14+
GOOD_FOR_FAMILY(CheerTagCategory.MOOD, "부모님과 가기 좋은"),
15+
YOUTUBE_FAMOUS(CheerTagCategory.MOOD, "유튜버 맛집"),
1616

17-
GROUP_RESERVATION(CheerTagCategory.PRACTICAL),
18-
LARGE_PARKING(CheerTagCategory.PRACTICAL),
19-
CLEAN_RESTROOM(CheerTagCategory.PRACTICAL),
20-
PET_FRIENDLY(CheerTagCategory.PRACTICAL),
21-
LATE_NIGHT(CheerTagCategory.PRACTICAL),
22-
NEAR_SUBWAY(CheerTagCategory.PRACTICAL),
23-
MANY_NEARBY_ATTRACTIONS(CheerTagCategory.PRACTICAL);
17+
GROUP_RESERVATION(CheerTagCategory.PRACTICAL, "단체 예약"),
18+
LARGE_PARKING(CheerTagCategory.PRACTICAL, "넓은 주차장"),
19+
CLEAN_RESTROOM(CheerTagCategory.PRACTICAL, "깔끔한 화장실"),
20+
PET_FRIENDLY(CheerTagCategory.PRACTICAL, "반려동물 동반 가능"),
21+
LATE_NIGHT(CheerTagCategory.PRACTICAL, "늦게까지 영업"),
22+
NEAR_SUBWAY(CheerTagCategory.PRACTICAL, "지하철과 가까운"),
23+
MANY_NEARBY_ATTRACTIONS(CheerTagCategory.PRACTICAL, "주변에 놀거리가 많은"),
2424
;
2525

2626
private final CheerTagCategory type;
27+
private final String displayName;
2728

28-
CheerTagName(CheerTagCategory type) {
29+
CheerTagName(CheerTagCategory type, String displayName) {
2930
this.type = type;
31+
this.displayName = displayName;
3032
}
3133

3234
public enum CheerTagCategory {

src/main/java/eatda/domain/cheer/CheerTagNames.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public class CheerTagNames {
99

1010
private static final int MAX_CHEER_TAGS_PER_TYPE = 2;
1111

12-
private List<CheerTagName> cheerTagNames;
12+
private final List<CheerTagName> cheerTagNames;
1313

1414
public CheerTagNames(List<CheerTagName> cheerTagNames) {
1515
validate(cheerTagNames);
@@ -20,7 +20,7 @@ private void validate(List<CheerTagName> cheerTagNames) {
2020
if (isDuplicated(cheerTagNames)) {
2121
throw new BusinessException(BusinessErrorCode.CHEER_TAGS_DUPLICATED);
2222
}
23-
if (countMaxCountByType(cheerTagNames) > MAX_CHEER_TAGS_PER_TYPE) {
23+
if (maxCountByType(cheerTagNames) > MAX_CHEER_TAGS_PER_TYPE) {
2424
throw new BusinessException(BusinessErrorCode.EXCEED_CHEER_TAGS_PER_TYPE);
2525
}
2626
}
@@ -32,7 +32,7 @@ private boolean isDuplicated(List<CheerTagName> cheerTagNames) {
3232
return distinctCount != cheerTagNames.size();
3333
}
3434

35-
private long countMaxCountByType(List<CheerTagName> cheerTagNames) {
35+
private long maxCountByType(List<CheerTagName> cheerTagNames) {
3636
return cheerTagNames.stream()
3737
.collect(Collectors.groupingBy(CheerTagName::getType, Collectors.counting()))
3838
.values()
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package eatda.domain.store;
2+
3+
import java.util.Arrays;
4+
import lombok.Getter;
5+
6+
@Getter
7+
public enum District {
8+
9+
GANGNAM("강남구"),
10+
GANGDONG("강동구"),
11+
GANGBUK("강북구"),
12+
GANGSEO("강서구"),
13+
GWANAK("관악구"),
14+
GWANGJIN("광진구"),
15+
GURO("구로구"),
16+
GEUMCHEON("금천구"),
17+
NOWON("노원구"),
18+
DOBONG("도봉구"),
19+
DONGDAEMUN("동대문구"),
20+
DONGJAK("동작구"),
21+
MAPO("마포구"),
22+
SEODAEMUN("서대문구"),
23+
SEOCHO("서초구"),
24+
SEONGDONG("성동구"),
25+
SEONGBUK("성북구"),
26+
SONGPA("송파구"),
27+
YANGCHEON("양천구"),
28+
YEONGDEUNGPO("영등포구"),
29+
YONGSAN("용산구"),
30+
EUNPYEONG("은평구"),
31+
JONGNO("종로구"),
32+
JUNG("중구"),
33+
JUNGNANG("중랑구"),
34+
ETC("기타"),
35+
;
36+
37+
private final String name;
38+
39+
District(String name) {
40+
this.name = name;
41+
}
42+
43+
public static District fromName(String name) {
44+
if (name == null || name.isEmpty()) {
45+
return ETC;
46+
}
47+
return Arrays.stream(District.values())
48+
.filter(district -> district.name.equals(name.trim()))
49+
.findFirst()
50+
.orElse(ETC);
51+
}
52+
}

src/main/java/eatda/domain/store/Store.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ public class Store extends AuditingEntity {
4747
@Column(name = "lot_number_address", nullable = false)
4848
private String lotNumberAddress;
4949

50+
@Enumerated(EnumType.STRING)
51+
@Column(name = "district", nullable = false, length = 31)
52+
private District district;
53+
5054
@Embedded
5155
private Coordinates coordinates;
5256

@@ -58,6 +62,7 @@ private Store(String kakaoId,
5862
String placeUrl,
5963
String roadAddress,
6064
String lotNumberAddress,
65+
District district,
6166
Double latitude,
6267
Double longitude) {
6368
this.kakaoId = kakaoId;
@@ -66,16 +71,13 @@ private Store(String kakaoId,
6671
this.name = name;
6772
this.placeUrl = placeUrl;
6873
this.roadAddress = roadAddress;
74+
this.district = district;
6975
this.lotNumberAddress = lotNumberAddress;
7076
this.coordinates = new Coordinates(latitude, longitude);
7177
}
7278

7379
public String getAddressDistrict() {
74-
String[] addressParts = lotNumberAddress.split(" ");
75-
if (addressParts.length < 2) {
76-
return "";
77-
}
78-
return addressParts[1];
80+
return district.getName();
7981
}
8082

8183
public String getAddressNeighborhood() {

0 commit comments

Comments
 (0)