멤버 (Member)

public class Member extends BaseEntity {

  private Long id;
  private Long socialId;
  private String nickname;
  private String gender;
  private int age;
  private String profileImageUrl;
 
  private TravelSchedule travelSchedule;
  private Membership membership;

	// 로그인 관련 메서드
	void login();
  void logout();
  
	// 정보 관련 메서드
  void deleteAccount();
  void updateProfile();
}

여행 일정 (TravelSchedule)

public class TravelSchedule extends BaseEntity {

  private Long id;
  private String memberId;
  private String country;
  private List<String> cities;
  private LocalDate startDate;
  private LocalDate endDate;

	// 메서드
  void createSchedule();
  void updateSchedule();
}

멤버십 (Membership)

public class Membership extends BaseEntity {

  private Long id;
  private String memberId;
  private boolean isActive;
  private LocalDateTime activatedDate;
  private LocalDateTime expiredDate;

	// 메서드
  void activate();
  void deactivate();
  boolean isActive();
}

결제(Payment) - 아직 잘 모르겠음..

public class Payment extends BaseEntity {

  private Long id;
  private Long memberId;
  private BigDecimal amount;
  private String status; // Pending, Approved, Failed, Refunded
  private LocalDateTime requestDate;
  private LocalDateTime completionDate;

  // 메서드
  void approve();
  void fail();
  void refund();
  boolean isSuccessful();
}

동행 (Udong)

public class Udong extends BaseEntity {

  private Long id;
  private String title;
  private String country;
  private List<String> cities;
  private LocalDate startDate;
  private LocalDate endDate;
  private List<Tag> tags;
  private Status status; // 모집 중, 진행 중, 종료

  // 관계
  private Participants participants;
  private Waiters waiters;
  private UdongSchedule schedules;
  private Cost costs;
  private Chat chat;

  // 메서드
  void updateUdong();
  void deleteUdong();
  void changeStatus();
  
  // 참여&대기 관련
  void participate();
  void leaveUdong();
  void addWaiter();
  void removeWatier();
  
  // 약속 관련
  void createUdongSchedule();
  
  // 정산 관련
  void createCost();
  
}

태그(Tag)

public class Tag {
	private Long tagId;
}

동행 상태(UdongStatus)