Skip to content

Commit

Permalink
fix: 반 상세조회 요구사항 변경 (#156)
Browse files Browse the repository at this point in the history
* fix: controller 단위 테스트 수정

* fix: mepper 메서드명 변경

* fix: 요구사항 변경으로 인한 controller 응답값 수정

* fix: memberMapper 메서드명 변경

* fix: memberMapper 메서드명 변경

* fix: dto 내부 클래스명 수정 및 mapper 수정

* test: mapper 단위 테스트

* fix: dto 이너 클래스명 변경

* fix: 칼럼 별명 수정

* test: workbookMapper 단위 테스트
  • Loading branch information
simhani1 committed Aug 19, 2023
1 parent 0db10f0 commit 6012b31
Show file tree
Hide file tree
Showing 18 changed files with 333 additions and 123 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public class ClassroomController {

private final AddClassroomUsecase addClassroomUsecase;
private final FindClassroomListUsecase findClassroomListUsecase;
private final FindClassroomDetailUsecase findClassroomDetailUsecase;
private final GetClassroomDetailInfoUsecase getClassroomDetailInfoUsecase;
private final UpdateClassroomInfoUsecase updateClassroomInfoUsecase;
private final DeleteClassroomUsecase deleteClassroomUsecase;
private final DeleteStudentUsecase deleteStudentUsecase;
Expand Down Expand Up @@ -55,7 +55,7 @@ public ResponseEntity<ClassroomResList> getClassroomListByTeacherId(
public ResponseEntity<ClassroomDetailRes> getClassroomDetailById(
@PathVariable("classroom-id") long id) {
ClassroomDetailDtoResponse classroomDetail =
findClassroomDetailUsecase.getClassroomDetailById(id);
getClassroomDetailInfoUsecase.getClassroomDetailById(id);
ClassroomDetailRes classroomDetailRes =
ClassroomMapper.classroomDetailToClassroomDetailRes(classroomDetail);
return ResponseEntity.ok(classroomDetailRes);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,25 @@ public static ClassroomDetailRes classroomDetailToClassroomDetailRes(
.name(detailDto.getInfo().getName())
.description(detailDto.getInfo().getDescription())
.grade(detailDto.getInfo().getGrade())
.studentIds(detailDto.getStudentIds())
.workbookIds(detailDto.getWorkbookIds())
.studentInfoList(
detailDto.getStudentInfoDtoList().stream()
.map(
studentInfo ->
ClassroomDetailRes.StudentInfo.builder()
.studentId(studentInfo.getStudentId())
.studentName(studentInfo.getStudentName())
.build())
.collect(Collectors.toList()))
.workbookInfoList(
detailDto.getWorkbookInfoDtoList().stream()
.map(
workbookInfo ->
ClassroomDetailRes.WorkbookInfo.builder()
.workbookId(workbookInfo.getWorkbookId())
.workbookName(
workbookInfo.getWorkbookName())
.build())
.collect(Collectors.toList()))
.build();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,22 @@ public class ClassroomDetailRes {
private String grade;

private long teacherId;
private List<Long> studentIds;
private List<Long> workbookIds;
private List<StudentInfo> studentInfoList;
private List<WorkbookInfo> workbookInfoList;

@Getter
@Builder
public static class StudentInfo {

private long studentId;
private String studentName;
}

@Getter
@Builder
public static class WorkbookInfo {

private long workbookId;
private String workbookName;
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
package com.ohdab.classroom.service;

import static com.ohdab.classroom.service.dto.ClassroomDetailDto.ClassroomDetailDtoResponse;
import static com.ohdab.classroom.service.helper.ClassroomHelperService.findExistingClassroom;

import com.ohdab.classroom.domain.Classroom;
import com.ohdab.classroom.exception.NoClassroomException;
import com.ohdab.classroom.repository.ClassroomRepository;
import com.ohdab.classroom.service.mapper.ClassroomDetailServiceMapper;
import com.ohdab.classroom.service.dto.ClassroomDetailDto;
import com.ohdab.classroom.service.usecase.GetClassroomDetailInfoUsecase;
import com.ohdab.core.exception.ExceptionEnum;
import com.ohdab.member.domain.student.studentid.StudentId;
import com.ohdab.member.repository.mapper.MemberMapper;
import com.ohdab.workbook.domain.workbookid.WorkbookId;
import com.ohdab.workbook.repository.mapper.WorkbookMapper;
import java.util.List;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
Expand All @@ -18,16 +23,47 @@
public class GetClassroomDetailInfoService implements GetClassroomDetailInfoUsecase {

private final ClassroomRepository classroomRepository;
private final MemberMapper memberMapper;
private final WorkbookMapper workbookMapper;

@Override
public ClassroomDetailDtoResponse getClassroomDetailById(long classroomId) {
Classroom classroom =
classroomRepository
.findById(classroomId)
.orElseThrow(
() ->
new NoClassroomException(
ExceptionEnum.NO_CLASSROOM.getMessage()));
return ClassroomDetailServiceMapper.classroomToClassroomDetail(classroom);
Classroom classroom = findExistingClassroom(classroomId, classroomRepository);
List<ClassroomDetailDto.StudentInfoDto> students =
memberMapper.findAllStudentForClassroomInfo(
getStudentIdList(classroom.getStudents()));
List<ClassroomDetailDto.WorkbookInfoDto> workbooks =
workbookMapper.findAllWorkbookForClassroomInfo(
getWorkbookIdList(classroom.getWorkbooks()));
return mapToClassroomDetailDtoResponse(classroom, students, workbooks);
}

private List<Long> getStudentIdList(List<StudentId> students) {
return students.stream().map(StudentId::getId).collect(Collectors.toList());
}

private List<Long> getWorkbookIdList(List<WorkbookId> workbookIds) {
return workbookIds.stream().map(WorkbookId::getId).collect(Collectors.toList());
}

private ClassroomDetailDtoResponse mapToClassroomDetailDtoResponse(
Classroom classroom,
List<ClassroomDetailDto.StudentInfoDto> students,
List<ClassroomDetailDto.WorkbookInfoDto> workbooks) {
return ClassroomDetailDtoResponse.builder()
.classroomId(classroom.getId())
.teacherId(classroom.getTeacher().getId())
.info(mapToClassRoomDetailInfo(classroom))
.studentInfoDtoList(students)
.workbookInfoDtoList(workbooks)
.build();
}

private ClassroomDetailDto.ClassroomDetailInfo mapToClassRoomDetailInfo(Classroom classroom) {
return ClassroomDetailDto.ClassroomDetailInfo.builder()
.name(classroom.getClassroomInfo().getName())
.description(classroom.getClassroomInfo().getDescription())
.grade(classroom.getClassroomInfo().getGrade().toString())
.build();
}
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
package com.ohdab.classroom.service.dto;

import java.util.List;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class ClassroomDetailDto {

@Getter
@Builder
public static class ClassroomDetailDtoInfo {
public static class ClassroomDetailInfo {
private String name;
private String description;
private String grade;
Expand All @@ -29,10 +30,26 @@ public static class ClassroomDetailDtoResponse {

private long teacherId;

private ClassroomDetailDtoInfo info;
private ClassroomDetailInfo info;

private List<Long> studentIds;
private List<StudentInfoDto> studentInfoDtoList;

private List<Long> workbookIds;
private List<WorkbookInfoDto> workbookInfoDtoList;
}

@Getter
@Builder
public static class StudentInfoDto {

private long studentId;
private String studentName;
}

@Getter
@Builder
public static class WorkbookInfoDto {

private long workbookId;
private String workbookName;
}
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,15 @@

import static com.ohdab.mistakenote.service.dto.GetAllMistakeNoteInfoDto.Response.StudentInfoDto;

import com.ohdab.classroom.service.dto.ClassroomDetailDto;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface MemberMapper {

List<StudentInfoDto> findAllStudent(List<Long> studentIdList);
List<StudentInfoDto> findAllStudentForMistakeNoteInfo(List<Long> studentIdList);

List<ClassroomDetailDto.StudentInfoDto> findAllStudentForClassroomInfo(
List<Long> studentIdList);
}
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,8 @@ public GetAllMistakeNoteInfoDto.Response getAllMistakeNoteInfo(long workbookId)
if (mistakeNotesIsEmpty(mistakeNotes)) {
throw new MistakeNoteIsEmptyException(ExceptionEnum.MISTAKE_NOTE_IS_EMPTY.getMessage());
}
List<StudentInfoDto> students = memberMapper.findAllStudent(getStudentIdList(mistakeNotes));
List<StudentInfoDto> students =
memberMapper.findAllStudentForMistakeNoteInfo(getStudentIdList(mistakeNotes));
List<AllMistakeNoteInfoDto> allMistakeNoteInfoDto =
mistakeRecordMapper.findAllMistakeNoteInfo(getMistakeNoteIdList(mistakeNotes));
return GetAllMistakeNoteInfoDto.Response.builder()
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.ohdab.workbook.repository.mapper;

import com.ohdab.classroom.service.dto.ClassroomDetailDto;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface WorkbookMapper {

List<ClassroomDetailDto.WorkbookInfoDto> findAllWorkbookForClassroomInfo(
List<Long> workbookIdList);
}
13 changes: 12 additions & 1 deletion src/main/resources/mapper/MemberMapper.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ohdab.member.repository.mapper.MemberMapper">
<select id="findAllStudent" parameterType="java.util.List" resultType="com.ohdab.mistakenote.service.dto.GetAllMistakeNoteInfoDto$Response$StudentInfoDto">
<select id="findAllStudentForMistakeNoteInfo" parameterType="java.util.List" resultType="com.ohdab.mistakenote.service.dto.GetAllMistakeNoteInfoDto$Response$StudentInfoDto">
select member_id as "studentId",
member_name as "name"
from MEMBER
Expand All @@ -12,4 +12,15 @@
</foreach>
order by member_id asc
</select>

<select id="findAllStudentForClassroomInfo" parameterType="java.util.List" resultType="com.ohdab.classroom.service.dto.ClassroomDetailDto$StudentInfoDto">
select member_id as "studentId",
member_name as "name"
from MEMBER
where member_id in
<foreach collection="list" item="student_id" index="index" separator="," open="(" close=")">
#{student_id}
</foreach>
order by member_id asc
</select>
</mapper>
15 changes: 15 additions & 0 deletions src/main/resources/mapper/WorkbookMapper.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ohdab.workbook.repository.mapper.WorkbookMapper">
<select id="findAllWorkbookForClassroomInfo" parameterType="java.util.List" resultType="com.ohdab.classroom.service.dto.ClassroomDetailDto$WorkbookInfoDto">
select workbook_id as "workbookId",
workbook_name as "workbookName",
from WORKBOOK
where workbook_id in
<foreach collection="list" item="workbook_id" index="index" separator="," open="(" close=")">
#{workbook_id}
</foreach>
order by workbook_id desc
</select>
</mapper>
Loading

0 comments on commit 6012b31

Please sign in to comment.