Skip to content

Commit d182652

Browse files
authored
Merge pull request #49 from prgrms-web-devcourse-final-project/refactor/diary-update-delete
다이어리 수정·삭제 시 지역별 다이어리 개수 갱신 로직 추가
2 parents 331f967 + 2ca1c24 commit d182652

File tree

4 files changed

+29
-1
lines changed

4 files changed

+29
-1
lines changed

src/main/java/com/example/log4u/domain/diary/facade/DiaryFacade.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,15 @@ public void createDiary(Long userId, DiaryRequestDto request) {
5757
* 1. diaryService: 다이어리 검증
5858
* 2. mediaService: 해당 다이어리 이미지 삭제<br>
5959
* 3. diaryService: 다이어리 삭제<br>
60+
* 4. mapService: 해당 구역 카운트 감소
6061
* */
6162
@Transactional
6263
public void deleteDiary(Long userId, Long diaryId) {
6364
Diary diary = diaryService.getDiaryAfterValidateOwnership(diaryId, userId);
6465
mediaService.deleteMediaByDiaryId(diaryId);
6566
hashtagService.deleteHashtagsByDiaryId(diaryId);
67+
mapService.decreaseRegionDiaryCount(diary.getLocation().getLatitude(), diary.getLocation().getLongitude());
68+
6669
diaryService.deleteDiary(diary);
6770
}
6871

@@ -72,12 +75,16 @@ public void deleteDiary(Long userId, Long diaryId) {
7275
* 1. diaryService: 다이어리 검증<br>
7376
* 2. mediaService: 해당 다이어리 이미지 삭제<br>
7477
* 3. diaryService: 다이어리 수정
78+
* 4. mapService: 해당 구역 카운트 감소
79+
* 5. mapService: 해당 구역 카운트 증가
7580
* */
7681
@Transactional
7782
public void updateDiary(Long userId, Long diaryId, DiaryRequestDto request) {
7883
Diary diary = diaryService.getDiaryAfterValidateOwnership(diaryId, userId);
7984
mediaService.updateMediaByDiaryId(diary.getDiaryId(), request.mediaList());
8085
hashtagService.saveOrUpdateHashtag(diary.getDiaryId(), request.hashtagList());
86+
mapService.decreaseRegionDiaryCount(diary.getLocation().getLatitude(), diary.getLocation().getLongitude());
87+
mapService.increaseRegionDiaryCount(request.location().latitude(), request.location().longitude());
8188

8289
String newThumbnailUrl = mediaService.extractThumbnailUrl(request.mediaList());
8390
diaryService.updateDiary(diary, request, newThumbnailUrl);

src/main/java/com/example/log4u/domain/map/entity/SidoAreasDiaryCount.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,8 @@ public class SidoAreasDiaryCount {
2525
public void incrementCount() {
2626
this.diaryCount++;
2727
}
28+
29+
public void decrementCount() {
30+
this.diaryCount = Math.max(0, this.diaryCount - 1);
31+
}
2832
}

src/main/java/com/example/log4u/domain/map/entity/SiggAreasDiaryCount.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public void incrementCount() {
2525
this.diaryCount++;
2626
}
2727

28-
public void decrement() {
28+
public void decrementCount() {
2929
this.diaryCount = Math.max(0, this.diaryCount - 1);
3030
}
3131
}

src/main/java/com/example/log4u/domain/map/service/MapService.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,23 @@ public void increaseRegionDiaryCount(Double lat, Double lon) {
6060
});
6161
}
6262

63+
@Transactional
64+
public void decreaseRegionDiaryCount(Double lat, Double lon) {
65+
sidoAreasRepository.findRegionByLatLon(lat, lon)
66+
.flatMap(sido -> sidoAreasDiaryCountRepository.findById(sido.getId()))
67+
.ifPresent(count -> {
68+
count.decrementCount();
69+
sidoAreasDiaryCountRepository.save(count);
70+
});
71+
72+
siggAreasRepository.findRegionByLatLon(lat, lon)
73+
.flatMap(sigg -> siggAreasDiaryCountRepository.findById(sigg.getGid()))
74+
.ifPresent(count -> {
75+
count.decrementCount();
76+
siggAreasDiaryCountRepository.save(count);
77+
});
78+
}
79+
6380
@Transactional(readOnly = true)
6481
public List<DiaryMarkerResponseDto> getDiariesInBounds(double south, double north, double west, double east) {
6582
return diaryRepository.findDiariesInBounds(south, north, west, east);

0 commit comments

Comments
 (0)