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

[BE] 모임 삭제 #85

Merged
merged 14 commits into from
May 2, 2024
Merged
Show file tree
Hide file tree
Changes from 12 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 @@ -42,7 +42,7 @@ public void logout(final HttpServletRequest request) {
public void signUp(final MemberRegisterRequest memberRegisterRequest,
final HttpServletRequest request) {
universityFinder.checkUniversityIdIsPresent(memberRegisterRequest.universityId());
departmentFinder.isDepartmentAssociatedWithUniversity(memberRegisterRequest.universityId(), memberRegisterRequest.departmentId());
departmentFinder.validateBelongToUniversity(memberRegisterRequest.universityId(), memberRegisterRequest.departmentId());
memberFinder.validateEmailNotExists(memberRegisterRequest.email());
authManager.signUp(memberRegisterRequest, request);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
package moim_today.application.member;

import moim_today.domain.member.MemberSession;
import moim_today.dto.member.MemberProfileResponse;
import moim_today.dto.member.PasswordRecoverRequest;
import moim_today.dto.member.PasswordUpdateRequest;
import moim_today.dto.member.ProfileUpdateRequest;
import moim_today.dto.member.*;
import org.springframework.web.multipart.MultipartFile;

public interface MemberService {
Expand All @@ -17,5 +14,5 @@ public interface MemberService {

void updateProfile(final long memberId, final long universityId, final ProfileUpdateRequest profileUpdateRequest);

void updateProfileImage(final long memberId, final MultipartFile file);
ProfileImageResponse uploadProfileImage(final long memberId, final MultipartFile file);
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
package moim_today.application.member;

import moim_today.domain.member.MemberSession;
import moim_today.dto.file.FileInfoResponse;
import moim_today.dto.member.MemberProfileResponse;
import moim_today.dto.member.PasswordRecoverRequest;
import moim_today.dto.member.PasswordUpdateRequest;
import moim_today.dto.member.ProfileUpdateRequest;
import moim_today.dto.member.*;
import moim_today.implement.file.FileUploader;
import moim_today.implement.member.MemberFinder;
import moim_today.implement.member.MemberUpdater;
Expand Down Expand Up @@ -60,8 +56,8 @@ public void updateProfile(final long memberId,
}

@Override
public void updateProfileImage(final long memberId, final MultipartFile file) {
public ProfileImageResponse uploadProfileImage(final long memberId, final MultipartFile file) {
String imageUrl = fileUploader.uploadFile(PROFILE_IMAGE.value(), file);
memberUpdater.updateProfileImageUrl(memberId, imageUrl);
return ProfileImageResponse.from(imageUrl);
}
}
Original file line number Diff line number Diff line change
@@ -1,19 +1,21 @@
package moim_today.application.moim;

import moim_today.dto.moim.*;
import moim_today.dto.moim.MoimAppendRequest;
import moim_today.dto.moim.MoimDetailResponse;
import moim_today.dto.moim.MoimUpdateRequest;
import moim_today.dto.moim.MoimImageResponse;
import org.springframework.web.multipart.MultipartFile;

public interface MoimService {

void createPublicMoim(final long memberId, final long universityId,
final PublicMoimAppendRequest publicMoimAppendRequest);
void createMoim(final long memberId, final long universityId,
final MoimAppendRequest moimAppendRequest);

void createPrivateMoim(final long memberId, final long universityId,
final PrivateMoimAppendRequest privateMoimAppendRequest);

UploadMoimImageResponse uploadMoimImage(final MultipartFile file);
MoimImageResponse uploadMoimImage(final MultipartFile file);

MoimDetailResponse getMoimDetail(final long moimId);

void updateMoim(final long memberId, final MoimUpdateRequest moimUpdateRequest);

void deleteMoim(final long memberId, final long moimId);
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,27 @@
package moim_today.application.moim;

import moim_today.dto.moim.*;
import moim_today.dto.moim.MoimAppendRequest;
import moim_today.dto.moim.MoimDetailResponse;
import moim_today.dto.moim.MoimImageResponse;
import moim_today.dto.moim.MoimUpdateRequest;
import moim_today.implement.file.FileUploader;
import moim_today.implement.moim.MoimAppender;
import moim_today.implement.moim.MoimFinder;
import moim_today.implement.moim.MoimUpdater;
import moim_today.implement.meeting.joined_meeting.JoinedMeetingRemover;
import moim_today.implement.meeting.meeting.MeetingFinder;
import moim_today.implement.moim.joined_moim.JoinedMoimAppender;
import moim_today.implement.moim.joined_moim.JoinedMoimRemover;
import moim_today.implement.moim.moim.MoimAppender;
import moim_today.implement.moim.moim.MoimFinder;
import moim_today.implement.moim.moim.MoimRemover;
import moim_today.implement.moim.moim.MoimUpdater;
import moim_today.implement.schedule.ScheduleRemover;
import moim_today.implement.todo.TodoRemover;
import moim_today.persistence.entity.moim.moim.MoimJpaEntity;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

import static moim_today.global.constant.FileTypeConstant.MOIM_IMAGE;

@Service
Expand All @@ -18,33 +31,49 @@ public class MoimServiceImpl implements MoimService{
private final FileUploader fileUploader;
private final MoimFinder moimFinder;
private final MoimUpdater moimUpdater;
private final MoimRemover moimRemover;
private final JoinedMoimAppender joinedMoimAppender;
private final MeetingFinder meetingFinder;
private final JoinedMeetingRemover joinedMeetingRemover;
private final TodoRemover todoRemover;
private final JoinedMoimRemover joinedMoimRemover;
private final ScheduleRemover scheduleRemover;

public MoimServiceImpl(final MoimAppender moimAppender,
final FileUploader fileUploader,
final MoimFinder moimFinder,
final MoimUpdater moimUpdater) {
final MoimUpdater moimUpdater,
final MoimRemover moimRemover,
final JoinedMoimAppender joinedMoimAppender,
final MeetingFinder meetingFinder,
final JoinedMeetingRemover joinedMeetingRemover,
final TodoRemover todoRemover,
final JoinedMoimRemover joinedMoimRemover,
final ScheduleRemover scheduleRemover) {
this.moimAppender = moimAppender;
this.fileUploader = fileUploader;
this.moimFinder = moimFinder;
this.moimUpdater = moimUpdater;
this.moimRemover = moimRemover;
this.joinedMoimAppender = joinedMoimAppender;
this.meetingFinder = meetingFinder;
this.joinedMeetingRemover = joinedMeetingRemover;
this.todoRemover = todoRemover;
this.joinedMoimRemover = joinedMoimRemover;
this.scheduleRemover = scheduleRemover;
}

@Override
public void createPublicMoim(final long memberId, final long universityId,
final PublicMoimAppendRequest publicMoimAppendRequest) {
moimAppender.createPublicMoim(memberId, universityId, publicMoimAppendRequest);
}

@Override
public void createPrivateMoim(final long memberId, final long universityId,
final PrivateMoimAppendRequest privateMoimAppendRequest) {
moimAppender.createPrivateMoim(memberId, universityId, privateMoimAppendRequest);
public void createMoim(final long memberId, final long universityId,
final MoimAppendRequest moimAppendRequest) {
MoimJpaEntity moim = moimAppender.createMoim(memberId, universityId, moimAppendRequest);
joinedMoimAppender.createJoinedMoim(memberId, moim.getId());
}

@Override
public UploadMoimImageResponse uploadMoimImage(final MultipartFile file) {
public MoimImageResponse uploadMoimImage(final MultipartFile file) {
String imageUrl = fileUploader.uploadFile(MOIM_IMAGE.value(), file);
return UploadMoimImageResponse.from(imageUrl);
return MoimImageResponse.from(imageUrl);
}

@Override
Expand All @@ -57,4 +86,20 @@ public MoimDetailResponse getMoimDetail(final long moimId) {
public void updateMoim(final long memberId, final MoimUpdateRequest moimUpdateRequest) {
moimUpdater.updateMoim(memberId, moimUpdateRequest);
}

@Transactional
@Override
public void deleteMoim(final long memberId, final long moimId) {
MoimJpaEntity moimJpaEntity = moimFinder.getById(moimId);
moimJpaEntity.validateMember(memberId);

joinedMoimRemover.deleteAllByMoimId(moimId);
todoRemover.deleteAllByMoimId(moimId);
moimRemover.deleteById(moimId);

List<Long> meetingIds = meetingFinder.findAllByMoimId(moimId);

joinedMeetingRemover.deleteAllByMeetingIdIn(meetingIds);
scheduleRemover.deleteAllByMeetingIdIn(meetingIds);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,26 +20,26 @@ public class ScheduleServiceImpl implements ScheduleService {
private final ScheduleFinder scheduleFinder;
private final ScheduleAppender scheduleAppender;
private final ScheduleUpdater scheduleUpdater;
private final ScheduleDeleter scheduleDeleter;
private final ScheduleRemover scheduleRemover;

public ScheduleServiceImpl(final ScheduleManager scheduleManager, final ScheduleFinder scheduleFinder,
final ScheduleAppender scheduleAppender, final ScheduleUpdater scheduleUpdater,
final ScheduleDeleter scheduleDeleter) {
final ScheduleRemover scheduleRemover) {
this.scheduleManager = scheduleManager;
this.scheduleFinder = scheduleFinder;
this.scheduleAppender = scheduleAppender;
this.scheduleUpdater = scheduleUpdater;
this.scheduleDeleter = scheduleDeleter;
this.scheduleRemover = scheduleRemover;
}

@Override
public List<ScheduleResponse> findAllByWeekly(final long memberId, final LocalDate startDate) {
return scheduleFinder.findAllByWeekly(memberId, startDate);
public List<ScheduleResponse> findAllByMonthly(final long memberId, final YearMonth yearMonth) {
return scheduleFinder.findAllByMonthly(memberId, yearMonth);
}

@Override
public List<ScheduleResponse> findAllByMonthly(final long memberId, final YearMonth yearMonth) {
return scheduleFinder.findAllByMonthly(memberId, yearMonth);
public List<ScheduleResponse> findAllByWeekly(final long memberId, final LocalDate startDate) {
return scheduleFinder.findAllByWeekly(memberId, startDate);
}

@Override
Expand All @@ -62,6 +62,6 @@ public void updateSchedule(final long memberId, final ScheduleUpdateRequest sche

@Override
public void deleteSchedule(final long memberId, final long scheduleId) {
scheduleDeleter.deleteSchedule(memberId, scheduleId);
scheduleRemover.deleteSchedule(memberId, scheduleId);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package moim_today.dto.member;

public record ProfileImageResponse(
String imageUrl
) {

public static ProfileImageResponse from(String imageUrl) {
return new ProfileImageResponse(imageUrl);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package moim_today.dto.member;

public record ProfileUpdateRequest(
long departmentId
long departmentId,
String imageUrl
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,16 @@
import static moim_today.global.constant.NumberConstant.DEFAULT_MOIM_VIEWS;

@Builder
public record PublicMoimAppendRequest(
public record MoimAppendRequest(
String title,
String contents,
int capacity,
//비밀번호 null 허용
String password,
//모임 사진 null 허용
String imageUrl,
MoimCategory moimCategory,
DisplayStatus displayStatus,
LocalDate startDate,
LocalDate endDate
) {
Expand All @@ -33,16 +37,21 @@ public MoimJpaEntity toEntity(final long memberId, final long universityId) {
.contents(contents)
.capacity(capacity)
.currentCount(DEFAULT_MOIM_CURRENT_COUNT.value())
.password(DEFAULT_MOIM_PASSWORD.value())
.moimCategory(moimCategory)
.displayStatus(DisplayStatus.PUBLIC)
.displayStatus(displayStatus)
.views(DEFAULT_MOIM_VIEWS.value())
.startDate(startDate)
.endDate(endDate);

if (displayStatus.equals(DisplayStatus.PRIVATE) && password != null) {
moimJpaEntityBuilder.password(password);
} else {
moimJpaEntityBuilder.password(DEFAULT_MOIM_PASSWORD.value());
}

if (imageUrl == null) {
return buildMoimByImageUrl(moimJpaEntityBuilder, DEFAULT_MOIM_IMAGE_URL.value());
} else {
} else{
return buildMoimByImageUrl(moimJpaEntityBuilder, imageUrl);
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package moim_today.dto.moim;

public record MoimDeleteRequest(
long moimId
) {
}
10 changes: 10 additions & 0 deletions backend/src/main/java/moim_today/dto/moim/MoimImageResponse.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package moim_today.dto.moim;

public record MoimImageResponse(
String imageUrl
) {

public static MoimImageResponse from(String imageUrl) {
return new MoimImageResponse(imageUrl);
}
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public DepartmentFinder(final DepartmentRepository departmentRepository,
this.universityRepository = universityRepository;
}

public void isDepartmentAssociatedWithUniversity(final long universityId, final long departmentId) {
public void validateBelongToUniversity(final long universityId, final long departmentId) {
DepartmentJpaEntity departmentJpaEntity = departmentRepository.getById(departmentId);
if (departmentJpaEntity.getUniversityId() != universityId) {
throw new BadRequestException(DEPARTMENT_NOT_MATCH_UNIVERSITY.message());
Expand Down
Loading
Loading