Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
17 changes: 17 additions & 0 deletions src/main/java/com/codeit/todo/repository/FollowRepository.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.codeit.todo.repository;


import com.codeit.todo.domain.Follow;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

public interface FollowRepository extends JpaRepository<Follow, Integer> {
@Query("SELECT COUNT(*) FROM Follow f " +
"WHERE f.follower.userId = :userId ")
int countByFollower(@Param("userId") int userId);

@Query("SELECT COUNT(*) FROM Follow f " +
"WHERE f.followee.userId = :userId ")
int countByFollowee(int userId);
}
7 changes: 3 additions & 4 deletions src/main/java/com/codeit/todo/service/user/UserService.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,7 @@
import com.codeit.todo.web.dto.request.auth.SignUpRequest;
import com.codeit.todo.web.dto.request.auth.UpdatePasswordRequest;
import com.codeit.todo.web.dto.request.auth.UpdatePictureRequest;
import com.codeit.todo.web.dto.response.auth.ReadUserResponse;
import com.codeit.todo.web.dto.response.auth.SignUpResponse;
import com.codeit.todo.web.dto.response.auth.UpdatePasswordResponse;
import com.codeit.todo.web.dto.response.auth.UpdatePictureResponse;
import com.codeit.todo.web.dto.response.auth.*;

public interface UserService {

Expand All @@ -20,4 +17,6 @@ public interface UserService {
UpdatePictureResponse updateProfilePicture(int userId, UpdatePictureRequest pictureRequest);

UpdatePasswordResponse updatePassword(int userId, UpdatePasswordRequest passwordRequest);

ReadMyPageResponse findUserInfoAndFollows(int userId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,17 @@
import com.codeit.todo.common.exception.user.SignUpException;
import com.codeit.todo.common.exception.user.UpdatePasswordException;
import com.codeit.todo.common.exception.user.UserNotFoundException;
import com.codeit.todo.domain.Follow;
import com.codeit.todo.domain.User;
import com.codeit.todo.repository.FollowRepository;
import com.codeit.todo.repository.UserRepository;
import com.codeit.todo.service.storage.StorageService;
import com.codeit.todo.service.user.UserService;
import com.codeit.todo.web.dto.request.auth.LoginRequest;
import com.codeit.todo.web.dto.request.auth.SignUpRequest;
import com.codeit.todo.web.dto.request.auth.UpdatePasswordRequest;
import com.codeit.todo.web.dto.request.auth.UpdatePictureRequest;
import com.codeit.todo.web.dto.response.auth.ReadUserResponse;
import com.codeit.todo.web.dto.response.auth.SignUpResponse;
import com.codeit.todo.web.dto.response.auth.UpdatePasswordResponse;
import com.codeit.todo.web.dto.response.auth.UpdatePictureResponse;
import com.codeit.todo.web.dto.response.auth.*;
import lombok.RequiredArgsConstructor;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
Expand All @@ -35,6 +34,7 @@
@RequiredArgsConstructor
public class UserServiceImpl implements UserService {
private final UserRepository userRepository;
private final FollowRepository followRepository;
private final AuthenticationManager authenticationManager;
private final JwtTokenProvider jwtTokenProvider;
private final PasswordEncoder passwordEncoder;
Expand Down Expand Up @@ -135,6 +135,17 @@ public UpdatePasswordResponse updatePassword(int userId, UpdatePasswordRequest p
return new UpdatePasswordResponse(userId);
}

@Override
public ReadMyPageResponse findUserInfoAndFollows(int userId) {
User user = getUser(userId);

int followerCount = followRepository.countByFollower(userId);
int followeeCount = followRepository.countByFollowee(userId);


return ReadMyPageResponse.from(user, followerCount, followeeCount);
}

private User getUser(int userId){
User user = userRepository.findById(userId)
.orElseThrow(()-> new UserNotFoundException(String.valueOf(userId), "User"));
Expand Down
15 changes: 14 additions & 1 deletion src/main/java/com/codeit/todo/web/controller/AuthController.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.codeit.todo.web.dto.request.auth.UpdatePasswordRequest;
import com.codeit.todo.web.dto.request.auth.UpdatePictureRequest;
import com.codeit.todo.web.dto.response.Response;
import com.codeit.todo.web.dto.response.auth.ReadMyPageResponse;
import com.codeit.todo.web.dto.response.auth.UpdatePasswordResponse;
import com.codeit.todo.web.dto.response.auth.UpdatePictureResponse;
import io.swagger.v3.oas.annotations.Operation;
Expand Down Expand Up @@ -76,7 +77,7 @@ public Response<UpdatePictureResponse> updateUserProfilePicture(
}

@Operation(
summary = "비밀번호 변정",
summary = "비밀번호 변경",
description = "기존 비밀번호를 확인하고, 새로운 비밀번호로 변경"
)
@ApiResponses(value = {
Expand All @@ -90,4 +91,16 @@ public Response<UpdatePasswordResponse> updateUserPassword(
int userId = userDetails.getUserId();
return Response.ok(userService.updatePassword(userId, passwordRequest));
}


@Operation(summary = "마이페이지 가져오기", description = "유저 정보, 팔로워 팔로이 수 가져오기")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "조회 성공")
})
@GetMapping(value = "/mypage")
public Response<ReadMyPageResponse> getMyPage(@AuthenticationPrincipal CustomUserDetails customUserDetails){
int userId = customUserDetails.getUserId();
return Response.ok( userService.findUserInfoAndFollows(userId));
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.codeit.todo.web.dto.response.auth;

import com.codeit.todo.domain.User;
import lombok.Builder;

@Builder
public record ReadMyPageResponse(
String name,
String email,
String profilePic,

int followerCount,
int followeeCount
) {
public static ReadMyPageResponse from(User user, int followerCount, int followeeCount){
return ReadMyPageResponse.builder()
.name(user.getName())
.email(user.getEmail())
.profilePic(user.getProfilePic())
.followerCount(followerCount)
.followeeCount(followeeCount)
.build();
}
}
Loading