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 @@ -24,6 +24,21 @@ public static User toUser(UserRequestDTO.UserInfoDTO userInfoDTO) {
.build();
}

public static UserResponseDTO.UserPageInfoDTO toGetUserInfo(User user) {
return UserResponseDTO.UserPageInfoDTO.builder()
.id(user.getId())
.name(user.getName())
.age(user.getAge())
.gender(user.getGender())
.region(user.getRegion())
.job(user.getJob())
.career(user.getCareer())
.finalEdu(user.getFinalEdu())
.build();
}



public static UserResponseDTO.DeleteUserResponseDTO toDeletedUser(User deleteUser) {
return UserResponseDTO.DeleteUserResponseDTO.builder()
.name(deleteUser.getName())
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.parentsgowork.server.repository;

import com.parentsgowork.server.domain.EducationInfo;
import com.parentsgowork.server.domain.JobInfo;
import com.parentsgowork.server.domain.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
package com.parentsgowork.server.service.userService;

import com.parentsgowork.server.web.dto.UserDTO.UserResponseDTO;

public interface UserQueryService {

UserResponseDTO.UserPageInfoDTO getUserPageInfo(Long userId);

boolean isUserInactive(Long userId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@

import com.parentsgowork.server.apiPayload.code.status.ErrorStatus;
import com.parentsgowork.server.apiPayload.exception.UserHandler;
import com.parentsgowork.server.converter.UserConverter;
import com.parentsgowork.server.domain.User;
import com.parentsgowork.server.repository.UserRepository;
import com.parentsgowork.server.web.dto.UserDTO.UserResponseDTO;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

Expand All @@ -15,6 +17,15 @@ public class UserQueryServiceImpl implements UserQueryService {

private final UserRepository userRepository;

@Override
public UserResponseDTO.UserPageInfoDTO getUserPageInfo(Long userId) {
User user = userRepository.findById(userId)
.orElseThrow(() -> new UserHandler(ErrorStatus.USER_NOT_FOUND));

return UserConverter.toGetUserInfo(user);
}

@Override
public boolean isUserInactive(Long userId) {
User user = userRepository.findById(userId)
.orElseThrow(() -> new UserHandler(ErrorStatus.USER_NOT_FOUND));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,19 @@

import com.parentsgowork.server.apiPayload.ApiResponse;
import com.parentsgowork.server.service.userService.UserCommandService;
import com.parentsgowork.server.service.userService.UserQueryService;
import com.parentsgowork.server.web.controller.specification.UserSpecification;
import com.parentsgowork.server.web.dto.PolicyInfoDTO.PolicyInfoResponseDTO;
import com.parentsgowork.server.web.dto.UserDTO.UserRequestDTO;
import com.parentsgowork.server.web.dto.UserDTO.UserResponseDTO;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Tag(name = "User", description = "사용자 관련 API")
@RestController
Expand All @@ -22,6 +23,17 @@
public class UserController implements UserSpecification {

private final UserCommandService userCommandService;
private final UserQueryService userQueryService;

@Override
@GetMapping("")
public ApiResponse<UserResponseDTO.UserPageInfoDTO> getUserPageInfo() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
Long userId = (Long) authentication.getPrincipal();

UserResponseDTO.UserPageInfoDTO response = userQueryService.getUserPageInfo(userId);
return ApiResponse.onSuccess(response);
}

@Override
@PatchMapping("/password")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,21 @@
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import jakarta.validation.Valid;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.RequestBody;

public interface UserSpecification {

@GetMapping("")
@Operation(summary = "회원정보 조회 API", description = "회원정보를 조회하는 API입니다.")
@ApiResponses({
@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "COMMON200", description = "⭕ SUCCESS, 성공"),
@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "USER4001", description = "❌ 회원을 찾을 수 없습니다.", content = @Content(schema = @Schema(implementation = ApiResponse.class))),
@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "COMMON400", description = "❌ BAD, 잘못된 요청", content = @Content(schema = @Schema(implementation = ApiResponse.class)))
})
ApiResponse<UserResponseDTO.UserPageInfoDTO> getUserPageInfo();

@PatchMapping("/password")
@Operation(summary = "비밀번호 변경 API", description = "사용자의 비밀번호를 변경하는 API입니다.", security = @SecurityRequirement(name = "tempToken"))
@ApiResponses({
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,31 @@
package com.parentsgowork.server.web.dto.UserDTO;

import com.parentsgowork.server.domain.enums.FinalEdu;
import com.parentsgowork.server.domain.enums.Gender;
import com.parentsgowork.server.domain.enums.Region;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

public class UserResponseDTO {

// 마이페이지 회원 조회 DTO
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class UserPageInfoDTO {
private Long id;
private String name;
private int age;
private Gender gender;
private Region region;
private String job;
private Integer career;
private FinalEdu finalEdu;
}

// 회원 탈퇴 응답 DTO
@Getter
@Builder
Expand Down