Class UserController

java.lang.Object
inha.git.user.api.controller.UserController

@RestController @RequestMapping("/api/v1/users") public class UserController extends Object
사용자 관련 API를 처리하는 컨트롤러입니다. 일반 사용자, 학생, 교수, 기업회원의 회원가입과 정보 관리 기능을 제공합니다. 사용자 조회, 프로젝트/팀/문제 참여 현황 등의 조회 기능을 포함합니다.
  • Constructor Details

    • UserController

      public UserController()
  • Method Details

    • getLoginUser

      @GetMapping public BaseResponse<SearchUserResponse> getLoginUser(@AuthenticationPrincipal User user)
      현재 로그인한 사용자의 상세 정보를 조회합니다.
      Parameters:
      user - 현재 인증된 사용자 정보
      Returns:
      BaseResponse 사용자의 기본 정보와 통계 정보를 포함한 응답
    • getUser

      @GetMapping("/{userIdx}") public BaseResponse<SearchUserResponse> getUser(@PathVariable("userIdx") Integer userIdx)
      특정 사용자의 상세 정보를 조회합니다.
      Parameters:
      userIdx - 조회할 대상 사용자의 식별자
      Returns:
      BaseResponse 사용자의 기본 정보와 통계 정보를 포함한 응답
      Throws:
      BaseException - 조회 대상 사용자가 존재하지 않는 경우
    • getUserProjects

      @GetMapping("/{userIdx}/projects") public BaseResponse<org.springframework.data.domain.Page<SearchProjectsResponse>> getUserProjects(@AuthenticationPrincipal User user, @PathVariable("userIdx") Integer userIdx, @RequestParam("page") Integer page)
      특정 사용자가 참여중인 프로젝트 목록을 조회합니다.
      Parameters:
      user - 현재 인증된 사용자 정보
      userIdx - 조회할 대상 사용자의 식별자
      page - 조회할 페이지 번호 (1부터 시작)
      Returns:
      BaseResponse<Page> 프로젝트 목록을 포함한 페이징 응답
      Throws:
      BaseException - 페이지 번호가 1 미만이거나, 조회 권한이 없는 경우
    • getUserQuestions

      @GetMapping("/{userIdx}/questions") public BaseResponse<org.springframework.data.domain.Page<SearchQuestionsResponse>> getUserQuestions(@AuthenticationPrincipal User user, @PathVariable("userIdx") Integer userIdx, @RequestParam("page") Integer page)
      특정 사용자가 작성한 질문 목록을 조회합니다.
      Parameters:
      user - 현재 인증된 사용자 정보
      userIdx - 조회할 대상 사용자의 식별자
      page - 조회할 페이지 번호 (1부터 시작)
      Returns:
      BaseResponse<Page> 질문 목록을 포함한 페이징 응답
      Throws:
      BaseException - 페이지 번호가 1 미만이거나, 조회 권한이 없는 경우
    • getUserProblems

      @GetMapping("/{userIdx}/problems") public BaseResponse<org.springframework.data.domain.Page<SearchProblemsResponse>> getUserProblems(@AuthenticationPrincipal User user, @PathVariable("userIdx") Integer userIdx, @RequestParam("page") Integer page)
      특정 사용자가 업로드한 문제 목록을 조회합니다.
      Parameters:
      user - 현재 인증된 사용자 정보
      userIdx - 조회할 대상 사용자의 식별자
      page - 조회할 페이지 번호 (1부터 시작)
      Returns:
      BaseResponse<Page> 문제 목록을 포함한 페이징 응답
      Throws:
      BaseException - 페이지 번호가 1 미만이거나, 조회 권한이 없는 경우
    • getUserProblemsParticipating

      @GetMapping("/{userIdx}/problems/participating") public BaseResponse<org.springframework.data.domain.Page<SearchProblemsResponse>> getUserProblemsParticipating(@AuthenticationPrincipal User user, @PathVariable("userIdx") Integer userIdx, @RequestParam("page") Integer page)
      특정 사용자가 참여중인 문제 목록을 조회합니다.
      Parameters:
      user - 현재 인증된 사용자 정보
      userIdx - 조회할 대상 사용자의 식별자
      page - 조회할 페이지 번호 (1부터 시작)
      Returns:
      BaseResponse<Page> 문제 목록을 포함한 페이징 응답
      Throws:
      BaseException - 페이지 번호가 1 미만이거나, 조회 권한이 없는 경우
    • getUserReports

      @GetMapping("/{userIdx}/reports") public BaseResponse<org.springframework.data.domain.Page<SearchReportResponse>> getUserReports(@AuthenticationPrincipal User user, @PathVariable("userIdx") Integer userIdx, @RequestParam("page") Integer page)
      특정 사용자가 작성한 신고 목록을 조회합니다.
      Parameters:
      user - 현재 인증된 사용자 정보
      userIdx - 조회할 대상 사용자의 식별자
      page - 조회할 페이지 번호 (1부터 시작)
      Returns:
      BaseResponse<Page> 신고 목록을 포함한 페이징 응답
      Throws:
      BaseException - 페이지 번호가 1 미만이거나, 조회 권한이 없는 경우
    • getUserBugReports

      @GetMapping("/{userIdx}/bug-reports") public BaseResponse<org.springframework.data.domain.Page<SearchBugReportsResponse>> getUserBugReports(@AuthenticationPrincipal User user, @PathVariable("userIdx") Integer userIdx, @Validated @ModelAttribute SearchBugReportCond searchBugReportCond, @RequestParam("page") Integer page)
      특정 사용자가 작성한 버그 제보 목록을 조회합니다.
      Parameters:
      user - 현재 인증된 사용자 정보
      userIdx - 조회할 대상 사용자의 식별자
      searchBugReportCond - 버그 제보 검색 조건
      page - 조회할 페이지 번호 (1부터 시작)
      Returns:
      BaseResponse<Page> 버그 제보 목록을 포함한 페이징 응답
      Throws:
      BaseException - 페이지 번호가 1 미만이거나, 조회 권한이 없는 경우
    • studentSignup

      @PostMapping("/student") public BaseResponse<StudentSignupResponse> studentSignup(@Validated @RequestBody StudentSignupRequest studentSignupRequest)
      학생 회원가입을 처리합니다.
      Parameters:
      studentSignupRequest - 학생 회원가입 요청 정보 (이메일, 비밀번호, 이름, 학번, 학과 정보 등)
      Returns:
      BaseResponse 가입된 학생 정보를 포함한 응답
      Throws:
      BaseException - 이메일 중복, 유효하지 않은 학과 정보, 이메일 인증 실패 등의 경우
    • professorSignup

      @PostMapping("/professor") public BaseResponse<ProfessorSignupResponse> professorSignup(@Validated @RequestBody ProfessorSignupRequest professorSignupRequest)
      교수 회원가입을 처리합니다.
      Parameters:
      professorSignupRequest - 교수 회원가입 요청 정보 (이메일, 비밀번호, 이름, 사번, 학과 정보 등)
      Returns:
      BaseResponse 가입된 교수 정보를 포함한 응답
      Throws:
      BaseException - 이메일 중복, 유효하지 않은 학과 정보, 이메일 인증 실패 등의 경우
    • companySignup

      @PostMapping(value="/company", consumes="multipart/form-data") public BaseResponse<CompanySignupResponse> companySignup(@Validated @RequestPart("company") CompanySignupRequest companySignupRequest, @Validated @NotNull(message="evidence \ud30c\uc77c\uc744 \ucca8\ubd80\ud574\uc8fc\uc138\uc694.") @RequestPart("evidence") @NotNull(message="evidence \ud30c\uc77c\uc744 \ucca8\ubd80\ud574\uc8fc\uc138\uc694.") org.springframework.web.multipart.MultipartFile evidence)
      기업 회원가입을 처리합니다.
      Parameters:
      companySignupRequest - 기업 회원가입 요청 정보 (이메일, 비밀번호, 이름, 회사명 등)
      evidence - 사업자등록증 파일
      Returns:
      BaseResponse 가입된 기업 정보를 포함한 응답
      Throws:
      BaseException - 이메일 중복, 파일 업로드 실패, 이메일 인증 실패 등의 경우
    • changePassword

      @PutMapping("/pw") public BaseResponse<UserResponse> changePassword(@AuthenticationPrincipal User user, @Validated @RequestBody UpdatePwRequest updatePwRequest)
      로그인한 사용자의 비밀번호를 변경합니다.
      Parameters:
      user - 현재 인증된 사용자 정보
      updatePwRequest - 변경할 비밀번호 정보
      Returns:
      BaseResponse 비밀번호가 변경된 사용자 정보를 포함한 응답