feat : 주문 정보조회 변경 및 주문통계 분석 수정(메뉴이름 추가.)

This commit is contained in:
lsh9672
2025-06-17 14:21:18 +09:00
parent 1daa087bda
commit f96e58048b
6 changed files with 44 additions and 6 deletions
@@ -152,7 +152,6 @@ public class AnalyticsService implements AnalyticsUseCase {
log.info("매장 통계 조회 시작: storeId={}, startDate={}, endDate={}", storeId, startDate, endDate);
try {
// 1. 캐시 키 생성
// 1. 캐시 키 생성 및 확인
String cacheKey = String.format("statistics:store:%d:%s:%s", storeId, startDate, endDate);
var cachedResult = cachePort.getAnalyticsCache(cacheKey);
@@ -16,6 +16,7 @@ public class OrderResponse {
private Long id;
private Long storeId;
private Long menuId;
private String menuName;
private Integer customerAge;
private String customerGender;
private BigDecimal orderAmount;
@@ -116,6 +116,14 @@ public class OrderDataAdapter implements OrderDataPort {
// 연령대별 분포 계산
Map<String, Integer> ageDistribution = calculateCustomerAgeDistribution(orders);
//메뉴명 매핑
Map<Long, String> menuIdToName = orders.stream()
.collect(Collectors.toMap(
OrderResponse::getMenuId,
OrderResponse::getMenuName,
(existing, replacement) -> existing // 중복시 기존값 유지
));
// 인기 메뉴 계산 (메뉴ID별 주문 횟수) - 실제로는 메뉴명을 가져와야 하지만 임시로 메뉴ID 사용
List<String> popularMenus = orders.stream()
.collect(Collectors.groupingBy(
@@ -125,7 +133,7 @@ public class OrderDataAdapter implements OrderDataPort {
.entrySet().stream()
.sorted(Map.Entry.<Long, Long>comparingByValue().reversed())
.limit(4)
.map(entry -> "메뉴" + entry.getKey()) // 실제로는 메뉴명으로 변환 필요
.map(entry -> menuIdToName.get(entry.getKey())) // 실제로는 메뉴명으로 변환 필요
.collect(Collectors.toList());
return OrderStatistics.builder()