77import com .back .domain .mybar .enums .KeepStatus ;
88import com .back .domain .mybar .repository .MyBarRepository ;
99import com .back .domain .user .repository .UserRepository ;
10+ import com .back .domain .user .service .AbvScoreService ;
1011import lombok .RequiredArgsConstructor ;
1112import org .springframework .data .domain .Page ;
1213import org .springframework .data .domain .PageRequest ;
@@ -26,6 +27,7 @@ public class MyBarService {
2627 private final MyBarRepository myBarRepository ;
2728 private final UserRepository userRepository ;
2829 private final CocktailRepository cocktailRepository ;
30+ private final AbvScoreService abvScoreService ;
2931
3032 // 내 바 목록 조회 (무한스크롤)
3133 // - 커서: lastKeptAt + lastId 조합으로 안정적인 정렬/페이지네이션
@@ -83,6 +85,8 @@ public void keep(Long userId, Long cocktailId) {
8385 // 해제돼 있던 건 복원
8486 myBar .setStatus (KeepStatus .ACTIVE );
8587 myBar .setDeletedAt (null );
88+ // 활동 점수: 복원 시 +0.1
89+ abvScoreService .awardForKeep (userId );
8690 }
8791 return ; // 이미 ACTIVE여도 keptAt 갱신으로 충분
8892 }
@@ -95,12 +99,18 @@ public void keep(Long userId, Long cocktailId) {
9599 myBar .setKeptAt (now );
96100
97101 myBarRepository .save (myBar );
102+ // 활동 점수: 신규 keep 시 +0.1
103+ abvScoreService .awardForKeep (userId );
98104 }
99105
100106 /** 킵 해제(소프트 삭제) — 멱등 처리 */
101107 @ Transactional
102108 public void unkeep (Long userId , Long cocktailId ) {
103- myBarRepository .softDeleteByUserAndCocktail (userId , cocktailId );
109+ int changed = myBarRepository .softDeleteByUserAndCocktail (userId , cocktailId );
110+ // 실제로 ACTIVE -> DELETED로 변경된 경우만 -0.1
111+ if (changed > 0 ) {
112+ abvScoreService .revokeForKeep (userId );
113+ }
104114 }
105115}
106116
0 commit comments