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/#153] 반 상세조회 요구사항 변경 #156

Merged
merged 10 commits into from
Aug 19, 2023
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
Loading