Skip to content

Commit

Permalink
♻️ Refactor: 모임 탈퇴하기 로직 검증 작업 추가
Browse files Browse the repository at this point in the history
<body>
- BaseResponseStatus.java
  - 색깔을 찾을 수 없는 오류 코드 추가
- MoimStatus.java, Moim.java
  - MoimStatus 를 통해 모임의 상태를 관리한다.
  - 모임을 제거하는 로직을 추가한다.
- MoimAndUserService.java
  - 마지막 사람이면 Moim 자체가 지워지도록 한다.

<footer>
- 관련: #49
  • Loading branch information
김현재 committed Mar 25, 2024
1 parent 6996828 commit 7c09698
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,17 @@ public MoimAndUser getMoimAndUser(Moim moim, User user) {
}

public void removeMoimAndUser(MoimAndUser moimAndUser, Moim moim) {
validateNotExistsMoimAndUser(moim, moimAndUser);
if (moim.isLastMember()) {
moim.removeMoim();
}
moim.removeMember();
moimAndUserRepository.delete(moimAndUser);
}

private void validateNotExistsMoimAndUser(Moim moim, MoimAndUser moimAndUser) {
if (!moim.containUser(moimAndUser.getUser())) {
throw new BaseException(BaseResponseStatus.NOT_INCLUDE_MOIM_USER);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,4 @@ public interface MoimAndUserRepository extends JpaRepository<MoimAndUser, Long>
List<MoimAndUser> findMoimAndUserByMoim(List<Moim> moims);

Optional<MoimAndUser> findMoimAndUserByUserAndMoim(User user, Moim moim);

Integer countMoimAndUserByMoim(Moim moim);

boolean existsMoimAndUserByMoimAndUser(Moim moim, User user);
}
20 changes: 19 additions & 1 deletion src/main/java/com/example/namo2/domain/moim/domain/Moim.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
Expand Down Expand Up @@ -42,6 +44,10 @@ public class Moim extends BaseTimeEntity {
@Column(name = "member_count")
private Integer memberCount;

@Enumerated(EnumType.STRING)
@Column
private MoimStatus status;

@OneToMany(mappedBy = "moim", fetch = FetchType.LAZY)
private List<MoimAndUser> moimAndUsers = new ArrayList<>();

Expand All @@ -52,6 +58,7 @@ public Moim(Long id, String name, String imgUrl) {
this.imgUrl = imgUrl;
this.code = createCode();
this.memberCount = 1;
this.status = MoimStatus.ACTIVE;
}

private String createCode() {
Expand All @@ -74,12 +81,23 @@ public boolean isFull() {
return false;
}

public boolean isLastMember() {
if (memberCount == 1) {
return true;
}
return false;
}

public void addMember(MoimAndUser savedMoimAndUser) {
moimAndUsers.add(savedMoimAndUser);
this.memberCount += 1;
}

public void removeMember() {
this.memberCount += 1;
this.memberCount -= 1;
}

public void removeMoim() {
status = MoimStatus.INACTIVE;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.example.namo2.domain.moim.domain;

public enum MoimStatus {
INACTIVE, ACTIVE;
}
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ public enum BaseResponseStatus {
NOT_CHANGE_SPECIFIED_NAME_FAILURE(404, "일정 및 모임은 기본 카테고리로 지정된 이름입니다."),
NOT_CHECK_TERM_ERROR(404, "약관에 무조건 동의 해야합니다."),
MOIM_IS_FULL_ERROR(404, "일정 및 모임 카테고리는 삭제 될 수 없습니다."),
NOT_INCLUDE_MOIM_USER(404, "모임 안에 포함되어 있지 않은 유저입니다."),

/**
* 404: 중복 에러
Expand Down

0 comments on commit 7c09698

Please sign in to comment.