Skip to content

Commit e0ef326

Browse files
committed
feat: ProductMetrics에 상품 정보 필드 추가 및 업데이트 메서드 구현
- `productName`, `price`, `isSoldOut` 필드 추가로 상품 데이터 확장 - `updateProductSnapshot` 메서드 구현으로 상품 상태 동기화 지원 - 패키지 구조 개선: `ProductMetrics`를 `metrics`에서 최상위 `domain`으로 이동 - `ProductMetricsService`에서 상품 정보 업데이트 로직 통합 및 Redis 캐시 처리 강화
1 parent d9322e1 commit e0ef326

3 files changed

Lines changed: 19 additions & 2 deletions

File tree

apps/commerce-streamer/src/main/java/com/loopers/domain/metrics/ProductMetricsService.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.loopers.domain.metrics;
22

33
import com.loopers.core.cache.RedisCacheHandler;
4+
import com.loopers.domain.ProductMetrics;
45
import com.loopers.domain.event.EventHandled;
56
import com.loopers.event.LikeCountEvent;
67
import com.loopers.event.ProductStockEvent;
@@ -50,6 +51,12 @@ public void processSalesCountEvent(ProductStockEvent event) {
5051

5152
metrics.addSalesCount(event.sellQuantity());
5253

54+
metrics.updateProductSnapshot(
55+
event.productName(),
56+
event.price(),
57+
event.currentStock()
58+
);
59+
5360
if (event.currentStock() <= 0) {
5461
redisCacheHandler.delete("product:detail:" + event.productId());
5562
redisCacheHandler.deleteByPattern("product:list");

apps/commerce-streamer/src/main/java/com/loopers/infrastructure/ProductMetricsRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.loopers.infrastructure;
22

3-
import com.loopers.domain.metrics.ProductMetrics;
3+
import com.loopers.domain.ProductMetrics;
44
import org.springframework.data.jpa.repository.JpaRepository;
55
import org.springframework.stereotype.Repository;
66

apps/commerce-streamer/src/main/java/com/loopers/domain/metrics/ProductMetrics.java renamed to modules/jpa/src/main/java/com/loopers/domain/ProductMetrics.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.loopers.domain.metrics;
1+
package com.loopers.domain;
22

33
import jakarta.persistence.Entity;
44
import jakarta.persistence.Id;
@@ -21,6 +21,9 @@ public class ProductMetrics {
2121
private int viewCount = 0;
2222
private int salesCount = 0;
2323

24+
private String productName;
25+
private Long price;
26+
private boolean isSoldOut;
2427
private LocalDateTime updatedAt;
2528

2629
public ProductMetrics(Long productId) {
@@ -44,4 +47,11 @@ public void addSalesCount(int quantity) {
4447
this.salesCount += quantity;
4548
this.updatedAt = LocalDateTime.now();
4649
}
50+
51+
public void updateProductSnapshot(String productName, long price, int currentStock) {
52+
this.productName = productName;
53+
this.price = price;
54+
this.isSoldOut = (currentStock <= 0);
55+
this.updatedAt = LocalDateTime.now();
56+
}
4757
}

0 commit comments

Comments
 (0)