Skip to content

Commit 978c11e

Browse files
authored
Merge pull request #379 from JNU-econovation/feat/#368
[BE/feat] 식사 분석하는 API 기능 변경에 따른 유스케이스 개발 및 기존 도메인 리팩토링
2 parents e003244 + ae3435c commit 978c11e

34 files changed

+411
-133
lines changed

BE/exceed/src/main/java/com/gaebaljip/exceed/adapter/in/meal/GetMealController.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,15 @@
1414
import com.gaebaljip.exceed.application.port.in.meal.GetSpecificMealQuery;
1515
import com.gaebaljip.exceed.application.port.in.member.GetMaintainMealUsecase;
1616
import com.gaebaljip.exceed.application.port.in.member.GetTargetMealUsecase;
17+
import com.gaebaljip.exceed.application.service.nutritionist.GetAllCalorieAnalysisService;
1718
import com.gaebaljip.exceed.common.ApiResponse;
1819
import com.gaebaljip.exceed.common.ApiResponseGenerator;
1920
import com.gaebaljip.exceed.common.annotation.AuthenticationMemberId;
2021
import com.gaebaljip.exceed.common.docs.meal.GetMealExceptionDocs;
2122
import com.gaebaljip.exceed.common.docs.meal.GetMealFoodExceptionDocs;
2223
import com.gaebaljip.exceed.common.swagger.ApiErrorExceptionsExample;
23-
import com.gaebaljip.exceed.dto.CurrentMealDTO;
24-
import com.gaebaljip.exceed.dto.MaintainMealDTO;
25-
import com.gaebaljip.exceed.dto.SpecificMealDTO;
26-
import com.gaebaljip.exceed.dto.TargetMealDTO;
24+
import com.gaebaljip.exceed.dto.*;
25+
import com.gaebaljip.exceed.dto.request.GetAllAnalysisRequest;
2726
import com.gaebaljip.exceed.dto.response.*;
2827

2928
import io.swagger.v3.oas.annotations.Operation;
@@ -45,6 +44,7 @@ public class GetMealController {
4544
private final GetTargetMealUsecase getTargetMealUsecase;
4645
private final GetCurrentMealQuery getCurrentMealQuery;
4746
private final GetSpecificMealQuery getSpecificMealQuery;
47+
private final GetAllCalorieAnalysisService getAllCalorieAnalysisService;
4848

4949
/** 오늘 먹은 식사 정보(단,탄,지 및 칼로리) 조회 */
5050
@Operation(summary = "오늘 먹은 식사 정보 조회", description = "오늘 먹은 식사 정보(단,탄,지 및 칼로리)를 조회한다.")
@@ -70,11 +70,16 @@ public ApiResponse<ApiResponse.CustomBody<GetMealFoodResponse>> getMealFood(
7070
MaintainMealDTO maintainMealDTO = getMaintainMealUsecase.execute(memberId, localDateTime);
7171
TargetMealDTO targetMealDTO = getTargetMealUsecase.execute(memberId, localDateTime);
7272
SpecificMealDTO specificMealDTO = getSpecificMealQuery.execute(memberId, localDateTime);
73-
GetMealResponse getMealResponse =
74-
new GetMealResponse(
75-
maintainMealDTO, targetMealDTO, specificMealDTO.currentMealDTO());
73+
74+
AllAnalysisDTO allAnalysisDTO =
75+
getAllCalorieAnalysisService.execute(
76+
GetAllAnalysisRequest.of(memberId, localDateTime));
7677
return ApiResponseGenerator.success(
77-
new GetMealFoodResponse(getMealResponse, specificMealDTO.mealRecordDTOS()),
78+
new GetMealFoodResponse(
79+
GetMealResponse.of(
80+
maintainMealDTO, targetMealDTO, specificMealDTO.currentMealDTO()),
81+
specificMealDTO.mealRecordDTOS(),
82+
allAnalysisDTO),
7883
HttpStatus.OK);
7984
}
8085
}

BE/exceed/src/main/java/com/gaebaljip/exceed/adapter/in/nutritionist/GetAnalysisController.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@
1010
import org.springframework.web.bind.annotation.RequestMapping;
1111
import org.springframework.web.bind.annotation.RestController;
1212

13-
import com.gaebaljip.exceed.application.port.in.nutritionist.GetAnalysisUsecase;
13+
import com.gaebaljip.exceed.application.port.in.nutritionist.GetCalorieAnalysisUsecase;
1414
import com.gaebaljip.exceed.common.ApiResponse;
1515
import com.gaebaljip.exceed.common.ApiResponseGenerator;
1616
import com.gaebaljip.exceed.common.annotation.AuthenticationMemberId;
1717
import com.gaebaljip.exceed.common.docs.nutritionist.GetAnalysisExceptionDocs;
1818
import com.gaebaljip.exceed.common.swagger.ApiErrorExceptionsExample;
19-
import com.gaebaljip.exceed.dto.request.GetAnalysisRequest;
20-
import com.gaebaljip.exceed.dto.response.GetAnalysisResponse;
19+
import com.gaebaljip.exceed.dto.request.GetCalorieAnalysisRequest;
20+
import com.gaebaljip.exceed.dto.response.GetCalorieAnalysisResponse;
2121

2222
import io.swagger.v3.oas.annotations.Operation;
2323
import io.swagger.v3.oas.annotations.Parameter;
@@ -34,17 +34,17 @@
3434
@Tag(name = "[분석 조회]")
3535
public class GetAnalysisController {
3636

37-
private final GetAnalysisUsecase getAnalysisUsecase;
37+
private final GetCalorieAnalysisUsecase getAnalysisUsecase;
3838

3939
@Operation(summary = "월별 식사 정보 분석", description = "월별 식사 정보를 분석한다.")
4040
@GetMapping("/achieve/{date}")
4141
@ApiErrorExceptionsExample(GetAnalysisExceptionDocs.class)
42-
public ApiResponse<ApiResponse.CustomBody<GetAnalysisResponse>> getAnalysis(
42+
public ApiResponse<ApiResponse.CustomBody<GetCalorieAnalysisResponse>> getAnalysis(
4343
@PathVariable @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate date,
4444
@Parameter(hidden = true) @AuthenticationMemberId Long memberId) {
4545
LocalDateTime localDateTime = date.atStartOfDay();
46-
GetAnalysisResponse achieveListResponse =
47-
getAnalysisUsecase.execute(new GetAnalysisRequest(memberId, localDateTime));
46+
GetCalorieAnalysisResponse achieveListResponse =
47+
getAnalysisUsecase.execute(new GetCalorieAnalysisRequest(memberId, localDateTime));
4848
return ApiResponseGenerator.success(achieveListResponse, HttpStatus.OK);
4949
}
5050
}

BE/exceed/src/main/java/com/gaebaljip/exceed/adapter/out/jpa/member/MemberPersistenceAdapter.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
import org.springframework.stereotype.Component;
77

8-
import com.gaebaljip.exceed.adapter.out.jpa.nutritionist.MonthlyTargetPort;
98
import com.gaebaljip.exceed.application.domain.member.Member;
109
import com.gaebaljip.exceed.application.domain.member.MemberEntity;
1110
import com.gaebaljip.exceed.application.port.out.member.MemberPort;
@@ -17,7 +16,7 @@
1716

1817
@Component
1918
@RequiredArgsConstructor
20-
public class MemberPersistenceAdapter implements MemberPort, MonthlyTargetPort {
19+
public class MemberPersistenceAdapter implements MemberPort {
2120

2221
private final MemberRepository memberRepository;
2322
private final MemberConverter memberConverter;
@@ -34,7 +33,6 @@ public MemberEntity command(MemberEntity memberEntity) {
3433
return memberRepository.save(memberEntity);
3534
}
3635

37-
/** 회원 수정 기능 구현 후 -> Map<LocalDate date, MemberModel> 변경 */
3836
@Override
3937
public Member query(Long memberId, LocalDateTime date) {
4038
MemberEntity memberEntity =

BE/exceed/src/main/java/com/gaebaljip/exceed/adapter/out/jpa/nutritionist/MonthlyTargetPort.java

Lines changed: 0 additions & 10 deletions
This file was deleted.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.gaebaljip.exceed.application.domain.nutritionist;
2+
3+
import com.gaebaljip.exceed.application.domain.meal.DailyMeal;
4+
import com.gaebaljip.exceed.application.domain.member.Member;
5+
6+
public abstract class AbstractAnalyzerFactory {
7+
public abstract Analyzer createAnalyzer(DailyMeal dailyMeal, Member member);
8+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.gaebaljip.exceed.application.domain.nutritionist;
2+
3+
public interface Analyzable {
4+
boolean analyze();
5+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.gaebaljip.exceed.application.domain.nutritionist;
2+
3+
import com.gaebaljip.exceed.application.domain.meal.DailyMeal;
4+
import com.gaebaljip.exceed.application.domain.member.Member;
5+
6+
public abstract class Analyzer implements Analyzable {
7+
8+
protected DailyMeal dailyMeal;
9+
protected Member member;
10+
11+
public Analyzer(DailyMeal dailyMeal, Member member) {
12+
this.dailyMeal = dailyMeal;
13+
this.member = member;
14+
}
15+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.gaebaljip.exceed.application.domain.nutritionist;
2+
3+
import com.gaebaljip.exceed.application.domain.meal.DailyMeal;
4+
import com.gaebaljip.exceed.application.domain.member.Member;
5+
6+
public class CalorieAnalyzer extends Analyzer {
7+
public CalorieAnalyzer(DailyMeal dailyMeal, Member member) {
8+
super(dailyMeal, member);
9+
}
10+
11+
@Override
12+
public boolean analyze() {
13+
return member.measureTargetCalorie() - dailyMeal.calculateCurrentCalorie() <= 0;
14+
}
15+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.gaebaljip.exceed.application.domain.nutritionist;
2+
3+
import com.gaebaljip.exceed.application.domain.meal.DailyMeal;
4+
import com.gaebaljip.exceed.application.domain.member.Member;
5+
6+
public class CalorieAnalyzerFactory extends AbstractAnalyzerFactory {
7+
8+
private CalorieAnalyzerFactory() {}
9+
10+
private static class SingletonHolder {
11+
private static final CalorieAnalyzerFactory INSTANCE = new CalorieAnalyzerFactory();
12+
}
13+
14+
public static CalorieAnalyzerFactory getInstance() {
15+
return SingletonHolder.INSTANCE;
16+
}
17+
18+
@Override
19+
public CalorieAnalyzer createAnalyzer(DailyMeal dailyMeal, Member member) {
20+
return new CalorieAnalyzer(dailyMeal, member);
21+
}
22+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.gaebaljip.exceed.application.domain.nutritionist;
2+
3+
import com.gaebaljip.exceed.application.domain.meal.DailyMeal;
4+
import com.gaebaljip.exceed.application.domain.member.Member;
5+
6+
public class CarbohydrateAnalyzer extends Analyzer {
7+
public CarbohydrateAnalyzer(DailyMeal dailyMeal, Member member) {
8+
super(dailyMeal, member);
9+
}
10+
11+
@Override
12+
public boolean analyze() {
13+
return member.measureTargetCarbohydrate() - dailyMeal.calculateCurrentCarbohydrate() <= 0;
14+
}
15+
}

0 commit comments

Comments
 (0)