Open smilejakdu opened 6 months ago
package com.example.newsfeed_service.service; import static com.example.newsfeed_service.common.response.BaseResponseStatus.FOLLOW_INVALID; import static com.example.newsfeed_service.common.response.BaseResponseStatus.USERS_INVALID_EMAIL; import static com.example.newsfeed_service.common.response.BaseResponseStatus.USERS_INVALID_ID; import com.example.newsfeed_service.common.exceptions.BaseException; import com.example.newsfeed_service.common.jwt.JWTUtil; import com.example.newsfeed_service.domain.ActiveType; import com.example.newsfeed_service.entity.Follow; import com.example.newsfeed_service.entity.User; import com.example.newsfeed_service.entity.User.State; import com.example.newsfeed_service.entity.UserLog; import com.example.newsfeed_service.repository.FeedRepository; import com.example.newsfeed_service.repository.FollowRepository; import com.example.newsfeed_service.repository.UserRepository; import java.util.Objects; import java.util.Optional; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Transactional @RequiredArgsConstructor @Service public class FollowService { private final FollowRepository followRepository; private final UserRepository userRepository; private final JWTUtil jwtUtil; private final FeedRepository feedRepository; public String followOther(String userEmail, Long id) { String log; String message=""; ActiveType activeType = null; // 토큰값으로 from 유저 확인 User fromUser = userRepository.findByEmail(userEmail) .orElseThrow(() -> new BaseException(USERS_INVALID_EMAIL)); // Id 값으로 to 유저 확인 User toUser = userRepository.findByIdAndState(id, State.ACTIVE) .orElseThrow(() -> new BaseException(USERS_INVALID_ID)); if (Objects.equals(fromUser.getId(), toUser.getId())) { throw new BaseException(FOLLOW_INVALID); } Optional<Follow> exist = followRepository.findByFromUserAndToUser(fromUser, toUser); if (exist.isPresent()) { // 이미 팔로우 했으면 취소 처리 followRepository.delete(exist.get()); log = fromUser.getName() + "님이 " + toUser.getName() + " 님을 팔로우 취소 했습니다."; message = "팔로우를 취소했습니다."; activeType = ActiveType.CANCEL_FOLLOW; } else { Follow follow = Follow.builder() .toUser(toUser) .fromUser(fromUser) .build(); followRepository.save(follow); log = fromUser.getName() + "님이 " + toUser.getName() + " 님을 팔로우 했습니다."; message = "해당 사용자를 팔로우했습니다."; activeType=ActiveType.FOLLOW; } UserLog userLog = UserLog.builder() .actor(fromUser) .recipient(fromUser) .log(log) .activeType(activeType) .build(); feedRepository.save(userLog); return message; } }
위에 코드 보시면 행동에 따라 메서드로 빼도 될것 같아요. 위의 코드는 통짜잖아요 메서드 빼게되면 접근 제한자를 사용해서 굳이 다른 곳에서 사용할 필요가 없는것들은 private 도 메서드 빼주시고 다른곳에서 불러와 지는것은 public 으로 두시면 될것 같아요
우리 접근 제한자 잘 배웠잖아요
위에 코드 보시면 행동에 따라 메서드로 빼도 될것 같아요. 위의 코드는 통짜잖아요 메서드 빼게되면 접근 제한자를 사용해서 굳이 다른 곳에서 사용할 필요가 없는것들은 private 도 메서드 빼주시고 다른곳에서 불러와 지는것은 public 으로 두시면 될것 같아요
우리 접근 제한자 잘 배웠잖아요