44import com .back .domain .level .repository .LevelXPRepository ;
55import com .back .domain .member .entity .Member ;
66import com .back .domain .member .repository .MemberRepository ;
7+ import com .back .domain .reward .entity .Reward ;
8+ import com .back .domain .reward .entity .RewardType ;
9+ import com .back .domain .reward .service .RewardService ;
710import com .back .global .exception .CustomException ;
811import com .back .global .exception .ErrorCode ;
912import lombok .RequiredArgsConstructor ;
1013import org .springframework .stereotype .Service ;
1114import org .springframework .transaction .annotation .Transactional ;
1215
16+ import java .util .List ;
1317import java .util .Optional ;
1418
1519@ Service
@@ -18,6 +22,8 @@ public class LevelUpService {
1822
1923 private final MemberRepository memberRepository ;
2024 private final LevelXPRepository levelXPRepository ;
25+ private final RewardService rewardService ;
26+
2127
2228 // 레벨업 보상 서비스
2329 @ Transactional
@@ -62,7 +68,16 @@ private void checkAndProcessLevelUp(Member member) {
6268 currentLevel = nextLevel ;
6369 member .setLevel (currentLevel );
6470
65- // 보상 지급 (보상 리워드 관련 메서드가 생성되면 해당 로직 추가)
71+ // 보상 지급
72+ List <Reward > rewards =
73+ rewardService .findByRewardTypeAndRequireValue (RewardType .LEVELUP , currentLevel );
74+
75+ if (!rewards .isEmpty ()) { // 보상이 존재하는 경우에만 처리
76+ // 레벨업 보상은 해당 레벨에 하나만 있다고 가정하고 첫 번째 요소를 사용
77+ Reward reward = rewards .getFirst ();
78+
79+ rewardService .giveReward (member .getId (), currentLevel , reward .getId ());
80+ }
6681
6782 } else {
6883 break ; // 레벨업 실패, 반복 종료
0 commit comments