Skip to content

Commit

Permalink
Merge pull request #179 from U2DJ2/backend-main
Browse files Browse the repository at this point in the history
[BE] main branch 병합
  • Loading branch information
320Hwany authored May 23, 2024
2 parents d3ab96d + a801487 commit b22b101
Show file tree
Hide file tree
Showing 138 changed files with 3,502 additions and 225 deletions.
2 changes: 1 addition & 1 deletion backend/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ build/
**/src/main/generated/

### initDB ###
**/src/main/java/moim_today/global/init/**
**/src/main/java/moim_today/**/init/**

### Properties ###
application.yml
Expand Down
26 changes: 25 additions & 1 deletion backend/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ plugins {
id 'io.spring.dependency-management' version '1.1.4'
id 'com.epages.restdocs-api-spec' version "${restdocsApiSpecVersion}"
id 'org.hidetake.swagger.generator' version '2.18.2'
id 'jacoco'
}

group = 'u2dj2'
Expand Down Expand Up @@ -118,6 +119,7 @@ dependencies {
tasks.named('test') {
outputs.dir snippetsDir
useJUnitPlatform()
finalizedBy jacocoTestReport
}

tasks.withType(GenerateSwaggerUI) {
Expand All @@ -144,4 +146,26 @@ bootJar {
}
}

jar.enabled = false
jar.enabled = false

jacoco {
toolVersion = "0.8.10"
}

jacocoTestReport {
dependsOn test
reports {
xml.required = true
html.required = true
}
afterEvaluate {
classDirectories.setFrom(files(classDirectories.files.collect {
fileTree(dir: it, exclude: [
'moim_today/dto/**',
'moim_today/global/**',
'moim_today/application/**',
'**/Q*.*'
])
}))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import jakarta.servlet.http.HttpServletRequest;
import moim_today.dto.auth.MemberLoginRequest;
import moim_today.dto.auth.MemberSignUpRequest;
import moim_today.dto.auth.MemberSessionValidateResponse;

public interface AuthService {

Expand All @@ -11,4 +12,6 @@ public interface AuthService {
void signUp(final MemberSignUpRequest memberSignUpRequest, final HttpServletRequest request);

void logout(final HttpServletRequest request);

MemberSessionValidateResponse validateMemberSession(final HttpServletRequest request);
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package moim_today.application.auth;

import jakarta.servlet.http.HttpServletRequest;
import moim_today.domain.member.MemberSession;
import moim_today.dto.auth.MemberLoginRequest;
import moim_today.dto.auth.MemberSignUpRequest;
import moim_today.dto.auth.MemberSessionValidateResponse;
import moim_today.implement.department.DepartmentFinder;
import moim_today.implement.member.AuthManager;
import jakarta.servlet.http.HttpServletRequest;
import moim_today.implement.member.MemberFinder;
import moim_today.implement.university.UniversityFinder;
import org.springframework.stereotype.Service;
Expand Down Expand Up @@ -46,4 +48,9 @@ public void signUp(final MemberSignUpRequest memberSignUpRequest,
memberFinder.validateEmailNotExists(memberSignUpRequest.email());
authManager.signUp(memberSignUpRequest, request);
}

@Override
public MemberSessionValidateResponse validateMemberSession(final HttpServletRequest request) {
return MemberSession.validateMemberSession(request);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package moim_today.application.email_subscribe;

import moim_today.dto.mail.EmailSubscriptionResponse;

public interface EmailSubscribeService {

EmailSubscriptionResponse getSubscriptionStatus(final long memberId);

void updateSubscribeStatus(final long memberId, final boolean subscribedStatus);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package moim_today.application.email_subscribe;

import moim_today.dto.mail.EmailSubscriptionResponse;
import moim_today.implement.email_subscribe.EmailSubscribeUpdater;
import moim_today.implement.email_subscribe.EmailSubscriptionFinder;
import org.springframework.stereotype.Service;

@Service
public class EmailSubscribeServiceImpl implements EmailSubscribeService {

private final EmailSubscribeUpdater emailSubscribeUpdater;
private final EmailSubscriptionFinder emailSubscriptionFinder;

public EmailSubscribeServiceImpl(final EmailSubscribeUpdater emailSubscribeUpdater,
final EmailSubscriptionFinder emailSubscriptionFinder) {
this.emailSubscribeUpdater = emailSubscribeUpdater;
this.emailSubscriptionFinder = emailSubscriptionFinder;
}

@Override
public EmailSubscriptionResponse getSubscriptionStatus(final long memberId) {
boolean subscriptionStatus = emailSubscriptionFinder.getSubscriptionStatus(memberId);
return EmailSubscriptionResponse.of(subscriptionStatus);
}

@Override
public void updateSubscribeStatus(final long memberId, final boolean subscribedStatus) {
emailSubscribeUpdater.updateSubscribeStatus(memberId, subscribedStatus);
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package moim_today.application.meeting.joined_meeting;


public interface JoinedMeetingService {

void acceptanceJoinMeeting(final long memberId, final long meetingId);

void refuseJoinMeeting(final long memberId, final long meetingId);

void deleteAllByMeetingId(final long meetingId);
}
Original file line number Diff line number Diff line change
@@ -1,26 +1,40 @@
package moim_today.application.meeting.joined_meeting;

import moim_today.implement.meeting.joined_meeting.JoinedMeetingRemover;
import moim_today.implement.meeting.joined_meeting.JoinedMeetingUpdater;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;


@Service
public class JoinedMeetingServiceImpl implements JoinedMeetingService {

private final JoinedMeetingUpdater joinedMeetingUpdater;
private final JoinedMeetingRemover joinedMeetingRemover;

public JoinedMeetingServiceImpl(final JoinedMeetingUpdater joinedMeetingUpdater) {
public JoinedMeetingServiceImpl(final JoinedMeetingUpdater joinedMeetingUpdater,
final JoinedMeetingRemover joinedMeetingRemover) {
this.joinedMeetingUpdater = joinedMeetingUpdater;
this.joinedMeetingRemover = joinedMeetingRemover;
}

@Transactional
@Override
public void acceptanceJoinMeeting(final long memberId, final long meetingId) {
boolean attendance = true;
joinedMeetingUpdater.updateAttendance(memberId, meetingId, attendance);
}

@Transactional
@Override
public void refuseJoinMeeting(final long memberId, final long meetingId) {
boolean attendance = false;
joinedMeetingUpdater.updateAttendance(memberId, meetingId, attendance);
}

@Transactional
@Override
public void deleteAllByMeetingId(final long meetingId) {
joinedMeetingRemover.deleteAllByMeetingId(meetingId);
}
}
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
package moim_today.application.meeting.meeting;

import moim_today.domain.meeting.enums.MeetingStatus;
import moim_today.dto.meeting.MeetingCreateRequest;
import moim_today.dto.meeting.MeetingDetailResponse;
import moim_today.dto.meeting.MeetingSimpleResponse;
import moim_today.dto.meeting.meeting.*;

import java.util.List;

public interface MeetingService {

void createMeeting(final MeetingCreateRequest meetingCreateRequest);
MeetingCreateResponse createMeeting(final long memberId, final MeetingCreateRequest meetingCreateRequest);

List<MeetingSimpleResponse> findAllByMoimId(final long moimId, final long memberId, final MeetingStatus meetingStatus);

MeetingDetailResponse findDetailsById(final long meetingId);

void updateMeeting(final long memberId, final MeetingUpdateRequest meetingUpdateRequest);

void deleteMeeting(final long memberId, final long meetingId);
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
package moim_today.application.meeting.meeting;

import moim_today.application.meeting.joined_meeting.JoinedMeetingService;
import moim_today.application.schedule.ScheduleService;
import moim_today.domain.meeting.enums.MeetingStatus;
import moim_today.dto.meeting.MeetingCreateRequest;
import moim_today.dto.meeting.MeetingDetailResponse;
import moim_today.dto.meeting.MeetingSimpleDao;
import moim_today.dto.meeting.MeetingSimpleResponse;
import moim_today.dto.meeting.meeting.*;
import moim_today.implement.meeting.meeting.MeetingFinder;
import moim_today.implement.meeting.meeting.MeetingManager;
import moim_today.implement.meeting.meeting.MeetingRemover;
import moim_today.implement.meeting.meeting.MeetingUpdater;
import moim_today.persistence.entity.meeting.meeting.MeetingJpaEntity;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

Expand All @@ -18,18 +21,25 @@ public class MeetingServiceImpl implements MeetingService {

private final MeetingManager meetingManager;
private final MeetingFinder meetingFinder;
private final MeetingUpdater meetingUpdater;
private final MeetingRemover meetingRemover;
private final ScheduleService scheduleService;
private final JoinedMeetingService joinedMeetingService;

public MeetingServiceImpl(final MeetingManager meetingManager, final MeetingFinder meetingFinder,
final MeetingRemover meetingRemover) {
final MeetingUpdater meetingUpdater, final MeetingRemover meetingRemover,
final ScheduleService scheduleService, final JoinedMeetingService joinedMeetingService) {
this.meetingManager = meetingManager;
this.meetingFinder = meetingFinder;
this.meetingUpdater = meetingUpdater;
this.meetingRemover = meetingRemover;
this.scheduleService = scheduleService;
this.joinedMeetingService = joinedMeetingService;
}

@Override
public void createMeeting(final MeetingCreateRequest meetingCreateRequest) {
meetingManager.createMeeting(meetingCreateRequest);
public MeetingCreateResponse createMeeting(final long memberId, final MeetingCreateRequest meetingCreateRequest) {
return meetingManager.createMeeting(memberId, meetingCreateRequest, LocalDate.now());
}

@Override
Expand All @@ -45,8 +55,16 @@ public MeetingDetailResponse findDetailsById(final long meetingId) {
return meetingFinder.findDetailsById(meetingId);
}

@Override
public void updateMeeting(final long memberId, final MeetingUpdateRequest meetingUpdateRequest) {
meetingUpdater.updateMeeting(memberId, meetingUpdateRequest);
}

@Transactional
@Override
public void deleteMeeting(final long memberId, final long meetingId) {
meetingRemover.deleteMeeting(meetingId, meetingId);
scheduleService.deleteAllByMeetingId(meetingId);
joinedMeetingService.deleteAllByMeetingId(meetingId);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package moim_today.application.meeting.meeting_comment;

import moim_today.dto.meeting.meeting_comment.MeetingCommentCreateRequest;
import moim_today.dto.meeting.meeting_comment.MeetingCommentResponse;
import moim_today.dto.meeting.meeting_comment.MeetingCommentUpdateRequest;

import java.util.List;

public interface MeetingCommentService {

void createMeetingComment(final long memberId, final MeetingCommentCreateRequest meetingCommentCreateRequest);

List<MeetingCommentResponse> findAllByMeetingId(final long memberId, final long meetingId);

void updateMeetingComment(final long memberId, final MeetingCommentUpdateRequest meetingCommentUpdateRequest);

void deleteMeetingComment(final long memberId, final long meetingCommentId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
package moim_today.application.meeting.meeting_comment;

import moim_today.dto.meeting.meeting_comment.MeetingCommentCreateRequest;
import moim_today.dto.meeting.meeting_comment.MeetingCommentResponse;
import moim_today.dto.meeting.meeting_comment.MeetingCommentUpdateRequest;
import moim_today.implement.meeting.meeting.MeetingFinder;
import moim_today.implement.meeting.meeting_comment.MeetingCommentAppender;
import moim_today.implement.meeting.meeting_comment.MeetingCommentFinder;
import moim_today.implement.meeting.meeting_comment.MeetingCommentRemover;
import moim_today.implement.meeting.meeting_comment.MeetingCommentUpdater;
import moim_today.implement.moim.joined_moim.JoinedMoimFinder;
import moim_today.persistence.entity.meeting.meeting_comment.MeetingCommentJpaEntity;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
public class MeetingCommentServiceImpl implements MeetingCommentService {

private final MeetingCommentAppender meetingCommentAppender;
private final MeetingCommentFinder meetingCommentFinder;
private final MeetingCommentUpdater meetingCommentUpdater;
private final MeetingCommentRemover meetingCommentRemover;
private final MeetingFinder meetingFinder;
private final JoinedMoimFinder joinedMoimFinder;

public MeetingCommentServiceImpl(final MeetingCommentAppender meetingCommentAppender,
final MeetingCommentFinder meetingCommentFinder,
final MeetingCommentUpdater meetingCommentUpdater,
final MeetingCommentRemover meetingCommentRemover,
final MeetingFinder meetingFinder,
final JoinedMoimFinder joinedMoimFinder) {
this.meetingCommentAppender = meetingCommentAppender;
this.meetingCommentFinder = meetingCommentFinder;
this.meetingCommentUpdater = meetingCommentUpdater;
this.meetingCommentRemover = meetingCommentRemover;
this.meetingFinder = meetingFinder;
this.joinedMoimFinder = joinedMoimFinder;
}

@Override
public void createMeetingComment(final long memberId, final MeetingCommentCreateRequest meetingCommentCreateRequest) {
long moimId = meetingFinder.getMoimIdByMeetingId(meetingCommentCreateRequest.meetingId());
joinedMoimFinder.validateMemberInMoim(memberId, moimId);
meetingCommentAppender.createMeetingComment(memberId, meetingCommentCreateRequest);
}

@Override
public List<MeetingCommentResponse> findAllByMeetingId(final long memberId, final long meetingId) {
long moimId = meetingFinder.getMoimIdByMeetingId(meetingId);
joinedMoimFinder.validateMemberInMoim(memberId, moimId);
return meetingCommentFinder.findAllByMeetingId(meetingId);
}

@Transactional
@Override
public void updateMeetingComment(final long memberId, final MeetingCommentUpdateRequest meetingCommentUpdateRequest) {
long meetingCommentId = meetingCommentUpdateRequest.meetingCommentId();
MeetingCommentJpaEntity meetingCommentJpaEntity = meetingCommentFinder.getById(meetingCommentId);
meetingCommentJpaEntity.validateMember(memberId);
meetingCommentUpdater.updateMeetingComment(meetingCommentId, meetingCommentUpdateRequest);
}

@Override
public void deleteMeetingComment(final long memberId, final long meetingCommentId) {
MeetingCommentJpaEntity meetingCommentJpaEntity = meetingCommentFinder.getById(meetingCommentId);
meetingCommentJpaEntity.validateMember(memberId);
meetingCommentRemover.deleteById(meetingCommentId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,7 @@ public interface MemberService {

MemberHostResponse isHost(final long memberId, final long moimId);

MemberJoinedMoimResponse isJoinedMoim(final long moimId, final long memberId);

MemberSimpleResponse getHostProfileByMoimId(final long moimId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,13 @@ public ProfileImageResponse uploadProfileImage(final long memberId, final Multip
@Override
public MemberHostResponse isHost(final long memberId, final long moimId) {
boolean isHost = moimManager.isHost(memberId, moimId);
return MemberHostResponse.builder()
.isHost(isHost)
.build();
return MemberHostResponse.from(isHost);
}

@Override
public MemberJoinedMoimResponse isJoinedMoim(final long moimId, final long memberId) {
boolean isJoinedMoim = moimManager.isJoinedMoim(moimId, memberId);
return MemberJoinedMoimResponse.from(isJoinedMoim);
}

@Override
Expand Down
Loading

0 comments on commit b22b101

Please sign in to comment.