Skip to content

Commit

Permalink
♻️ 뱃지관련 리팩토링
Browse files Browse the repository at this point in the history
  • Loading branch information
tjdals4716 committed Aug 4, 2024
1 parent 6e8e85a commit 5fbff07
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 84 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,31 +14,6 @@
public class BadgeController {
private final BadgeService badgeService;

//뱃지 생성
@PostMapping("/add/{userId}")
public ResponseEntity<BadgeDTO> addBadge(@RequestBody BadgeDTO badgeDTO, @PathVariable Long userId) {
BadgeDTO createdBadge = badgeService.addBadge(badgeDTO, userId);
return ResponseEntity.ok(createdBadge);
}

//뱃지 전체 조회
@GetMapping
public List<BadgeDTO> getBadges() {
return badgeService.getBadges();
}

//해당 뱃지 조회
@GetMapping("/{id}")
public BadgeDTO getBadgeById(@PathVariable Long id) {
return badgeService.getBadgeById(id);
}

//해당 유저 전체 뱃지 조회
@GetMapping("/user/{userId}")
public List<BadgeDTO> getUserBadges(@PathVariable Long userId) {
return badgeService.getUserBadges(userId);
}

//유저 뱃지 상태 업데이트
@PutMapping("/user/{badgeId}")
public ResponseEntity<BadgeDTO> updateUserBadgeStatus(@PathVariable Long badgeId, @RequestBody BadgeDTO badgeDTO) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,6 @@
import java.util.List;

public interface BadgeService {
BadgeDTO addBadge(BadgeDTO badgeDTO, Long userId);
List<BadgeDTO> getBadges();
BadgeDTO getBadgeById(Long id);
List<BadgeDTO> getUserBadges(Long userId);
BadgeDTO updateUserBadgeStatus(Long badgeId, StatusEnum status);
void checkAndUpdateBadgeStatus(Long userId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,55 +21,6 @@ public class BadgeServiceImpl implements BadgeService {
private final BadgeRepository badgeRepository;
private final UserRepository userRepository;

//뱃지 생성
@Override
public BadgeDTO addBadge(BadgeDTO badgeDTO, Long userId) {
UserEntity user = userRepository.findById(userId)
.orElseThrow(() -> new RuntimeException("유저의 ID가 " + userId + "인 사용자를 찾을 수 없습니다"));
BadgeEntity badgeEntity = badgeRepository.save(badgeDTO.dtoToEntity());
badgeEntity.setUser(user);
badgeEntity = badgeRepository.save(badgeEntity); // User 설정 후 다시 저장
log.info("뱃지가 생성되었습니다! 뱃지 제목 : {}", badgeDTO.getTitle());
return BadgeDTO.entityToDto(badgeEntity);
}

//뱃지 전체 조회
@Override
public List<BadgeDTO> getBadges() {
List<BadgeDTO> badges = badgeRepository.findAll().stream()
.map(BadgeDTO::entityToDto)
.collect(Collectors.toList());
if (badges.isEmpty()) {
log.info("뱃지가 없습니다.");
} else {
log.info("뱃지 조회 완료!");
}
return badges;
}

//해당 뱃지 조회
@Override
public BadgeDTO getBadgeById(Long id) {
BadgeEntity badgeEntity = badgeRepository.findById(id)
.orElseThrow(() -> new RuntimeException("뱃지의 ID가 " + id + "인 뱃지를 찾을 수 없습니다"));
log.info("뱃지가 조회되었습니다! 뱃지 ID : {}", id);
return BadgeDTO.entityToDto(badgeEntity);
}

//해당 유저 전체 뱃지 조회
@Override
public List<BadgeDTO> getUserBadges(Long userId) {
List<BadgeDTO> userBadges = badgeRepository.findByUserId(userId).stream()
.map(BadgeDTO::entityToDto)
.collect(Collectors.toList());
if (userBadges.isEmpty()) {
log.info("유저 ID가 {}의 뱃지가 없습니다.", userId);
} else {
log.info("유저 ID가 {}의 뱃지 조회 완료!", userId);
}
return userBadges;
}

//유저 뱃지 상태 업데이트
@Override
public BadgeDTO updateUserBadgeStatus(Long badgeId, StatusEnum status) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,11 @@ public class UserServiceImpl implements UserService {
private final KakaoOAuthProperties kakaoOAuthProperties;
private final BadgeRepository badgeRepository;

//뱃지 기본 값
//뱃지 데이터
private void createDefaultBadges(UserEntity user) {
List<Integer> smileCounts = List.of(1, 5, 10, 20, 30, 50, 100, 300, 500);
List<BadgeEntity> defaultBadges = IntStream.rangeClosed(1, 9)
.mapToObj(i -> new BadgeEntity(null, i + " 웃기", StatusEnum.진행중, null, smileCounts.get(i - 1), user))
.mapToObj(i -> new BadgeEntity(null, smileCounts.get(i - 1) + " 웃기", StatusEnum.진행중, null, smileCounts.get(i - 1), user))
.collect(Collectors.toList());
badgeRepository.saveAll(defaultBadges);
}
Expand All @@ -73,8 +73,6 @@ public UserDTO createUser(UserDTO userDTO) {
userEntity.setPassword(passwordEncoder.encode(userDTO.getPassword()));
UserEntity savedUser = userRepository.save(userEntity);
logger.info("회원가입 완료! " + userEntity);

// 유저 생성 시 기본 뱃지 생성
createDefaultBadges(savedUser);

return UserDTO.entityToDto(savedUser);
Expand Down Expand Up @@ -328,6 +326,7 @@ public JWTDTO loginWithOAuth2(String code) {

UserEntity userEntity = userRepository.findByUid(uid).orElse(null);

boolean isNewUser = false;
if (userEntity == null) {
userEntity = UserEntity.builder()
.uid(uid)
Expand All @@ -337,13 +336,16 @@ public JWTDTO loginWithOAuth2(String code) {
.provider("kakao")
.build();
userRepository.save(userEntity);
isNewUser = true;
} else {
userEntity.setName(name);
userEntity.setEmail(email);
userRepository.save(userEntity);
}
//카카오 로그인 유저에 대한 기본 뱃지 생성
createDefaultBadges(userEntity);

if (isNewUser) {
createDefaultBadges(userEntity);
}

String token = jwtTokenProvider.generateToken(uid);
logger.info("카카오 로그인 성공! 새로운 토큰이 발급되었습니다");
Expand Down

0 comments on commit 5fbff07

Please sign in to comment.