Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[fix] :: beep #40

Merged
merged 12 commits into from
Jul 9, 2024
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 @@ -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;
Expand All @@ -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
Expand All @@ -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<Map<String, String>> studentSignUp(
@RequestBody SignUpReq req
){
authService.studentSignUp(req);
Map<String, String> response = new HashMap<>();
response.put("status", "201");
response.put("message", "학생 회원가입 요청이 성공했습니다.");
return ResponseEntity.status(HttpStatus.CREATED).body(response);
}

@PostMapping("/sign-up/teacher")
Expand Down
7 changes: 7 additions & 0 deletions src/main/java/com/beep/beep/domain/beep/domain/Room.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@


public interface RoomRepository extends CrudRepository<Room,String> , RoomRepoCustom {
boolean existsByCode(String code);
}
Original file line number Diff line number Diff line change
@@ -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<RoomVO> roomListByName(String name);
List<RoomVO> roomListByName(RoomsByNameReq req);

List<RoomByFloorRes> roomListByFloor(Integer floor);
List<RoomByFloorRes> roomListByFloor(RoomsByFloorReq req);

}

Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -19,23 +21,28 @@ public class RoomRepoCustomImpl implements RoomRepoCustom {
private final JPAQueryFactory query;

@Override
public List<RoomVO> roomListByName(String name) {
public List<RoomVO> 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<RoomByFloorRes> roomListByFloor(Integer floor) {
public List<RoomByFloorRes> 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();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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;
Expand All @@ -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
Expand All @@ -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<Map<String, String>> initializeAttendance(
@RequestBody InitializeAttendanceReq request
) {
beepService.initializeAttendance(request);
Map<String, String> 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<Map<String, String>> enterRoom(
@RequestBody EnterRoomReq request
) {
beepService.enter(request);
Map<String, String> 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<Map<String, String>> exitRoom(
@RequestBody ExitRoomReq request
) {
beepService.exit(request);
Map<String, String> response = new HashMap<>();
response.put("status", "200");
response.put("message","퇴실 요청이 성공했습니다.");
return ResponseEntity.ok(response);
}

@GetMapping("/rooms/name")
@Operation(summary = "실 조회", description = "실 이름으로 실을 조회합니다.(teacher)")
public List<RoomVO> roomListByName(
@RequestParam String name
public ResponseEntity<List<RoomVO>> 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<RoomByFloorRes> roomListByFloor(
@RequestParam Integer floor
public ResponseEntity<List<RoomByFloorRes>> roomListByFloor(
@ModelAttribute RoomsByFloorReq req
){
return beepService.roomListByFloor(floor);
return ResponseEntity.ok().body(beepService.roomListByFloor(req));
}

@GetMapping("/attendances")
@Operation(summary = "출석 조회", description = "실 코드로 입실한 학생목록 조회합니다. (teacher)")
public List<AttendanceByCodeRes> attendanceByCode(
public ResponseEntity<List<AttendanceByCodeRes>> attendanceByCode(
@RequestParam String code
){
return beepService.attendanceByCode(code);
return ResponseEntity.ok().body(beepService.attendanceByCode(code));
}

}
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
Original file line number Diff line number Diff line change
@@ -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;

}
Original file line number Diff line number Diff line change
@@ -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;
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
@Getter
@Builder @AllArgsConstructor
public class RoomByFloorRes {
private Long idx;
private String code;
private String roomName;
}
12 changes: 7 additions & 5 deletions src/main/java/com/beep/beep/domain/beep/service/BeepService.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -59,12 +61,12 @@ public void exit(ExitRoomReq req){
attendanceRepository.save(beepMapper.toEdit(attendance));
}

public List<RoomVO> roomListByName(String name){
return roomRepository.roomListByName(name);
public List<RoomVO> roomListByName(RoomsByNameReq req){
return roomRepository.roomListByName(req);
}

public List<RoomByFloorRes> roomListByFloor(Integer floor){
return roomRepository.roomListByFloor(floor);
public List<RoomByFloorRes> roomListByFloor(RoomsByFloorReq req){
return roomRepository.roomListByFloor(req);
}

public List<AttendanceByCodeRes> attendanceByCode(String code){
Expand All @@ -76,7 +78,7 @@ private AttendanceVO findUserAttendance(){
}

private void existsByCode(String code){
if(!roomRepository.existsById(code))
if(!roomRepository.existsByCode(code))
throw RoomNotExistsException.EXCEPTION; // room 존재 여부 확인
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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
Expand All @@ -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<Map<String, String>> saveStudentId(
@RequestBody SaveStudentIdReq req
){
studentService.saveStudentId(req);
Map<String, String> response = new HashMap<>();
response.put("status", "201");
response.put("message","학번 저장에 성공했습니다.");
return ResponseEntity.ok(response);
}

@GetMapping("")
Expand All @@ -58,26 +65,26 @@ public StudentByUserRes studentByUser() {

@GetMapping("/cls")
@Operation(summary = "반 조회", description = "학년 param로 반을 조회합니다.(teacher)")
public List<ClsByGradeRes> clsListByGrade(
public ResponseEntity<List<ClsByGradeRes>> clsListByGrade(
@RequestParam int grade
){
return studentService.clsListByGrade(grade);
return ResponseEntity.ok(studentService.clsListByGrade(grade));
}

@GetMapping("/member")
@Operation(summary = "반 구성원 조회", description = "학년-반으로 반 구성원 목록을 조회합니다. (teacher)")
public List<StudentByGradeClsRes> studentListByGradeCls(
public ResponseEntity<List<StudentByGradeClsRes>> studentListByGradeCls(
@ModelAttribute StudentByGradeClsReq req
){
return studentService.studentListByGradeCls(req);
return ResponseEntity.ok(studentService.studentListByGradeCls(req));
}

@GetMapping("/name")
@Operation(summary = "학생 조회", description = "학생이름으로 학생을 조회합니다.(teacher)")
public List<StudentByNameRes> studentListByName(
public ResponseEntity<List<StudentByNameRes>> studentListByName(
@RequestParam String name
){
return studentService.studentListByName(name);
return ResponseEntity.ok(studentService.studentListByName(name));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -47,8 +48,8 @@ public List<TeacherRes> teacherList(

@GetMapping("/info")
@Operation(summary = "선생님프로필 조회", description = "선생님프로필 조회합니다. (teacher)")
public TeacherByUserRes teacherByUser() {
return teacherService.teacherByUser();
public ResponseEntity<TeacherByUserRes> teacherByUser() {
return ResponseEntity.ok(teacherService.teacherByUser());
}


Expand Down
Loading
Loading