Skip to content

Commit

Permalink
Merge pull request #78 from DSM-Repo/refactor-project-#2
Browse files Browse the repository at this point in the history
pr: 계층 분리
  • Loading branch information
ori0o0p authored Aug 25, 2024
2 parents bebb403 + ffb43ba commit 8dc7c43
Show file tree
Hide file tree
Showing 137 changed files with 1,599 additions and 1,533 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import com.example.whopper.interfaces.auth.dto.response.TokenResponse;
import com.example.whopper.common.exception.auth.InvalidUserException;
import com.example.whopper.common.exception.auth.PasswordMismatchException;
import com.example.whopper.application.resume.component.CreateDocumentComponent;
import com.example.whopper.application.resume.component.CreateResumeComponent;
import com.example.whopper.domain.file.DefaultProfileImageProperties;
import com.example.whopper.domain.major.DefaultMajorFacade;
import com.example.whopper.domain.student.StudentMongoRepository;
Expand All @@ -30,7 +30,7 @@ class StudentLoginService implements StudentLoginUseCase {
private final XquareClient xquareClient;
private final PasswordEncoder passwordEncoder;
private final DefaultMajorFacade defaultMajorFacade;
private final CreateDocumentComponent createDocumentComponent;
private final CreateResumeComponent createResumeComponent;
private final DefaultProfileImageProperties defaultProfileImageProperties;

@Override
Expand Down Expand Up @@ -64,7 +64,7 @@ private TokenResponse registerAndLoginNewStudent(LoginRequest request) {
if(!xquareUserResponse.getUserRole().equals("STU")) throw InvalidUserException.EXCEPTION;
StudentEntity newStudent = createAndSaveNewStudent(xquareUserResponse);

createDocumentComponent.create(newStudent);
createResumeComponent.create(newStudent);
return getTokenResponse(newStudent.getId());
}

Expand All @@ -73,14 +73,16 @@ private TokenResponse getTokenResponse(String id) {
}

private StudentEntity createAndSaveNewStudent(XquareUserResponse xquareUserResponse) {
var defaultMajor = defaultMajorFacade.getDefaultMajor();

return studentMongoRepository.save(
StudentEntity.builder()
.accountId(xquareUserResponse.getAccountId())
.password(xquareUserResponse.getPassword())
.name(xquareUserResponse.getName())
.classInfo(xquareUserResponse.toClassInfo())
.profileImagePath(defaultProfileImageProperties.imageUrl())
.major(defaultMajorFacade.getDefaultMajor())
.major(new StudentEntity.Major(defaultMajor.id(), defaultMajor.name()))
.build());
}
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
package com.example.whopper.application.feedback.service;

import com.example.whopper.application.feedback.usecase.AcceptFeedbackUseCase;
import com.example.whopper.domain.feedback.FeedbackMongoRepository;
import com.example.whopper.domain.feedback.FeedbackRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class AcceptFeedbackService implements AcceptFeedbackUseCase {
private final FeedbackMongoRepository feedbackMongoRepository;
private final FeedbackRepository feedbackRepository;

@Override
public void accept(String id) {
feedbackMongoRepository.deleteById(id);
feedbackRepository.deleteById(id);
}
}
Original file line number Diff line number Diff line change
@@ -1,41 +1,38 @@
package com.example.whopper.application.feedback.service;

import com.example.whopper.domain.resume.DocumentRepository;
import com.example.whopper.domain.resume.DocumentEntity;
import com.example.whopper.domain.resume.element.DocumentStatus;
import com.example.whopper.common.exception.resume.DocumentIllegalStatusException;
import com.example.whopper.common.exception.resume.DocumentNotFoundException;
import com.example.whopper.domain.feedback.FeedbackModel;
import com.example.whopper.domain.feedback.FeedbackRepository;
import com.example.whopper.domain.resume.ResumeRepository;
import com.example.whopper.common.exception.resume.ResumeIllegalStatusException;
import com.example.whopper.common.exception.resume.ResumeNotFoundException;
import com.example.whopper.application.feedback.usecase.AddFeedbackUseCase;
import com.example.whopper.domain.feedback.FeedbackMongoRepository;
import com.example.whopper.domain.feedback.FeedbackEntity;
import com.example.whopper.interfaces.feedback.dto.FeedbackRequest;
import com.example.whopper.interfaces.feedback.dto.FeedbackElementDto;
import com.example.whopper.interfaces.feedback.dto.request.FeedbackRequest;
import com.example.whopper.application.teacher.component.TeacherComponent;
import com.example.whopper.interfaces.resume.dto.ResumeElementDto;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class AddFeedbackService implements AddFeedbackUseCase {

private final FeedbackMongoRepository feedbackMongoRepository;
private final FeedbackRepository feedbackRepository;

private final DocumentRepository documentRepository;
private final ResumeRepository resumeRepository;

private final TeacherComponent teacherComponent;

@Override
public void addFeedback(FeedbackRequest request) {
DocumentEntity document = documentRepository.findById(request.documentId())
.orElseThrow(()-> DocumentNotFoundException.EXCEPTION);

if(document.getStatus() != DocumentStatus.SUBMITTED) throw DocumentIllegalStatusException.EXCEPTION;

feedbackMongoRepository.save(
FeedbackEntity.builder()
.comment(request.comment())
.type(request.type())
.documentId(document.getId())
.teacher(teacherComponent.currentTeacher())
.build());
final var resume = resumeRepository.findById(request.resumeId())
.orElseThrow(()-> ResumeNotFoundException.EXCEPTION);

if(resume.status() != ResumeElementDto.Status.SUBMITTED) throw ResumeIllegalStatusException.EXCEPTION;

final var teacher = teacherComponent.currentTeacher();

feedbackRepository.save(new FeedbackModel(null, request.comment(), FeedbackElementDto.Type.valueOf(request.type()), request.resumeId(),
FeedbackElementDto.Status.PENDING, false, new FeedbackElementDto.Writer(teacher.getId(), teacher.getName())));
}
}
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
package com.example.whopper.application.feedback.service;

import com.example.whopper.application.feedback.usecase.ConfirmFeedbackUseCase;
import com.example.whopper.domain.feedback.FeedbackMongoRepository;
import com.example.whopper.common.exception.feedback.FeedbackNotFoundException;
import com.example.whopper.common.error.exception.ForbiddenException;
import com.example.whopper.application.student.component.CurrentStudent;
import com.example.whopper.domain.feedback.FeedbackRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class ConfirmFeedbackService implements ConfirmFeedbackUseCase {
private final FeedbackMongoRepository feedbackMongoRepository;
private final FeedbackRepository feedbackRepository;
private final CurrentStudent currentStudent;

@Override
public void confirm(String id) {
var feedback = feedbackMongoRepository.findById(id)
final var feedback = feedbackRepository.findById(id)
.orElseThrow(() -> FeedbackNotFoundException.EXCEPTION);

var currentDocument = currentStudent.getDocument();
final var resume = currentStudent.getResume();

if (!currentDocument.getId().equals(feedback.getDocumentId())) {
if (!resume.id().equals(feedback.id())) {
throw ForbiddenException.EXCEPTION;
}

feedback.confirmed();
feedbackMongoRepository.save(feedback);
feedback.confirm();
feedbackRepository.save(feedback);
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
package com.example.whopper.application.feedback.service;

import com.example.whopper.application.feedback.usecase.DeleteFeedbackUseCase;
import com.example.whopper.domain.feedback.FeedbackMongoRepository;
import com.example.whopper.domain.feedback.FeedbackRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class DeleteFeedbackService implements DeleteFeedbackUseCase {
private final FeedbackMongoRepository feedbackMongoRepository;
private final FeedbackRepository feedbackRepository;

@Override
public void deleteFeedback(String feedbackId) {
feedbackMongoRepository.deleteById(feedbackId);
feedbackRepository.deleteById(feedbackId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,45 +2,44 @@

import com.example.whopper.application.feedback.usecase.FindFeedbackUseCase;
import com.example.whopper.application.teacher.component.TeacherComponent;
import com.example.whopper.domain.feedback.FeedbackEntity;
import com.example.whopper.domain.feedback.FeedbackMongoRepository;
import com.example.whopper.domain.resume.DocumentEntity;
import com.example.whopper.global.utils.DataResponseInfo;
import com.example.whopper.common.http.response.DataResponseInfo;
import com.example.whopper.application.student.component.CurrentStudent;
import com.example.whopper.interfaces.feedback.dto.FeedbackResponse;
import com.example.whopper.domain.feedback.FeedbackModel;
import com.example.whopper.domain.feedback.FeedbackRepository;
import com.example.whopper.interfaces.feedback.dto.FeedbackElementDto;
import com.example.whopper.interfaces.feedback.dto.response.FeedbackResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Stream;

@Service
@RequiredArgsConstructor
public class FindFeedbackService implements FindFeedbackUseCase {

private final CurrentStudent currentStudent;
private final FeedbackMongoRepository feedbackMongoRepository;
private final FeedbackRepository feedbackRepository;
private final TeacherComponent teacherComponent;

@Override
public DataResponseInfo<FeedbackResponse.StudentResponse> getCurrentStudentFeedbackList() {
DocumentEntity document = currentStudent.getDocument();
final var resume = currentStudent.getResume();

List<FeedbackResponse.StudentResponse> feedbackList = getFeedbackResponsesByDocumentId(document.getId())
.stream()
final var feedbackList = getFeedbackResponsesByResumeId(resume.id())
.map(FeedbackResponse.StudentResponse::fromFeedback)
.toList();

return DataResponseInfo.of(feedbackList);
}

private List<FeedbackEntity> getFeedbackResponsesByDocumentId(String documentId) {
return feedbackMongoRepository.findAllByDocumentIdAndStatus(documentId, FeedbackEntity.Status.PENDING);
private Stream<FeedbackModel> getFeedbackResponsesByResumeId(String resumeId) {
return feedbackRepository.findAllByResumeIdAndStatus(resumeId, FeedbackElementDto.Status.PENDING);
}

@Override
public DataResponseInfo<FeedbackResponse.TeacherResponse> getFeedbackListByDocumentId(String documentId) {
public DataResponseInfo<FeedbackResponse.TeacherResponse> getFeedbackListByresumeId(String resumeId) {
final var currentTeacher = teacherComponent.currentTeacher();
final var feedbackList = feedbackMongoRepository.findAllByDocumentIdAndTeacherId(documentId, currentTeacher.getId())
final var feedbackList = feedbackRepository.findAllByResumeIdAndWriterId(resumeId, currentTeacher.getId())
.map(FeedbackResponse.TeacherResponse::fromFeedback)
.toList();

Expand All @@ -49,9 +48,9 @@ public DataResponseInfo<FeedbackResponse.TeacherResponse> getFeedbackListByDocum

@Override
public DataResponseInfo<FeedbackResponse.TeacherResponse> getFeedbacksWrittenByTeacher() {
var teacher = teacherComponent.currentTeacher();
final var teacher = teacherComponent.currentTeacher();

var result = feedbackMongoRepository.findAllByTeacherId(teacher.getId())
final var result = feedbackRepository.findAllByWriterId(teacher.getId())
.map(FeedbackResponse.TeacherResponse::fromFeedback)
.toList();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,22 @@

import com.example.whopper.application.feedback.usecase.RejectFeedbackUseCase;
import com.example.whopper.common.exception.feedback.FeedbackNotFoundException;
import com.example.whopper.domain.feedback.FeedbackMongoRepository;
import com.example.whopper.domain.feedback.FeedbackRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class RejectFeedbackService implements RejectFeedbackUseCase {
private final FeedbackMongoRepository feedbackMongoRepository;
private final FeedbackRepository feedbackRepository;

@Override
public void reject(String id) {
var feedback = feedbackMongoRepository.findById(id)
final var feedback = feedbackRepository.findById(id)
.orElseThrow(() -> FeedbackNotFoundException.EXCEPTION);

feedback.rejected();
feedback.reject();

feedbackMongoRepository.save(feedback);
feedbackRepository.save(feedback);
}
}
Original file line number Diff line number Diff line change
@@ -1,28 +1,24 @@
package com.example.whopper.application.feedback.service;

import com.example.whopper.application.feedback.usecase.UpdateFeedbackUseCase;
import com.example.whopper.domain.feedback.FeedbackMongoRepository;
import com.example.whopper.domain.feedback.FeedbackEntity;
import com.example.whopper.interfaces.feedback.dto.UpdateFeedbackRequest;
import com.example.whopper.domain.feedback.FeedbackRepository;
import com.example.whopper.interfaces.feedback.dto.request.UpdateFeedbackRequest;
import com.example.whopper.common.exception.feedback.FeedbackNotFoundException;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
@RequiredArgsConstructor
public class UpdateFeedbackService implements UpdateFeedbackUseCase {

private final FeedbackMongoRepository feedbackMongoRepository;

private final FeedbackRepository feedbackRepository;

@Override
@Transactional
public void updateFeedback(String id, UpdateFeedbackRequest request) {
FeedbackEntity feedback = feedbackMongoRepository.findById(id)
final var feedback = feedbackRepository.findById(id)
.orElseThrow(()-> FeedbackNotFoundException.EXCEPTION);

feedback.updateFeedback(request.comment());
feedbackMongoRepository.save(feedback);
feedback.update(request.comment());
feedbackRepository.save(feedback);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.example.whopper.application.feedback.usecase;

import com.example.whopper.interfaces.feedback.dto.FeedbackRequest;
import com.example.whopper.interfaces.feedback.dto.request.FeedbackRequest;

public interface AddFeedbackUseCase {
void addFeedback(FeedbackRequest request);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package com.example.whopper.application.feedback.usecase;

import com.example.whopper.interfaces.feedback.dto.FeedbackResponse;
import com.example.whopper.global.utils.DataResponseInfo;
import com.example.whopper.interfaces.feedback.dto.response.FeedbackResponse;
import com.example.whopper.common.http.response.DataResponseInfo;

public interface FindFeedbackUseCase {
DataResponseInfo<FeedbackResponse.StudentResponse> getCurrentStudentFeedbackList();
DataResponseInfo<FeedbackResponse.TeacherResponse> getFeedbackListByDocumentId(String documentId);
DataResponseInfo<FeedbackResponse.TeacherResponse> getFeedbackListByresumeId(String resumeId);
DataResponseInfo<FeedbackResponse.TeacherResponse> getFeedbacksWrittenByTeacher();
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.example.whopper.application.feedback.usecase;

import com.example.whopper.interfaces.feedback.dto.UpdateFeedbackRequest;
import com.example.whopper.interfaces.feedback.dto.request.UpdateFeedbackRequest;

public interface UpdateFeedbackUseCase {
void updateFeedback(String id, UpdateFeedbackRequest request);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ private String getExtension(String filename) {
}

private String generateFileKey(ImageType imageType) {
String folder = imageType == ImageType.PROFILE ? awsS3Properties.profileFolder() : awsS3Properties.documentFolder();
String folder = imageType == ImageType.PROFILE ? awsS3Properties.profileFolder() : awsS3Properties.resumeFolder();
return folder + "/" + UUID.randomUUID();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

import com.example.whopper.application.library.usecase.CreateLibraryUseCase;
import com.example.whopper.domain.library.LibraryMongoRepository;
import com.example.whopper.domain.library.DocumentIndex;
import com.example.whopper.domain.library.ResumeIndex;
import com.example.whopper.domain.library.LibraryEntity;
import com.example.whopper.domain.library.type.AccessRight;
import com.example.whopper.global.utils.DataResponseInfo;
import com.example.whopper.common.http.response.DataResponseInfo;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

Expand All @@ -17,7 +17,7 @@ public class CreateLibraryService implements CreateLibraryUseCase {

private final LibraryMongoRepository libraryMongoRepository;

public void createLibrary(Integer grade, String filePath, DataResponseInfo<DocumentIndex> index) {
public void createLibrary(Integer grade, String filePath, DataResponseInfo<ResumeIndex> index) {
LocalDateTime now = LocalDateTime.now();

libraryMongoRepository.save(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import com.example.whopper.interfaces.library.dto.response.LibraryDetailResponse;
import com.example.whopper.interfaces.library.dto.response.LibraryResponse;
import com.example.whopper.common.exception.library.LibraryNotFoundException;
import com.example.whopper.global.utils.DataResponseInfo;
import com.example.whopper.common.http.response.DataResponseInfo;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

Expand Down
Loading

0 comments on commit 8dc7c43

Please sign in to comment.