Skip to content

Commit

Permalink
[feat] 뱃지 처음 획득하는 경우에만 생성
Browse files Browse the repository at this point in the history
  • Loading branch information
doyeoo committed Nov 15, 2023
1 parent 81ac8ec commit d2574a6
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,13 @@

import org.springframework.data.jpa.repository.JpaRepository;
import sungdong29.backend.domain.badge.domain.UserBadge;
import sungdong29.backend.domain.user.domain.User;

import java.util.List;
import java.util.Optional;

public interface UserBadgeRepository extends JpaRepository<UserBadge, Long> {
List<UserBadge> findByUserId(Long userId);

Optional<UserBadge> findByUserAndName(User user, String name);
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,11 @@ public class WalkService {
private final BadgeRepository badgeRepository;
private final UserBadgeRepository userBadgeRepository;

public UserBadge createPlaceBadge(Place place, User user) {
public UserBadge findOrCreatePlaceBadge(Place place, User user) {
Badge badge = badgeRepository.findByCategory(place.getCategory().getCategory()).orElseThrow(()-> BadgeNotFound.EXCEPTION);

UserBadge userBadge = UserBadge.of(user, badge, place.getName());
userBadgeRepository.save(userBadge);
UserBadge userBadge = userBadgeRepository.findByUserAndName(user, place.getName())
.orElseGet(() -> userBadgeRepository.save(UserBadge.of(user, badge, place.getName())));

return userBadge;
}
Expand All @@ -45,7 +45,7 @@ public WalkBadgeResponseDTO createWalkRecord(Long userId, Long placeId, WalkReco
Walk walk = Walk.of(user, place, walkRecordRequestDTO.getSteps());
walkRepository.save(walk);

UserBadge userBadge = createPlaceBadge(place, user);
UserBadge userBadge = findOrCreatePlaceBadge(place, user);

return WalkBadgeResponseDTO.from(userBadge);
}
Expand Down

0 comments on commit d2574a6

Please sign in to comment.