diff --git a/src/main/java/com/beep/beep/domain/beep/domain/repository/querydsl/RoomRepoCustom.java b/src/main/java/com/beep/beep/domain/beep/domain/repository/querydsl/RoomRepoCustom.java index 0ed6a8c..ea19199 100644 --- a/src/main/java/com/beep/beep/domain/beep/domain/repository/querydsl/RoomRepoCustom.java +++ b/src/main/java/com/beep/beep/domain/beep/domain/repository/querydsl/RoomRepoCustom.java @@ -1,9 +1,15 @@ package com.beep.beep.domain.beep.domain.repository.querydsl; import com.beep.beep.domain.beep.presentation.dto.RoomVO; +import com.beep.beep.domain.beep.presentation.dto.response.RoomByFloorRes; import java.util.List; public interface RoomRepoCustom { + List roomListByName(String name); + + List roomListByFloor(Integer floor); + } + diff --git a/src/main/java/com/beep/beep/domain/beep/domain/repository/querydsl/impl/RoomRepoCustomImpl.java b/src/main/java/com/beep/beep/domain/beep/domain/repository/querydsl/impl/RoomRepoCustomImpl.java index 1e345de..d363ae4 100644 --- a/src/main/java/com/beep/beep/domain/beep/domain/repository/querydsl/impl/RoomRepoCustomImpl.java +++ b/src/main/java/com/beep/beep/domain/beep/domain/repository/querydsl/impl/RoomRepoCustomImpl.java @@ -3,6 +3,7 @@ import com.beep.beep.domain.beep.domain.repository.querydsl.RoomRepoCustom; import com.beep.beep.domain.beep.presentation.dto.RoomVO; +import com.beep.beep.domain.beep.presentation.dto.response.RoomByFloorRes; import com.querydsl.core.types.Projections; import com.querydsl.jpa.impl.JPAQueryFactory; import lombok.RequiredArgsConstructor; @@ -28,4 +29,14 @@ public List roomListByName(String name) { .fetch(); } + @Override + public List roomListByFloor(Integer floor) { + return query.select(Projections.constructor(RoomByFloorRes.class, + room.code, + room.name)) + .from(room) + .where(room.floor.eq(floor)) + .fetch(); + } + } diff --git a/src/main/java/com/beep/beep/domain/beep/presentation/BeepController.java b/src/main/java/com/beep/beep/domain/beep/presentation/BeepController.java index 46e71e1..c756e8b 100644 --- a/src/main/java/com/beep/beep/domain/beep/presentation/BeepController.java +++ b/src/main/java/com/beep/beep/domain/beep/presentation/BeepController.java @@ -1,6 +1,7 @@ package com.beep.beep.domain.beep.presentation; import com.beep.beep.domain.beep.presentation.dto.request.InitializeAttendanceReq; +import com.beep.beep.domain.beep.presentation.dto.response.RoomByFloorRes; import com.beep.beep.domain.beep.service.BeepService; import com.beep.beep.domain.beep.presentation.dto.request.EnterRoomReq; import com.beep.beep.domain.beep.presentation.dto.request.ExitRoomReq; @@ -56,7 +57,7 @@ public void exitRoom( beepService.exit(request); } - @GetMapping("/rooms") + @GetMapping("/rooms/name") @Operation(summary = "실 조회", description = "실 이름으로 실을 조회합니다.(teacher)") public List roomListByName( @RequestParam String name @@ -64,6 +65,14 @@ public List roomListByName( return beepService.roomListByName(name); } + @GetMapping("/rooms/floor") + @Operation(summary = "실 조회", description = "n층으로 실을 조회합니다.(teacher)") + public List roomListByFloor( + @RequestParam Integer floor + ){ + return beepService.roomListByFloor(floor); + } + @GetMapping("/attendances") @Operation(summary = "출석 조회", description = "실 코드로 입실한 학생목록 조회합니다. (teacher)") public List attendanceByCode( diff --git a/src/main/java/com/beep/beep/domain/beep/presentation/dto/response/RoomByFloorRes.java b/src/main/java/com/beep/beep/domain/beep/presentation/dto/response/RoomByFloorRes.java new file mode 100644 index 0000000..7b7e511 --- /dev/null +++ b/src/main/java/com/beep/beep/domain/beep/presentation/dto/response/RoomByFloorRes.java @@ -0,0 +1,12 @@ +package com.beep.beep.domain.beep.presentation.dto.response; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; + +@Getter +@Builder @AllArgsConstructor +public class RoomByFloorRes { + private String code; + private String name; +} diff --git a/src/main/java/com/beep/beep/domain/beep/service/BeepService.java b/src/main/java/com/beep/beep/domain/beep/service/BeepService.java index 5b91974..d99012b 100644 --- a/src/main/java/com/beep/beep/domain/beep/service/BeepService.java +++ b/src/main/java/com/beep/beep/domain/beep/service/BeepService.java @@ -12,6 +12,7 @@ import com.beep.beep.domain.beep.presentation.dto.request.EnterRoomReq; import com.beep.beep.domain.beep.presentation.dto.request.ExitRoomReq; import com.beep.beep.domain.beep.presentation.dto.response.AttendanceByCodeRes; +import com.beep.beep.domain.beep.presentation.dto.response.RoomByFloorRes; import com.beep.beep.global.common.service.UserUtil; import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; @@ -62,6 +63,10 @@ public List roomListByName(String name){ return roomRepository.roomListByName(name); } + public List roomListByFloor(Integer floor){ + return roomRepository.roomListByFloor(floor); + } + public List attendanceByCode(String code){ return attendanceRepository.attendanceListByCode(code); } diff --git a/src/main/java/com/beep/beep/global/security/SecurityConfig.java b/src/main/java/com/beep/beep/global/security/SecurityConfig.java index 679e05d..283dc91 100644 --- a/src/main/java/com/beep/beep/global/security/SecurityConfig.java +++ b/src/main/java/com/beep/beep/global/security/SecurityConfig.java @@ -46,7 +46,7 @@ public SecurityFilterChain configure(HttpSecurity http) throws Exception { .requestMatchers("/beep/enter").hasAuthority(STUDENT.getAuthority()) .requestMatchers("/beep/exit").hasAuthority(STUDENT.getAuthority()) - .requestMatchers("/beep/rooms").hasAuthority(TEACHER.getAuthority()) + .requestMatchers("/beep/rooms/**").hasAuthority(TEACHER.getAuthority()) .requestMatchers(HttpMethod.POST,"/beep/attendances").permitAll() .requestMatchers(HttpMethod.GET,"/beep/attendances").hasAuthority(TEACHER.getAuthority())