Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,16 @@ public interface MissionRepository extends JpaRepository<Mission, Long> {
"AND :today BETWEEN m.startDate AND m.endDate")
List<String> findWeeklyMissionPlacesByUser(@Param("userId") Long userId, @Param("today") LocalDate today);

Mission findMissionByPlace(@NotNull String place);
@Query("""
SELECT m FROM Mission m
WHERE m.categoryBudget.monthlyBudget.user.userId = :userId
AND m.place = :place
AND :today BETWEEN m.startDate AND m.endDate
ORDER BY m.createdAt DESC
""")
List<Mission> findActiveMissionsByUserAndPlace(@Param("userId") Long userId,
@Param("place") String place,
@Param("today") LocalDate today);

// ✅ 다음 주 미션이 존재하는지 확인하는 쿼리 추가
@Query("SELECT COUNT(m) FROM Mission m " +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,17 +71,24 @@ public List<MissionDto> getWeeklyMissionsDetail(LocalDate today) {
}

// 미션 데이터(방문 횟수, 사용한 금액) 업데이트 - expense 발생할 때마다 미션에 해당하는지 보고 미션에 해당되면 추적해서 저장
public void updateMission(User user, String payee, long amount){
public void updateMission(User user, String payee, long amount) {
LocalDate today = LocalDate.now();
List<String> missionPlaces = missionRepository.findWeeklyMissionPlacesByUser(user.getUserId(), today);

// missionPlaces에 포함된 경우의 처리
if (missionPlaces.contains(payee)) {
// missionPlaces에 포함된 경우의 처리
Mission mission = missionRepository.findMissionByPlace(payee);
//해당 미션의 numOfExpense와 amountOfExpense에 더하기
mission.addExpense(amount);
List<Mission> activeMissions = missionRepository.findActiveMissionsByUserAndPlace(user.getUserId(), payee, today);

if (!activeMissions.isEmpty()) {
//해당 미션의 numOfExpense와 amountOfExpense에 더하기
Mission latestMission = activeMissions.get(0); // 가장 최근 것 하나만 사용
latestMission.addExpense(amount);
}
}
}



//미션 상태 업데이트
public float updateMissionResult(LocalDate today){
User user = userService.getCurrentUser();
Expand Down
Loading