Skip to content

Commit f6761f7

Browse files
authored
Merge pull request #23 from hykim02/main
[Refactor]dietServiceV2-코드 가독성 향상(stream 사용)
2 parents 275d765 + 0925e90 commit f6761f7

File tree

1 file changed

+69
-21
lines changed

1 file changed

+69
-21
lines changed

src/main/java/com/example/Jinus/service/v2/cafeteria/DietServiceV2.java

Lines changed: 69 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,10 @@
2121
import java.time.LocalTime;
2222
import java.time.ZoneId;
2323
import java.util.List;
24+
import java.util.Optional;
2425
import java.util.Set;
2526
import java.util.TreeSet;
27+
import java.util.stream.Collectors;
2628

2729
@Service
2830
@RequiredArgsConstructor
@@ -40,14 +42,23 @@ public String requestHandler(RequestDto requestDto) {
4042
// 현재 시간 파악
4143
LocalTime time = getCurrentTime();
4244

43-
// 요청 일반 파라미터 추출
44-
DetailParamsItemFieldDto campusName = requestDto.getAction().getDetailParams().getSys_campus_name();
45-
DetailParamsItemFieldDto day = requestDto.getAction().getDetailParams().getSys_date();
46-
DetailParamsItemFieldDto period = requestDto.getAction().getDetailParams().getSys_time_period();
47-
// null이면 값 초기화하기
48-
String campusNameValue = (campusName != null) ? campusName.getValue() : getCampusName(kakaoId);
49-
String dayValue = (day != null) ? day.getValue() : getDay(time); // 오늘, 내일
50-
String periodValue = (period != null) ? period.getValue() : getPeriodOfDay(time); // 아침, 점심, 저녁
45+
// // 요청 일반 파라미터 추출
46+
// DetailParamsItemFieldDto campusName = requestDto.getAction().getDetailParams().getSys_campus_name();
47+
// DetailParamsItemFieldDto day = requestDto.getAction().getDetailParams().getSys_date();
48+
// DetailParamsItemFieldDto period = requestDto.getAction().getDetailParams().getSys_time_period();
49+
// // null이면 값 초기화하기
50+
// String campusNameValue = (campusName != null) ? campusName.getValue() : getCampusName(kakaoId);
51+
// String dayValue = (day != null) ? day.getValue() : getDay(time); // 오늘, 내일
52+
// String periodValue = (period != null) ? period.getValue() : getPeriodOfDay(time); // 아침, 점심, 저녁
53+
54+
// DetailParams에서 값 추출 (null 체크 포함)
55+
String campusNameValue = extractValue(requestDto.getAction().getDetailParams().getSys_campus_name())
56+
.orElseGet(() -> getCampusName(kakaoId));
57+
String dayValue = extractValue(requestDto.getAction().getDetailParams().getSys_date())
58+
.orElseGet(() -> getDay(time));
59+
String periodValue = extractValue(requestDto.getAction().getDetailParams().getSys_time_period())
60+
.orElseGet(() -> getPeriodOfDay(time));
61+
5162
// 요청 필수 파라미터 추출
5263
String cafeteriaName = requestDto.getAction().getParams().getSys_cafeteria_name();
5364

@@ -60,6 +71,13 @@ public String requestHandler(RequestDto requestDto) {
6071
return makeResponse(parameters);
6172
}
6273

74+
75+
// 기본값 설정 유틸
76+
private Optional<String> extractValue(DetailParamsItemFieldDto fieldDto) {
77+
return Optional.ofNullable(fieldDto).map(DetailParamsItemFieldDto::getValue);
78+
}
79+
80+
6381
// response 생성 로직
6482
public String makeResponse(HandleRequestDto parameters) {
6583
int campusId = campusServiceV2.getCampusId(parameters.getCampusName());
@@ -177,24 +195,54 @@ public String mappingResponse(HandleRequestDto parameters, String imgUrl, String
177195

178196

179197
// quickReply 객체 생성
198+
// private List<QuickReplyDto> mappingQuickReply(HandleRequestDto parameters) {
199+
// return switch (parameters.getPeriod()) {
200+
// case "아침" -> List.of(
201+
// new QuickReplyDto("점심", "message", parameters.getCampusName() + " " + parameters.getCafeteriaName() + " " + parameters.getDay() + " 점심 메뉴"),
202+
// new QuickReplyDto("저녁", "message", parameters.getCampusName() + " " + parameters.getCafeteriaName() + " " + parameters.getDay() + " 저녁 메뉴")
203+
// );
204+
// case "점심" -> List.of(
205+
// new QuickReplyDto("아침", "message", parameters.getCampusName() + " " + parameters.getCafeteriaName() + " " + parameters.getDay() + " 아침 메뉴"),
206+
// new QuickReplyDto("저녁", "message", parameters.getCampusName() + " " + parameters.getCafeteriaName() + " " + parameters.getDay() + " 저녁 메뉴")
207+
// );
208+
// default -> List.of(
209+
// new QuickReplyDto("아침", "message", parameters.getCampusName() + " " + parameters.getCafeteriaName() + " " + parameters.getDay() + " 아침 메뉴"),
210+
// new QuickReplyDto("점심", "message", parameters.getCampusName() + " " + parameters.getCafeteriaName() + " " + parameters.getDay() + " 점심 메뉴")
211+
// );
212+
// };
213+
// }
214+
215+
216+
180217
private List<QuickReplyDto> mappingQuickReply(HandleRequestDto parameters) {
181-
return switch (parameters.getPeriod()) {
182-
case "아침" -> List.of(
183-
new QuickReplyDto("점심", "message", parameters.getCampusName() + " " + parameters.getCafeteriaName() + " " + parameters.getDay() + " 점심 메뉴"),
184-
new QuickReplyDto("저녁", "message", parameters.getCampusName() + " " + parameters.getCafeteriaName() + " " + parameters.getDay() + " 저녁 메뉴")
185-
);
186-
case "점심" -> List.of(
187-
new QuickReplyDto("아침", "message", parameters.getCampusName() + " " + parameters.getCafeteriaName() + " " + parameters.getDay() + " 아침 메뉴"),
188-
new QuickReplyDto("저녁", "message", parameters.getCampusName() + " " + parameters.getCafeteriaName() + " " + parameters.getDay() + " 저녁 메뉴")
189-
);
190-
default -> List.of(
191-
new QuickReplyDto("아침", "message", parameters.getCampusName() + " " + parameters.getCafeteriaName() + " " + parameters.getDay() + " 아침 메뉴"),
192-
new QuickReplyDto("점심", "message", parameters.getCampusName() + " " + parameters.getCafeteriaName() + " " + parameters.getDay() + " 점심 메뉴")
193-
);
218+
List<String> periods = getNextMealPeriods(parameters.getPeriod());
219+
return periods.stream()
220+
.map(period -> createQuickReply(period, parameters))
221+
.collect(Collectors.toList());
222+
}
223+
224+
225+
// 현재 시간대(period)에 따라 다음 선택할 식사 시간대를 반환
226+
private List<String> getNextMealPeriods(String currentPeriod) {
227+
return switch (currentPeriod) {
228+
case "아침" -> List.of("점심", "저녁");
229+
case "점심" -> List.of("아침", "저녁");
230+
default -> List.of("아침", "점심");
194231
};
195232
}
196233

197234

235+
// QuickReplyDto 객체를 생성하는 메서드
236+
private QuickReplyDto createQuickReply(String period, HandleRequestDto parameters) {
237+
String message = String.format("%s %s %s %s 메뉴",
238+
parameters.getCampusName(),
239+
parameters.getCafeteriaName(),
240+
parameters.getDay(),
241+
period);
242+
return new QuickReplyDto(period, "message", message);
243+
}
244+
245+
198246
// 일반 파라미터 값 채우기
199247
// sys_campus_name 파라미터 초기화
200248
public String getCampusName(String kakaoId) {

0 commit comments

Comments
 (0)