diff --git a/src/main/java/com/example/log4u/domain/diary/facade/DiaryFacade.java b/src/main/java/com/example/log4u/domain/diary/facade/DiaryFacade.java
index 3839bcb1..558bc20b 100644
--- a/src/main/java/com/example/log4u/domain/diary/facade/DiaryFacade.java
+++ b/src/main/java/com/example/log4u/domain/diary/facade/DiaryFacade.java
@@ -57,12 +57,15 @@ public void createDiary(Long userId, DiaryRequestDto request) {
* 1. diaryService: 다이어리 검증
* 2. mediaService: 해당 다이어리 이미지 삭제
* 3. diaryService: 다이어리 삭제
+ * 4. mapService: 해당 구역 카운트 감소
* */
@Transactional
public void deleteDiary(Long userId, Long diaryId) {
Diary diary = diaryService.getDiaryAfterValidateOwnership(diaryId, userId);
mediaService.deleteMediaByDiaryId(diaryId);
hashtagService.deleteHashtagsByDiaryId(diaryId);
+ mapService.decreaseRegionDiaryCount(diary.getLocation().getLatitude(), diary.getLocation().getLongitude());
+
diaryService.deleteDiary(diary);
}
@@ -72,12 +75,16 @@ public void deleteDiary(Long userId, Long diaryId) {
* 1. diaryService: 다이어리 검증
* 2. mediaService: 해당 다이어리 이미지 삭제
* 3. diaryService: 다이어리 수정
+ * 4. mapService: 해당 구역 카운트 감소
+ * 5. mapService: 해당 구역 카운트 증가
* */
@Transactional
public void updateDiary(Long userId, Long diaryId, DiaryRequestDto request) {
Diary diary = diaryService.getDiaryAfterValidateOwnership(diaryId, userId);
mediaService.updateMediaByDiaryId(diary.getDiaryId(), request.mediaList());
hashtagService.saveOrUpdateHashtag(diary.getDiaryId(), request.hashtagList());
+ mapService.decreaseRegionDiaryCount(diary.getLocation().getLatitude(), diary.getLocation().getLongitude());
+ mapService.increaseRegionDiaryCount(request.location().latitude(), request.location().longitude());
String newThumbnailUrl = mediaService.extractThumbnailUrl(request.mediaList());
diaryService.updateDiary(diary, request, newThumbnailUrl);
diff --git a/src/main/java/com/example/log4u/domain/map/entity/SidoAreasDiaryCount.java b/src/main/java/com/example/log4u/domain/map/entity/SidoAreasDiaryCount.java
index 2c078c57..8a944c6e 100644
--- a/src/main/java/com/example/log4u/domain/map/entity/SidoAreasDiaryCount.java
+++ b/src/main/java/com/example/log4u/domain/map/entity/SidoAreasDiaryCount.java
@@ -25,4 +25,8 @@ public class SidoAreasDiaryCount {
public void incrementCount() {
this.diaryCount++;
}
+
+ public void decrementCount() {
+ this.diaryCount = Math.max(0, this.diaryCount - 1);
+ }
}
diff --git a/src/main/java/com/example/log4u/domain/map/entity/SiggAreasDiaryCount.java b/src/main/java/com/example/log4u/domain/map/entity/SiggAreasDiaryCount.java
index 3cab8a8f..bae8e648 100644
--- a/src/main/java/com/example/log4u/domain/map/entity/SiggAreasDiaryCount.java
+++ b/src/main/java/com/example/log4u/domain/map/entity/SiggAreasDiaryCount.java
@@ -25,7 +25,7 @@ public void incrementCount() {
this.diaryCount++;
}
- public void decrement() {
+ public void decrementCount() {
this.diaryCount = Math.max(0, this.diaryCount - 1);
}
}
diff --git a/src/main/java/com/example/log4u/domain/map/service/MapService.java b/src/main/java/com/example/log4u/domain/map/service/MapService.java
index af676c53..ac9a6682 100644
--- a/src/main/java/com/example/log4u/domain/map/service/MapService.java
+++ b/src/main/java/com/example/log4u/domain/map/service/MapService.java
@@ -60,6 +60,23 @@ public void increaseRegionDiaryCount(Double lat, Double lon) {
});
}
+ @Transactional
+ public void decreaseRegionDiaryCount(Double lat, Double lon) {
+ sidoAreasRepository.findRegionByLatLon(lat, lon)
+ .flatMap(sido -> sidoAreasDiaryCountRepository.findById(sido.getId()))
+ .ifPresent(count -> {
+ count.decrementCount();
+ sidoAreasDiaryCountRepository.save(count);
+ });
+
+ siggAreasRepository.findRegionByLatLon(lat, lon)
+ .flatMap(sigg -> siggAreasDiaryCountRepository.findById(sigg.getGid()))
+ .ifPresent(count -> {
+ count.decrementCount();
+ siggAreasDiaryCountRepository.save(count);
+ });
+ }
+
@Transactional(readOnly = true)
public List getDiariesInBounds(double south, double north, double west, double east) {
return diaryRepository.findDiariesInBounds(south, north, west, east);