diff --git a/src/main/java/com/beep/beep/domain/auth/presentation/AuthController.java b/src/main/java/com/beep/beep/domain/auth/presentation/AuthController.java index 61e8dbf..2b9b38f 100644 --- a/src/main/java/com/beep/beep/domain/auth/presentation/AuthController.java +++ b/src/main/java/com/beep/beep/domain/auth/presentation/AuthController.java @@ -11,6 +11,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -19,6 +20,9 @@ import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; +import java.util.HashMap; +import java.util.Map; + @RestController @RequestMapping(value = "/auth") @RequiredArgsConstructor @@ -28,12 +32,15 @@ public class AuthController { private final AuthService authService; @PostMapping("/sign-up/student") - @ResponseStatus(HttpStatus.CREATED) @Operation(summary = "학생 회원가입", description = "학생계정으로 회원가입합니다. (unauthenticated)") - public void studentSignUp( + public ResponseEntity> studentSignUp( @RequestBody SignUpReq req ){ authService.studentSignUp(req); + Map response = new HashMap<>(); + response.put("status", "201"); + response.put("message", "학생 회원가입 요청이 성공했습니다."); + return ResponseEntity.status(HttpStatus.CREATED).body(response); } @PostMapping("/sign-up/teacher") diff --git a/src/main/java/com/beep/beep/domain/beep/domain/Room.java b/src/main/java/com/beep/beep/domain/beep/domain/Room.java index 71cebad..59e1b13 100644 --- a/src/main/java/com/beep/beep/domain/beep/domain/Room.java +++ b/src/main/java/com/beep/beep/domain/beep/domain/Room.java @@ -3,6 +3,8 @@ import jakarta.persistence.Column; import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.Table; import lombok.AccessLevel; @@ -15,7 +17,12 @@ @Table(name = "tb_room") @SuperBuilder public class Room { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long idx; + + @Column(nullable = false) private String code; @Column(nullable = false,unique = true) diff --git a/src/main/java/com/beep/beep/domain/beep/domain/repository/RoomRepository.java b/src/main/java/com/beep/beep/domain/beep/domain/repository/RoomRepository.java index d573999..d68c2e3 100644 --- a/src/main/java/com/beep/beep/domain/beep/domain/repository/RoomRepository.java +++ b/src/main/java/com/beep/beep/domain/beep/domain/repository/RoomRepository.java @@ -6,4 +6,5 @@ public interface RoomRepository extends CrudRepository , RoomRepoCustom { + boolean existsByCode(String code); } 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 ea19199..1cb0507 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,15 +1,17 @@ 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.request.RoomsByFloorReq; +import com.beep.beep.domain.beep.presentation.dto.request.RoomsByNameReq; import com.beep.beep.domain.beep.presentation.dto.response.RoomByFloorRes; import java.util.List; public interface RoomRepoCustom { - List roomListByName(String name); + List roomListByName(RoomsByNameReq req); - List roomListByFloor(Integer floor); + List roomListByFloor(RoomsByFloorReq req); } 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 d363ae4..47d301a 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,8 @@ 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.request.RoomsByFloorReq; +import com.beep.beep.domain.beep.presentation.dto.request.RoomsByNameReq; import com.beep.beep.domain.beep.presentation.dto.response.RoomByFloorRes; import com.querydsl.core.types.Projections; import com.querydsl.jpa.impl.JPAQueryFactory; @@ -19,23 +21,28 @@ public class RoomRepoCustomImpl implements RoomRepoCustom { private final JPAQueryFactory query; @Override - public List roomListByName(String name) { + public List roomListByName(RoomsByNameReq req) { return query.select(Projections.constructor(RoomVO.class, room.code, room.floor, room.name)) .from(room) - .where(room.name.contains(name)) + .where(room.name.contains(req.getName())) + .offset((req.getPage() - 1) * req.getSize()) .fetch(); } @Override - public List roomListByFloor(Integer floor) { + public List roomListByFloor(RoomsByFloorReq req) { return query.select(Projections.constructor(RoomByFloorRes.class, + room.idx, room.code, room.name)) .from(room) - .where(room.floor.eq(floor)) + .where(room.floor.eq(req.getFloor())) + .offset((req.getPage() - 1) * req.getSize()) + .limit(req.getSize()) + .orderBy(room.idx.asc()) .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 c756e8b..99a2f46 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,8 @@ package com.beep.beep.domain.beep.presentation; +import com.beep.beep.domain.beep.presentation.dto.request.RoomsByFloorReq; import com.beep.beep.domain.beep.presentation.dto.request.InitializeAttendanceReq; +import com.beep.beep.domain.beep.presentation.dto.request.RoomsByNameReq; 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; @@ -11,7 +13,9 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -20,7 +24,9 @@ import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; +import java.util.HashMap; import java.util.List; +import java.util.Map; @RestController @RequiredArgsConstructor @@ -31,54 +37,63 @@ public class BeepController { private final BeepService beepService; @PostMapping("/attendances") - @ResponseStatus(HttpStatus.CREATED) @Operation(summary = "출석정보 초기화", description = "출석정보 초기값을 설정합니다.(student)") - public void initializeAttendance( + public ResponseEntity> initializeAttendance( @RequestBody InitializeAttendanceReq request ) { beepService.initializeAttendance(request); + Map response = new HashMap<>(); + response.put("status", "201"); + response.put("message", "출석정보 저장에 성공했습니다."); + return ResponseEntity.status(HttpStatus.CREATED).body(response); } @PutMapping("/enter") - @ResponseStatus(HttpStatus.CREATED) @Operation(summary = "입실 요청", description = "입실을 요청합니다.(student)") - public void enterRoom( + public ResponseEntity> enterRoom( @RequestBody EnterRoomReq request ) { beepService.enter(request); + Map response = new HashMap<>(); + response.put("status", "200"); + response.put("message","입실 요청이 성공했습니다."); + return ResponseEntity.ok(response); } @PutMapping("/exit") - @ResponseStatus(HttpStatus.CREATED) @Operation(summary = "퇴실 요청", description = "퇴실을 요청합니다.(student)") - public void exitRoom( + public ResponseEntity> exitRoom( @RequestBody ExitRoomReq request ) { beepService.exit(request); + Map response = new HashMap<>(); + response.put("status", "200"); + response.put("message","퇴실 요청이 성공했습니다."); + return ResponseEntity.ok(response); } @GetMapping("/rooms/name") @Operation(summary = "실 조회", description = "실 이름으로 실을 조회합니다.(teacher)") - public List roomListByName( - @RequestParam String name + public ResponseEntity> roomListByName( + @ModelAttribute RoomsByNameReq req ){ - return beepService.roomListByName(name); + return ResponseEntity.ok().body(beepService.roomListByName(req)); } @GetMapping("/rooms/floor") @Operation(summary = "실 조회", description = "n층으로 실을 조회합니다.(teacher)") - public List roomListByFloor( - @RequestParam Integer floor + public ResponseEntity> roomListByFloor( + @ModelAttribute RoomsByFloorReq req ){ - return beepService.roomListByFloor(floor); + return ResponseEntity.ok().body(beepService.roomListByFloor(req)); } @GetMapping("/attendances") @Operation(summary = "출석 조회", description = "실 코드로 입실한 학생목록 조회합니다. (teacher)") - public List attendanceByCode( + public ResponseEntity> attendanceByCode( @RequestParam String code ){ - return beepService.attendanceByCode(code); + return ResponseEntity.ok().body(beepService.attendanceByCode(code)); } } diff --git a/src/main/java/com/beep/beep/domain/beep/presentation/dto/RoomVO.java b/src/main/java/com/beep/beep/domain/beep/presentation/dto/RoomVO.java index 255caf4..748940e 100644 --- a/src/main/java/com/beep/beep/domain/beep/presentation/dto/RoomVO.java +++ b/src/main/java/com/beep/beep/domain/beep/presentation/dto/RoomVO.java @@ -1,6 +1,7 @@ package com.beep.beep.domain.beep.presentation.dto; +import com.beep.beep.global.common.dto.request.PageRequest; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; diff --git a/src/main/java/com/beep/beep/domain/beep/presentation/dto/request/RoomsByFloorReq.java b/src/main/java/com/beep/beep/domain/beep/presentation/dto/request/RoomsByFloorReq.java new file mode 100644 index 0000000..2b4eb44 --- /dev/null +++ b/src/main/java/com/beep/beep/domain/beep/presentation/dto/request/RoomsByFloorReq.java @@ -0,0 +1,13 @@ +package com.beep.beep.domain.beep.presentation.dto.request; + +import com.beep.beep.global.common.dto.request.PageRequest; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class RoomsByFloorReq extends PageRequest { + + private Integer floor; + +} diff --git a/src/main/java/com/beep/beep/domain/beep/presentation/dto/request/RoomsByNameReq.java b/src/main/java/com/beep/beep/domain/beep/presentation/dto/request/RoomsByNameReq.java new file mode 100644 index 0000000..f3b2422 --- /dev/null +++ b/src/main/java/com/beep/beep/domain/beep/presentation/dto/request/RoomsByNameReq.java @@ -0,0 +1,9 @@ +package com.beep.beep.domain.beep.presentation.dto.request; + +import com.beep.beep.global.common.dto.request.PageRequest; +import lombok.Getter; + +@Getter +public class RoomsByNameReq extends PageRequest { + private String name; +} 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 index a119877..5de4f7f 100644 --- 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 @@ -7,6 +7,7 @@ @Getter @Builder @AllArgsConstructor public class RoomByFloorRes { + private Long idx; private String code; private String roomName; } 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 d99012b..da4fc70 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 @@ -8,9 +8,11 @@ import com.beep.beep.domain.beep.mapper.BeepMapper; import com.beep.beep.domain.beep.presentation.dto.AttendanceVO; import com.beep.beep.domain.beep.presentation.dto.RoomVO; +import com.beep.beep.domain.beep.presentation.dto.request.RoomsByFloorReq; import com.beep.beep.domain.beep.presentation.dto.request.InitializeAttendanceReq; 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.request.RoomsByNameReq; 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; @@ -59,12 +61,12 @@ public void exit(ExitRoomReq req){ attendanceRepository.save(beepMapper.toEdit(attendance)); } - public List roomListByName(String name){ - return roomRepository.roomListByName(name); + public List roomListByName(RoomsByNameReq req){ + return roomRepository.roomListByName(req); } - public List roomListByFloor(Integer floor){ - return roomRepository.roomListByFloor(floor); + public List roomListByFloor(RoomsByFloorReq req){ + return roomRepository.roomListByFloor(req); } public List attendanceByCode(String code){ @@ -76,7 +78,7 @@ private AttendanceVO findUserAttendance(){ } private void existsByCode(String code){ - if(!roomRepository.existsById(code)) + if(!roomRepository.existsByCode(code)) throw RoomNotExistsException.EXCEPTION; // room 존재 여부 확인 } diff --git a/src/main/java/com/beep/beep/domain/student/presentation/StudentController.java b/src/main/java/com/beep/beep/domain/student/presentation/StudentController.java index ad8a4af..0d723f7 100644 --- a/src/main/java/com/beep/beep/domain/student/presentation/StudentController.java +++ b/src/main/java/com/beep/beep/domain/student/presentation/StudentController.java @@ -14,6 +14,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; @@ -23,7 +24,9 @@ import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; +import java.util.HashMap; import java.util.List; +import java.util.Map; @RestController @RequiredArgsConstructor @@ -34,12 +37,16 @@ public class StudentController { private final StudentService studentService; @PostMapping("/id") - @ResponseStatus(HttpStatus.CREATED) +// @ResponseStatus(HttpStatus.CREATED) @Operation(summary = "학번 저장", description = "학번을 저장합니다. (student)") - public void saveStudentId( + public ResponseEntity> saveStudentId( @RequestBody SaveStudentIdReq req ){ studentService.saveStudentId(req); + Map response = new HashMap<>(); + response.put("status", "201"); + response.put("message","학번 저장에 성공했습니다."); + return ResponseEntity.ok(response); } @GetMapping("") @@ -58,26 +65,26 @@ public StudentByUserRes studentByUser() { @GetMapping("/cls") @Operation(summary = "반 조회", description = "학년 param로 반을 조회합니다.(teacher)") - public List clsListByGrade( + public ResponseEntity> clsListByGrade( @RequestParam int grade ){ - return studentService.clsListByGrade(grade); + return ResponseEntity.ok(studentService.clsListByGrade(grade)); } @GetMapping("/member") @Operation(summary = "반 구성원 조회", description = "학년-반으로 반 구성원 목록을 조회합니다. (teacher)") - public List studentListByGradeCls( + public ResponseEntity> studentListByGradeCls( @ModelAttribute StudentByGradeClsReq req ){ - return studentService.studentListByGradeCls(req); + return ResponseEntity.ok(studentService.studentListByGradeCls(req)); } @GetMapping("/name") @Operation(summary = "학생 조회", description = "학생이름으로 학생을 조회합니다.(teacher)") - public List studentListByName( + public ResponseEntity> studentListByName( @RequestParam String name ){ - return studentService.studentListByName(name); + return ResponseEntity.ok(studentService.studentListByName(name)); } } diff --git a/src/main/java/com/beep/beep/domain/teacher/presentation/TeacherController.java b/src/main/java/com/beep/beep/domain/teacher/presentation/TeacherController.java index 2220230..3967f8f 100644 --- a/src/main/java/com/beep/beep/domain/teacher/presentation/TeacherController.java +++ b/src/main/java/com/beep/beep/domain/teacher/presentation/TeacherController.java @@ -10,6 +10,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; @@ -47,8 +48,8 @@ public List teacherList( @GetMapping("/info") @Operation(summary = "선생님프로필 조회", description = "선생님프로필 조회합니다. (teacher)") - public TeacherByUserRes teacherByUser() { - return teacherService.teacherByUser(); + public ResponseEntity teacherByUser() { + return ResponseEntity.ok(teacherService.teacherByUser()); } diff --git a/src/main/java/com/beep/beep/domain/user/domain/repository/querydsl/UserRepoCustomImpl.java b/src/main/java/com/beep/beep/domain/user/domain/repository/querydsl/UserRepoCustomImpl.java index 8d87411..0cae563 100644 --- a/src/main/java/com/beep/beep/domain/user/domain/repository/querydsl/UserRepoCustomImpl.java +++ b/src/main/java/com/beep/beep/domain/user/domain/repository/querydsl/UserRepoCustomImpl.java @@ -13,7 +13,6 @@ import org.springframework.stereotype.Repository; import java.util.List; -import java.util.Optional; import static com.beep.beep.domain.beep.domain.QAttendance.attendance; import static com.beep.beep.domain.beep.domain.QRoom.room; diff --git a/src/main/java/com/beep/beep/domain/user/presentation/UserController.java b/src/main/java/com/beep/beep/domain/user/presentation/UserController.java index 6a15af8..e6db250 100644 --- a/src/main/java/com/beep/beep/domain/user/presentation/UserController.java +++ b/src/main/java/com/beep/beep/domain/user/presentation/UserController.java @@ -7,6 +7,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PutMapping; @@ -15,6 +16,9 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import java.util.HashMap; +import java.util.Map; + @RestController @RequestMapping(value = "/users") @RequiredArgsConstructor @@ -56,10 +60,14 @@ public UserIdRes findId( @GetMapping("/id-check") @Operation(summary = "아이디 확인", description = "아이디 존재여부 확인 (unauthenticated)") - public void studentIdCheck( + public ResponseEntity> studentIdCheck( @RequestParam String id ) { userService.idCheck(id); + Map response = new HashMap<>(); + response.put("status", "200"); + response.put("message","사용할 수 있는 아이디입니다."); + return ResponseEntity.ok(response); } } diff --git a/src/main/java/com/beep/beep/global/common/dto/Response.java b/src/main/java/com/beep/beep/global/common/dto/Response.java deleted file mode 100644 index 9ed14e7..0000000 --- a/src/main/java/com/beep/beep/global/common/dto/Response.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.beep.beep.global.common.dto; - -import lombok.Builder; -import lombok.Getter; -import org.springframework.http.HttpStatus; - -@Getter -@Builder -public class Response { - - private int status; - private String message; - - public static Response of(HttpStatus status, String message) { - return new Response(status.value(), message); - } - - public static Response ok(String message) { - return new Response(HttpStatus.OK.value(), message); - } - - public static Response created(String message) { - return new Response(HttpStatus.CREATED.value(), message); - } - - public static Response noContent(String message) { - return new Response(HttpStatus.NO_CONTENT.value(), message); - } -} \ No newline at end of file diff --git a/src/main/java/com/beep/beep/global/security/jwt/config/JwtProperties.java b/src/main/java/com/beep/beep/global/security/jwt/config/JwtProperties.java index 63bf350..0b16d82 100644 --- a/src/main/java/com/beep/beep/global/security/jwt/config/JwtProperties.java +++ b/src/main/java/com/beep/beep/global/security/jwt/config/JwtProperties.java @@ -17,5 +17,4 @@ public class JwtProperties { private String prefix; private Long accessExp; private Long refreshExp; - }