diff --git a/backend/src/main/java/com/example/Piroin/project/domain/assignment/controller/AssignmentController.java b/backend/src/main/java/com/example/Piroin/project/domain/assignment/controller/AssignmentController.java index fde00f1..136d34d 100644 --- a/backend/src/main/java/com/example/Piroin/project/domain/assignment/controller/AssignmentController.java +++ b/backend/src/main/java/com/example/Piroin/project/domain/assignment/controller/AssignmentController.java @@ -1,21 +1,19 @@ package com.example.Piroin.project.domain.assignment.controller; -import com.example.Piroin.project.domain.assignment.dto.CreateAssignmentRequest; -import com.example.Piroin.project.domain.assignment.dto.CreateAssignmentResponse; -import com.example.Piroin.project.domain.assignment.dto.ModifyAssignmentRequest; -import com.example.Piroin.project.domain.assignment.dto.ModifyAssignmentResponse; +import com.example.Piroin.project.domain.assignment.dto.*; import com.example.Piroin.project.domain.assignment.entity.DeleteAssignmentResponse; import com.example.Piroin.project.domain.assignment.service.AssignmentService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; +import org.springframework.security.core.Authentication; import org.springframework.web.bind.annotation.*; @RestController @RequiredArgsConstructor -@RequestMapping("/assignments") +@RequestMapping("/api/assignments") @Tag(name = "피로체크 과제 관리", description = "피로체크 과제 관리 API") public class AssignmentController { @@ -54,5 +52,19 @@ public DeleteAssignmentResponse deleteAssignment( return assignmentService.deleteAssignment(assignmentId); } + // 4. 나의 과제 상태 조회 (부원) + @Operation(summary = "나의 과제 조회", description = "부원이 본인의 과제 상태를 조회합니다.") + @GetMapping("/me/{week}") + public GetMyAssignmentsResponse getMyAssignments( + @PathVariable String week, + Authentication authentication + ) { + + Long userId = Long.valueOf(authentication.getName()); + + return assignmentService.getMyAssignments(userId, week); + } + + } diff --git a/backend/src/main/java/com/example/Piroin/project/domain/assignment/dto/AssignmentInfoResponse.java b/backend/src/main/java/com/example/Piroin/project/domain/assignment/dto/AssignmentInfoResponse.java new file mode 100644 index 0000000..61d3263 --- /dev/null +++ b/backend/src/main/java/com/example/Piroin/project/domain/assignment/dto/AssignmentInfoResponse.java @@ -0,0 +1,22 @@ +package com.example.Piroin.project.domain.assignment.dto; + +import com.example.Piroin.project.domain.assignment.enums.AssignmentStatus; +import lombok.Builder; +import lombok.Getter; + +@Getter +@Builder +public class AssignmentInfoResponse { + + private Integer assignmentId; + + private String title; + + private String week; + + private String sessionDate; + + private String day; + + private AssignmentStatus submitted; +} \ No newline at end of file diff --git a/backend/src/main/java/com/example/Piroin/project/domain/assignment/dto/AssignmentReqDTO.java b/backend/src/main/java/com/example/Piroin/project/domain/assignment/dto/AssignmentReqDTO.java deleted file mode 100644 index fe684a3..0000000 --- a/backend/src/main/java/com/example/Piroin/project/domain/assignment/dto/AssignmentReqDTO.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.example.Piroin.project.domain.assignment.dto; - -import lombok.Getter; - -import java.time.LocalDate; - -public class AssignmentReqDTO { - -} diff --git a/backend/src/main/java/com/example/Piroin/project/domain/assignment/dto/AssignmentResDTO.java b/backend/src/main/java/com/example/Piroin/project/domain/assignment/dto/AssignmentResDTO.java deleted file mode 100644 index 23daab7..0000000 --- a/backend/src/main/java/com/example/Piroin/project/domain/assignment/dto/AssignmentResDTO.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.example.Piroin.project.domain.assignment.dto; - -public class AssignmentResDTO { -} diff --git a/backend/src/main/java/com/example/Piroin/project/domain/assignment/dto/GetMyAssignmentsResponse.java b/backend/src/main/java/com/example/Piroin/project/domain/assignment/dto/GetMyAssignmentsResponse.java new file mode 100644 index 0000000..015c6e4 --- /dev/null +++ b/backend/src/main/java/com/example/Piroin/project/domain/assignment/dto/GetMyAssignmentsResponse.java @@ -0,0 +1,17 @@ +package com.example.Piroin.project.domain.assignment.dto; + +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.Builder; +import lombok.Getter; + +import java.util.List; + +@Getter +@Builder +@JsonPropertyOrder({"week", "assignments"}) +public class GetMyAssignmentsResponse { + + private String week; + + private List assignments; +} \ No newline at end of file diff --git a/backend/src/main/java/com/example/Piroin/project/domain/assignment/repository/AssignmentItemRepository.java b/backend/src/main/java/com/example/Piroin/project/domain/assignment/repository/AssignmentItemRepository.java index ec52d33..acb02d2 100644 --- a/backend/src/main/java/com/example/Piroin/project/domain/assignment/repository/AssignmentItemRepository.java +++ b/backend/src/main/java/com/example/Piroin/project/domain/assignment/repository/AssignmentItemRepository.java @@ -3,9 +3,11 @@ import com.example.Piroin.project.domain.assignment.entity.AssignmentItem; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.Optional; + public interface AssignmentItemRepository extends JpaRepository { void deleteAllByAssignmentId(Integer assignmentId); - + Optional findByUserIdAndAssignmentId(Long userId, Integer assignmentId); } diff --git a/backend/src/main/java/com/example/Piroin/project/domain/assignment/repository/AssignmentRepository.java b/backend/src/main/java/com/example/Piroin/project/domain/assignment/repository/AssignmentRepository.java index 6fdfbb4..16c5917 100644 --- a/backend/src/main/java/com/example/Piroin/project/domain/assignment/repository/AssignmentRepository.java +++ b/backend/src/main/java/com/example/Piroin/project/domain/assignment/repository/AssignmentRepository.java @@ -3,5 +3,9 @@ import com.example.Piroin.project.domain.assignment.entity.Assignment; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.List; + public interface AssignmentRepository extends JpaRepository { + + List findByWeekOrderBySessionDateAsc(String week); } diff --git a/backend/src/main/java/com/example/Piroin/project/domain/assignment/service/AssignmentService.java b/backend/src/main/java/com/example/Piroin/project/domain/assignment/service/AssignmentService.java index 0f09a71..524bc60 100644 --- a/backend/src/main/java/com/example/Piroin/project/domain/assignment/service/AssignmentService.java +++ b/backend/src/main/java/com/example/Piroin/project/domain/assignment/service/AssignmentService.java @@ -1,9 +1,6 @@ package com.example.Piroin.project.domain.assignment.service; -import com.example.Piroin.project.domain.assignment.dto.CreateAssignmentRequest; -import com.example.Piroin.project.domain.assignment.dto.CreateAssignmentResponse; -import com.example.Piroin.project.domain.assignment.dto.ModifyAssignmentRequest; -import com.example.Piroin.project.domain.assignment.dto.ModifyAssignmentResponse; +import com.example.Piroin.project.domain.assignment.dto.*; import com.example.Piroin.project.domain.assignment.entity.Assignment; import com.example.Piroin.project.domain.assignment.entity.AssignmentItem; import com.example.Piroin.project.domain.assignment.entity.DeleteAssignmentResponse; @@ -18,6 +15,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.time.DayOfWeek; import java.util.List; @Service @@ -94,4 +92,59 @@ public DeleteAssignmentResponse deleteAssignment(Integer assignmentId) { return new DeleteAssignmentResponse(assignmentId); } + // 4-1. 나의 과제 조회 (부원) + public GetMyAssignmentsResponse getMyAssignments( + Long userId, + String week + ) { + + List assignments = + assignmentRepository.findByWeekOrderBySessionDateAsc(week); + + List responses = + assignments.stream() + .map(assignment -> { + + AssignmentStatus submittedStatus = + assignmentItemRepository + .findByUserIdAndAssignmentId( + userId, + assignment.getId() + ) + .map(AssignmentItem::getSubmitted) + .orElse(AssignmentStatus.PENDING); + + return AssignmentInfoResponse.builder() + .assignmentId(assignment.getId()) + .title(assignment.getTitle()) + .week(assignment.getWeek()) + .sessionDate(assignment.getSessionDate().toString()) + .day(convertDay( + assignment.getSessionDate().getDayOfWeek() + )) + .submitted(submittedStatus) + .build(); + }) + .toList(); + + return GetMyAssignmentsResponse.builder() + .week(week) + .assignments(responses) + .build(); + } + + // 4-2. 날짜를 요일로 전환 함수 + private String convertDay(DayOfWeek dayOfWeek) { + + return switch (dayOfWeek) { + case MONDAY -> "MONDAY"; + case TUESDAY -> "TUESDAY"; + case WEDNESDAY -> "WEDNESDAY"; + case THURSDAY -> "THURSDAY"; + case FRIDAY -> "FRIDAY"; + case SATURDAY -> "SATURDAY"; + case SUNDAY -> "SUNDAY"; + }; + } + } diff --git a/backend/src/main/java/com/example/Piroin/project/domain/attendance/controller/AttendanceController.java b/backend/src/main/java/com/example/Piroin/project/domain/attendance/controller/AttendanceController.java index 5ff0015..4ace20f 100644 --- a/backend/src/main/java/com/example/Piroin/project/domain/attendance/controller/AttendanceController.java +++ b/backend/src/main/java/com/example/Piroin/project/domain/attendance/controller/AttendanceController.java @@ -33,6 +33,7 @@ public class AttendanceController { // 1. 출석코드 비교 @PostMapping("/mark") + @Operation(summary = "출석코드 입력", description = "부원이 운영진이 알려준 출석코드를 입력하여 출석을 합니다.") public ApiResponse markAttendance( @RequestBody MarkAttendanceReq req, Authentication authentication @@ -63,7 +64,7 @@ public ApiResponse markAttendance( // 2. 특정 유저의 출석 정보 - @Operation(summary = "사용자 출석 정보 조회", description = "특정 사용자의 전체 출석 정보를 조회합니다.") + @Operation(summary = "사용자 전체 출석 정보 조회", description = "특정 사용자의 전체 출석 정보를 조회합니다.") @ApiResponses({ @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "200", description = "조회 성공"), @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "400", description = "잘못된 요청"), diff --git a/backend/src/main/java/com/example/Piroin/project/domain/deposit/controller/DepositController.java b/backend/src/main/java/com/example/Piroin/project/domain/deposit/controller/DepositController.java index 046af4f..24e38e5 100644 --- a/backend/src/main/java/com/example/Piroin/project/domain/deposit/controller/DepositController.java +++ b/backend/src/main/java/com/example/Piroin/project/domain/deposit/controller/DepositController.java @@ -1,4 +1,29 @@ package com.example.Piroin.project.domain.deposit.controller; +import com.example.Piroin.project.domain.deposit.dto.DepositResponse; +import com.example.Piroin.project.domain.deposit.service.DepositService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.security.core.Authentication; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/deposit") +@Tag(name = "보증금", description = "보증금 관련 API") public class DepositController { -} + + private final DepositService depositService; + + @Operation(summary = "나의 보증금 조회", description = "사용자가 본인의 남은 보증금, 차감된 보증금, 방어권을 조회합니다.") + @GetMapping("/me") + public DepositResponse getMyDeposit( + Authentication authentication + ) { + + Long userId = Long.valueOf(authentication.getName()); + + return depositService.getMyDeposit(userId); + } +} \ No newline at end of file diff --git a/backend/src/main/java/com/example/Piroin/project/domain/deposit/dto/DepositReqDTO.java b/backend/src/main/java/com/example/Piroin/project/domain/deposit/dto/DepositReqDTO.java deleted file mode 100644 index def9c5f..0000000 --- a/backend/src/main/java/com/example/Piroin/project/domain/deposit/dto/DepositReqDTO.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.example.Piroin.project.domain.deposit.dto; - -public class DepositReqDTO { -} diff --git a/backend/src/main/java/com/example/Piroin/project/domain/deposit/dto/DepositResDTO.java b/backend/src/main/java/com/example/Piroin/project/domain/deposit/dto/DepositResDTO.java deleted file mode 100644 index 9f7af3e..0000000 --- a/backend/src/main/java/com/example/Piroin/project/domain/deposit/dto/DepositResDTO.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.example.Piroin.project.domain.deposit.dto; - -public class DepositResDTO { -} diff --git a/backend/src/main/java/com/example/Piroin/project/domain/deposit/dto/DepositResponse.java b/backend/src/main/java/com/example/Piroin/project/domain/deposit/dto/DepositResponse.java new file mode 100644 index 0000000..21fe989 --- /dev/null +++ b/backend/src/main/java/com/example/Piroin/project/domain/deposit/dto/DepositResponse.java @@ -0,0 +1,21 @@ +package com.example.Piroin.project.domain.deposit.dto; + +import lombok.Builder; +import lombok.Getter; + +@Getter +@Builder +public class DepositResponse { + + // 현재 남은 보증금 + private Integer amount; + + // 과제 차감 누적 + private Integer descentAssignment; + + // 출석 차감 누적 + private Integer descentAttendance; + + // 방어권 누적 + private Integer ascentDefence; +} \ No newline at end of file diff --git a/backend/src/main/java/com/example/Piroin/project/domain/deposit/exception/DepositException.java b/backend/src/main/java/com/example/Piroin/project/domain/deposit/exception/DepositException.java index 2a6b0b5..c741b86 100644 --- a/backend/src/main/java/com/example/Piroin/project/domain/deposit/exception/DepositException.java +++ b/backend/src/main/java/com/example/Piroin/project/domain/deposit/exception/DepositException.java @@ -1,7 +1,15 @@ package com.example.Piroin.project.domain.deposit.exception; +import com.example.Piroin.project.domain.deposit.exception.code.DepositErrorCode; +import lombok.Getter; + +@Getter public class DepositException extends RuntimeException { - public DepositException(String message) { - super(message); + + private final DepositErrorCode errorCode; + + public DepositException(DepositErrorCode errorCode) { + super(errorCode.getMessage()); + this.errorCode = errorCode; } -} +} \ No newline at end of file diff --git a/backend/src/main/java/com/example/Piroin/project/domain/deposit/exception/code/DepositErrorCode.java b/backend/src/main/java/com/example/Piroin/project/domain/deposit/exception/code/DepositErrorCode.java index 95ae1df..853842a 100644 --- a/backend/src/main/java/com/example/Piroin/project/domain/deposit/exception/code/DepositErrorCode.java +++ b/backend/src/main/java/com/example/Piroin/project/domain/deposit/exception/code/DepositErrorCode.java @@ -1,4 +1,20 @@ package com.example.Piroin.project.domain.deposit.exception.code; +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; + +@Getter +@RequiredArgsConstructor public enum DepositErrorCode { -} + + DEPOSIT_NOT_FOUND( + HttpStatus.BAD_REQUEST, + "DEPOSIT4001", + "보증금 정보가 존재하지 않습니다." + ); + + private final HttpStatus status; + private final String code; + private final String message; +} \ No newline at end of file diff --git a/backend/src/main/java/com/example/Piroin/project/domain/deposit/repository/DepositRepository.java b/backend/src/main/java/com/example/Piroin/project/domain/deposit/repository/DepositRepository.java index 01c59c6..be077ad 100644 --- a/backend/src/main/java/com/example/Piroin/project/domain/deposit/repository/DepositRepository.java +++ b/backend/src/main/java/com/example/Piroin/project/domain/deposit/repository/DepositRepository.java @@ -8,4 +8,6 @@ public interface DepositRepository extends JpaRepository { Optional findByUser(User user); + + Optional findByUserId(Long userId); } diff --git a/backend/src/main/java/com/example/Piroin/project/domain/deposit/service/DepositService.java b/backend/src/main/java/com/example/Piroin/project/domain/deposit/service/DepositService.java index 3534bd2..404b437 100644 --- a/backend/src/main/java/com/example/Piroin/project/domain/deposit/service/DepositService.java +++ b/backend/src/main/java/com/example/Piroin/project/domain/deposit/service/DepositService.java @@ -1,7 +1,10 @@ package com.example.Piroin.project.domain.deposit.service; import com.example.Piroin.project.domain.attendance.repository.AttendanceRepository; +import com.example.Piroin.project.domain.deposit.dto.DepositResponse; import com.example.Piroin.project.domain.deposit.entity.Deposit; +import com.example.Piroin.project.domain.deposit.exception.DepositException; +import com.example.Piroin.project.domain.deposit.exception.code.DepositErrorCode; import com.example.Piroin.project.domain.deposit.repository.DepositRepository; import com.example.Piroin.project.domain.user.entity.User; import com.example.Piroin.project.domain.user.repository.UserRepository; @@ -19,6 +22,7 @@ public class DepositService { private final UserRepository userRepository; private final AttendanceRepository attendanceRepository; + // 보증금 재계산 로직 (운영진이 출석/과제 여부 수정 시) @Transactional public void recalculateDeposit(Long userId) { User user = userRepository.findById(userId) @@ -32,4 +36,22 @@ public void recalculateDeposit(Long userId) { deposit.updateAttendanceAmount(descentAttendance); } + + // 보증금 조회 로직 + public DepositResponse getMyDeposit(Long userId) { + + Deposit deposit = depositRepository.findByUserId(userId) + .orElseThrow(() -> + new DepositException( + DepositErrorCode.DEPOSIT_NOT_FOUND + ) + ); + + return DepositResponse.builder() + .amount(deposit.getAmount()) + .descentAssignment(deposit.getDescentAssignment()) + .descentAttendance(deposit.getDescentAttendance()) + .ascentDefence(deposit.getAscentDefence()) + .build(); + } } diff --git a/backend/src/main/java/com/example/Piroin/project/domain/user/controller/AdminUserController.java b/backend/src/main/java/com/example/Piroin/project/domain/user/controller/AdminUserController.java new file mode 100644 index 0000000..305487b --- /dev/null +++ b/backend/src/main/java/com/example/Piroin/project/domain/user/controller/AdminUserController.java @@ -0,0 +1,39 @@ +package com.example.Piroin.project.domain.user.controller; + +import com.example.Piroin.project.domain.user.dto.StudentListResponse; +import com.example.Piroin.project.domain.user.dto.StudentListResponse; +import com.example.Piroin.project.domain.user.service.AdminUserService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequiredArgsConstructor +@Tag(name = "관리자용 user 정보", description = "관지라용 user 관련 API") +@RequestMapping("/api/admin") +public class AdminUserController { + + private final AdminUserService adminUserService; + + // 전체 부원 목록 조회 + @Operation(summary = "전체 부원 이름 목록 조회", description = "운영진이 전체 부원의 이름 목록을 조회합니다.") + @GetMapping("/studentlist") + public List getStudentList() { + return adminUserService.getStudentList(); + } + + + @Operation(summary = "부원 이름 검색", description = "운영진이 부원의 이름을 검색합니다(포함된 글자로 검색도 가능)") + @GetMapping("/studentlist/search") + public List searchStudents( + @RequestParam String name + ) { + return adminUserService.searchStudents(name); + } + + + +} \ No newline at end of file diff --git a/backend/src/main/java/com/example/Piroin/project/domain/user/dto/LoginRequest.java b/backend/src/main/java/com/example/Piroin/project/domain/user/dto/LoginRequest.java index 117b464..436a708 100644 --- a/backend/src/main/java/com/example/Piroin/project/domain/user/dto/LoginRequest.java +++ b/backend/src/main/java/com/example/Piroin/project/domain/user/dto/LoginRequest.java @@ -9,11 +9,11 @@ @Setter public class LoginRequest { - @Schema(description = "사용자 이름", example = "김피로") + @Schema(description = "사용자 이름", example = "최관리") @NotBlank(message = "이름을 입력해주세요.") private String name; - @Schema(description = "비밀번호", example = "qwer1234!") + @Schema(description = "비밀번호", example = "1234") @NotBlank(message = "비밀번호를 입력해주세요.") private String password; } diff --git a/backend/src/main/java/com/example/Piroin/project/domain/user/dto/StudentListResponse.java b/backend/src/main/java/com/example/Piroin/project/domain/user/dto/StudentListResponse.java new file mode 100644 index 0000000..04c9ad6 --- /dev/null +++ b/backend/src/main/java/com/example/Piroin/project/domain/user/dto/StudentListResponse.java @@ -0,0 +1,12 @@ +package com.example.Piroin.project.domain.user.dto; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class StudentListResponse { + private Long userId; + + private String name; +} diff --git a/backend/src/main/java/com/example/Piroin/project/domain/user/dto/UserReqDTO.java b/backend/src/main/java/com/example/Piroin/project/domain/user/dto/UserReqDTO.java deleted file mode 100644 index 9bf3758..0000000 --- a/backend/src/main/java/com/example/Piroin/project/domain/user/dto/UserReqDTO.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.example.Piroin.project.domain.user.dto; - -public class UserReqDTO { -} diff --git a/backend/src/main/java/com/example/Piroin/project/domain/user/dto/UserResDTO.java b/backend/src/main/java/com/example/Piroin/project/domain/user/dto/UserResDTO.java deleted file mode 100644 index 2a420c9..0000000 --- a/backend/src/main/java/com/example/Piroin/project/domain/user/dto/UserResDTO.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.example.Piroin.project.domain.user.dto; - -public class UserResDTO { -} diff --git a/backend/src/main/java/com/example/Piroin/project/domain/user/repository/UserRepository.java b/backend/src/main/java/com/example/Piroin/project/domain/user/repository/UserRepository.java index 677de60..6b755cb 100644 --- a/backend/src/main/java/com/example/Piroin/project/domain/user/repository/UserRepository.java +++ b/backend/src/main/java/com/example/Piroin/project/domain/user/repository/UserRepository.java @@ -16,5 +16,5 @@ public interface UserRepository extends JpaRepository { List findAll(); // 학생 이름으로 검색기능 - List findByNameContainingAndRole(String name, Role role); + List findByRoleAndNameContaining(Role role, String name); } diff --git a/backend/src/main/java/com/example/Piroin/project/domain/user/service/AdminUserService.java b/backend/src/main/java/com/example/Piroin/project/domain/user/service/AdminUserService.java new file mode 100644 index 0000000..a980ace --- /dev/null +++ b/backend/src/main/java/com/example/Piroin/project/domain/user/service/AdminUserService.java @@ -0,0 +1,44 @@ +package com.example.Piroin.project.domain.user.service; + +import com.example.Piroin.project.domain.user.dto.StudentListResponse; +import com.example.Piroin.project.domain.user.entity.User; +import com.example.Piroin.project.domain.user.enums.Role; +import com.example.Piroin.project.domain.user.repository.UserRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@RequiredArgsConstructor +public class AdminUserService { + + private final UserRepository userRepository; + + // 전체 부원 목록 조회 + public List getStudentList() { + + List students = userRepository.findByRole(Role.MEMBER); + + return students.stream() + .map(user -> new StudentListResponse( + user.getId(), + user.getName() + )) + .toList(); + } + + // 부원 이름 검색 + public List searchStudents(String name) { + + List students = + userRepository.findByRoleAndNameContaining(Role.MEMBER, name); + + return students.stream() + .map(user -> new StudentListResponse( + user.getId(), + user.getName() + )) + .toList(); + } +} \ No newline at end of file diff --git a/backend/src/main/java/com/example/Piroin/project/domain/user/service/UserService.java b/backend/src/main/java/com/example/Piroin/project/domain/user/service/UserService.java index de05b07..258539f 100644 --- a/backend/src/main/java/com/example/Piroin/project/domain/user/service/UserService.java +++ b/backend/src/main/java/com/example/Piroin/project/domain/user/service/UserService.java @@ -12,6 +12,7 @@ public class UserService { private final UserRepository userRepository; + // 로그인 public User login(String name, String password) { User user = userRepository.findByName(name) .orElseThrow(() -> new InvalidLoginException("해당 사용자가 존재하지 않습니다.")); @@ -22,4 +23,7 @@ public User login(String name, String password) { return user; } + + + // 부원 목록 조회 }