Skip to content

Commit

Permalink
파티 약속 시간 설정 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
daeundada committed Jan 17, 2024
1 parent 5e105ac commit 1f21b17
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,10 @@ public class PartyRequestDTO {

private String title;
private String content;
private int year;
private int month;
private int day;
private int hours;
private int minutes;

}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ public class PartyResponseDTO {
private String title;
private String username;
private String content;
private LocalDateTime dateTime; // 약속 날짜,시간
private LocalDateTime createAt;
private LocalDateTime modifiedAt;
private List<MemberResponseDTO> members;
Expand All @@ -27,6 +28,7 @@ public PartyResponseDTO(Party party) {
this.title = party.getTitle();
this.username = party.getUsername();
this.content = party.getContent();
this.dateTime = party.getDateTime();
this.createAt = party.getCreatedAt();
this.modifiedAt = party.getModifiedAt();
}
Expand Down
13 changes: 12 additions & 1 deletion src/main/java/com/HHive/hhive/domain/party/entity/Party.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
import jakarta.persistence.*;
import lombok.*;

import java.time.LocalDateTime;

@Getter
@Entity
@Builder
Expand Down Expand Up @@ -41,20 +43,29 @@ public class Party extends BaseTimeEntity {
@JoinColumn(name = "user_id")
private User user;

@Column
private LocalDateTime dateTime; // 약속 시간


public Party(Hive hive, PartyRequestDTO dto, User user) {
public Party(Hive hive, PartyRequestDTO dto, User user, LocalDateTime dateTime) {
this.hive = hive;
this.title = dto.getTitle();
this.username = user.getUsername();
this.content = dto.getContent();
this.hostId = user.getId();
this.dateTime = dateTime;
}

// 연관관계 메서드
public void setUser(User user) {
this.user = user;
}

// 날짜 설정 메서드
public void setDateTime(LocalDateTime dateTime) {
this.dateTime = dateTime;
}

// 서비스 메서드
public void setIsDeleted(boolean isDeleted) {
this.isDeleted = isDeleted;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;

Expand All @@ -35,7 +36,17 @@ public PartyResponseDTO createParty(Long hiveId, PartyRequestDTO dto, User user)
Hive hive = hiveRepository.findById(hiveId)
.orElseThrow(NotFoundHiveException::new);

Party party = new Party(hive, dto, user);
LocalDateTime dateTime = LocalDateTime.of(dto.getYear(), dto.getMonth(), dto.getDay(), dto.getHours(), dto.getMinutes());

// 현재 시간을 가져옵니다.
LocalDateTime now = LocalDateTime.now();

// 설정하려는 약속 시간이 과거인지 확인합니다.
if (dateTime.isBefore(now)) {
throw new InvalidPartyTimeException();
}

Party party = new Party(hive, dto, user, dateTime);
party.setUser(user);

var saved = partyRepository.save(party);
Expand All @@ -54,7 +65,7 @@ public PartyResponseDTO getPartyDto(Long partyId) {
.map(partyUser -> new MemberResponseDTO(partyUser.getUser().getUsername(), partyUser.getUser().getEmail()))
.collect(Collectors.toList());

return new PartyResponseDTO(party.getId(), party.getTitle(), party.getUsername(), party.getContent(), party.getCreatedAt(), party.getModifiedAt(), members);
return new PartyResponseDTO(party.getId(), party.getTitle(), party.getUsername(), party.getContent(),party.getDateTime(), party.getCreatedAt(), party.getModifiedAt(), members);
}

//전체 조회
Expand All @@ -72,7 +83,7 @@ public Map<UserInfoResponseDTO, List<PartyResponseDTO>> getUserPartyMap() {
.map(partyUser -> new MemberResponseDTO(partyUser.getUser().getUsername(), partyUser.getUser().getEmail()))
.collect(Collectors.toList());

PartyResponseDTO partyDto = new PartyResponseDTO(party.getId(), party.getTitle(), party.getUsername(), party.getContent(), party.getCreatedAt(), party.getModifiedAt(), members);
PartyResponseDTO partyDto = new PartyResponseDTO(party.getId(), party.getTitle(), party.getUsername(), party.getContent(),party.getDateTime(), party.getCreatedAt(), party.getModifiedAt(), members);

if (userPartyMap.containsKey(userDto)) {
userPartyMap.get(userDto).add(partyDto);
Expand Down Expand Up @@ -119,11 +130,19 @@ private Party getUserParty(Long partyId, User user) {
public void joinParty(Long partyId, User user) {
Party party = getUserParty(partyId, user);

// 현재 날짜를 가져옵니다.
LocalDateTime now = LocalDateTime.now();

// 파티 호스트가 파티에 가입하는 것을 방지
if (party.getHostId().equals(user.getId())) {
throw new PartyHostNotJoinException();
}

// 파티 날짜가 현재 날짜보다 이전인 경우, 가입 불가 처리
if (party.getDateTime().isBefore(now)) {
throw new EndPartyNotJoinException();
}

// 중복 가입 검사
if (partyUserRepository.existsByUserIdAndPartyId(user.getId(), partyId)) {
throw new AlreadyJoinException();
Expand Down

0 comments on commit 1f21b17

Please sign in to comment.