Skip to content

Commit

Permalink
Feat: 트레이너가 학생 수업 등록/취소 시 수강권 증감 추가, 식단기록/운동기록 댓글 필드명 수정
Browse files Browse the repository at this point in the history
  • Loading branch information
ChaeRin-Im committed May 29, 2024
1 parent 88bac9a commit edfb881
Show file tree
Hide file tree
Showing 6 changed files with 69 additions and 25 deletions.
72 changes: 58 additions & 14 deletions src/main/java/com/tobe/healthy/common/aop/CourseAspect.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import com.tobe.healthy.course.application.CourseService;
import com.tobe.healthy.course.domain.dto.in.CourseUpdateCommand;
import com.tobe.healthy.schedule.domain.dto.out.CommandCancelStudentScheduleResult;
import com.tobe.healthy.schedule.domain.dto.out.CommandRegisterScheduleByStudentResult;
import com.tobe.healthy.schedule.domain.dto.out.ScheduleIdInfo;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
Expand Down Expand Up @@ -37,43 +39,85 @@ private void cancelMemberSchedule() {}
@Pointcut("execution(* com.tobe.healthy.schedule.application.CommonScheduleService.reserveSchedule(..))")
private void reserveSchedule() {}

@Pointcut("execution(* com.tobe.healthy.schedule.application.TrainerScheduleCommandService.registerScheduleForStudent(..))")
private void registerScheduleForStudent() {}

@Pointcut("execution(* com.tobe.healthy.schedule.application.TrainerScheduleCommandService.cancelTrainerSchedule(..))")
private void cancelTrainerSchedule() {}

/*
* 수업 취소
* 학생이 수업 취소
*/
@AfterReturning(value = "cancelMemberSchedule()", returning = "returnValue")
public void updateCourseWhenCancelSchedule(JoinPoint joinPoint, Object returnValue) {
public void updateCourseByStudent(JoinPoint joinPoint, Object returnValue) {
ScheduleIdInfo scheduleIdInfo = ((ScheduleIdInfo) returnValue);
Long scheduleId = scheduleIdInfo.getScheduleId();
Long studentId = scheduleIdInfo.getStudentId();
Long waitingStudentId = scheduleIdInfo.getWaitingStudentId();
Long trainerId = scheduleIdInfo.getTrainerId();
CourseUpdateCommand command;

//수업 취소자 수강권 +1
CourseService courseService = courseServiceObjectProvider.getObject();
command = CourseUpdateCommand.create(studentId, PLUS, RESERVATION_CANCEL, ONE_LESSON);
courseService.updateCourseByMember(scheduleId, trainerId, command);
updateCourse(studentId, scheduleId, trainerId, waitingStudentId);
}

//수업 대기자 수강권 -1
if(!ObjectUtils.isEmpty(waitingStudentId)){
command = CourseUpdateCommand.create(waitingStudentId, MINUS, RESERVATION, ONE_LESSON);
courseService.updateCourseByMember(scheduleId, trainerId, command);
}
/*
* 트레이너가 학생의 수업 취소
*/
@AfterReturning(value = "cancelTrainerSchedule()", returning = "returnValue")
public void updateCourseByTrainer(JoinPoint joinPoint, Object returnValue) {
CommandCancelStudentScheduleResult result = ((CommandCancelStudentScheduleResult) returnValue);
Long scheduleId = result.getScheduleId();
Long studentId = result.getStudentId();
Long waitingStudentId = result.getWaitingStudentId();
Long trainerId = result.getTrainerId();

updateCourse(studentId, scheduleId, trainerId, waitingStudentId);
}

/*
* 수업 예약
* 학생이 수업 예약
*/
@AfterReturning(value = "reserveSchedule()", returning = "returnValue")
public void minusCourseWhenReserveSchedule(JoinPoint joinPoint, Object returnValue) {
public void minusCourseByStudent(JoinPoint joinPoint, Object returnValue) {
ScheduleIdInfo scheduleIdInfo = ((ScheduleIdInfo) returnValue);
Long scheduleId = scheduleIdInfo.getScheduleId();
Long studentId = scheduleIdInfo.getStudentId();
Long trainerId = scheduleIdInfo.getTrainerId();

minusCourse(studentId, scheduleId, trainerId);
}

/*
* 트레이너가 학생의 수업 예약
*/
@AfterReturning(value = "registerScheduleForStudent()", returning = "returnValue")
public void minusCourseByTrainer(JoinPoint joinPoint, Object returnValue) {
CommandRegisterScheduleByStudentResult result = ((CommandRegisterScheduleByStudentResult) returnValue);
Long scheduleId = result.getScheduleId();
Long studentId = result.getStudentId();
Long trainerId = result.getTrainerId();

minusCourse(studentId, scheduleId, trainerId);
}

private void minusCourse(Long studentId, Long scheduleId, Long trainerId) {
CourseService courseService = courseServiceObjectProvider.getObject();
CourseUpdateCommand command = CourseUpdateCommand.create(studentId, MINUS, RESERVATION, ONE_LESSON);
courseService.updateCourseByMember(scheduleId, trainerId, command);
}

private void updateCourse(Long studentId, Long scheduleId, Long trainerId, Long waitingStudentId) {
CourseUpdateCommand command;

//수업 취소자 수강권 +1
CourseService courseService = courseServiceObjectProvider.getObject();
command = CourseUpdateCommand.create(studentId, PLUS, RESERVATION_CANCEL, ONE_LESSON);
courseService.updateCourseByMember(scheduleId, trainerId, command);

//수업 대기자 수강권 -1
if(!ObjectUtils.isEmpty(waitingStudentId)){
command = CourseUpdateCommand.create(waitingStudentId, MINUS, RESERVATION, ONE_LESSON);
courseService.updateCourseByMember(scheduleId, trainerId, command);
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ private List<DietCommentDto> settingReplyFormat(List<DietComment> comments) {

Map<Long, List<DietCommentDto>> childByGroupList = child.stream()
.collect(Collectors.groupingBy(DietCommentDto::getParentId, Collectors.toList()));
return parent.stream().peek(p -> p.setReplies(childByGroupList.get(p.getCommentId()))).toList();
return parent.stream().peek(p -> p.setReplies(childByGroupList.get(p.getId()))).toList();
}

public void addComment(Long dietId, DietCommentAddCommand command, Member member) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
@AllArgsConstructor
public class DietCommentDto {

private Long commentId;
private Long id;
private CommentMemberDto member;
private String content;
private LocalDateTime createdAt;
Expand All @@ -32,7 +32,7 @@ public class DietCommentDto {

public static DietCommentDto from(DietComment comment) {
return DietCommentDto.builder()
.commentId(comment.getCommentId())
.id(comment.getCommentId())
.member(CommentMemberDto.from(comment.getMember()))
.content(comment.getDelYn() ? "삭제된 댓글입니다." : comment.getContent())
.createdAt(comment.getCreatedAt())
Expand All @@ -45,7 +45,7 @@ public static DietCommentDto from(DietComment comment) {

public static DietCommentDto create(DietComment comment, MemberProfile memberProfile) {
return DietCommentDto.builder()
.commentId(comment.getCommentId())
.id(comment.getCommentId())
.member(CommentMemberDto.create(comment.getMember(), memberProfile))
.content(comment.getDelYn() ? "삭제된 댓글입니다." : comment.getContent())
.createdAt(comment.getCreatedAt())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public List<WorkoutHistoryCommentDto> getCommentsByWorkoutHistoryId(Long workout

Map<Long, List<WorkoutHistoryCommentDto>> childByGroupList = child.stream()
.collect(Collectors.groupingBy(WorkoutHistoryCommentDto::getParentId, Collectors.toList()));
return parent.stream().peek(p -> p.setReplies(childByGroupList.get(p.getCommentId()))).toList();
return parent.stream().peek(p -> p.setReplies(childByGroupList.get(p.getId()))).toList();
}

public void deleteComment(Member member, Long workoutHistoryId, Long commentId) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,20 @@
@Builder
public class CommentMemberDto {

private Long id;
private Long memberId;
private String name;
private String fileUrl;

public static CommentMemberDto from(Member member) {
return CommentMemberDto.builder()
.id(member.getId())
.memberId(member.getId())
.name(member.getName())
.build();
}

public static CommentMemberDto create(Member member, MemberProfile memberProfile) {
return CommentMemberDto.builder()
.id(member.getId())
.memberId(member.getId())
.name(member.getName())
.fileUrl(memberProfile.getFileUrl())
.build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
@AllArgsConstructor
public class WorkoutHistoryCommentDto {

private Long commentId;
private Long id;
private CommentMemberDto member;
private String content;
private LocalDateTime createdAt;
Expand All @@ -30,7 +30,7 @@ public class WorkoutHistoryCommentDto {

public static WorkoutHistoryCommentDto from(WorkoutHistoryComment comment) {
return WorkoutHistoryCommentDto.builder()
.commentId(comment.getCommentId())
.id(comment.getCommentId())
.member(CommentMemberDto.from(comment.getMember()))
.content(comment.getDelYn() ? "삭제된 댓글입니다." : comment.getContent())
.createdAt(comment.getCreatedAt())
Expand All @@ -43,7 +43,7 @@ public static WorkoutHistoryCommentDto from(WorkoutHistoryComment comment) {

public static WorkoutHistoryCommentDto create(WorkoutHistoryComment comment, MemberProfile memberProfile) {
return WorkoutHistoryCommentDto.builder()
.commentId(comment.getCommentId())
.id(comment.getCommentId())
.member(CommentMemberDto.create(comment.getMember(), memberProfile))
.content(comment.getDelYn() ? "삭제된 댓글입니다." : comment.getContent())
.createdAt(comment.getCreatedAt())
Expand Down

0 comments on commit edfb881

Please sign in to comment.