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

feat : 이벤트 생성 및 수정 기능 #186

Merged
merged 14 commits into from
Jan 25, 2023
Merged

Conversation

gengminy
Copy link
Member

개요

작업사항

  • 이벤트 생성 및 수정 기능을 분리하였습니다
  • 러닝 타임, 티켓팅 시간 정보 등은 미정이라 추후 정하기로 했습니다 일단 값만 받고 처리는 하지 않아요
  • Event 정보에서 분리한 api 각각에서 처리할 정보를 나누었습니다 (EventDetail, EventPlace)
  • 이벤트에 이미지 업로드 하는 방식에 대해 조금 고민중입니다
  • url 을 엔티티에 저장할지, EventDetailImage 에 저장만 하고 필요할 때마다 얻어와서 관리할지...
  • 페이지 및 검색 기능 추가하면서 다듬어볼게요
  • 일단은 url 방식으로 임시 저장시켰습니다 -> null 또는 올바른 url 형식만 허용합니다

변경로직

  • 위와 같음

@gengminy gengminy added For: API [이슈 대상] 외부 API Type: Feature [이슈 목적] 새로운 기능 추가 Type: Refactor [이슈 목적] 프로덕션 코드 리팩토링 labels Jan 24, 2023
@gengminy gengminy requested a review from ImNM as a code owner January 24, 2023 08:00
@gengminy gengminy self-assigned this Jan 24, 2023
Copy link
Member

@ImNM ImNM left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이미지 url은
이미지 업로드api 는 제가 작업할 예정이고

근데 지금약간 저희 와프랑 다른 api 인것같은데
어떻게 생각하시나유?

  • 공연 간편 생성 ( create )

  • 공연 기본정보 업데이트
    공연 기본정보는 공연 등록이후에는 수정불가

  • 공연 이미지/상세 업데이트

이렇게 크게 세가지로 나뉘어지는것같은데
한번 확인 부탁드려요!

공연 상세 이미지 리스트 저장은 ( 포스터 말구 )
https://prohannah.tistory.com/133

@ElementCollection
같은걸 활용해서 저장하면 더 좋을것같긴해요!

Comment on lines 48 to 43
private String placeName;
// 공연 장소 정보
@Embedded private EventPlace eventPlace;

// 공연 상세 주소
private String placeAddress;
@Embedded private EventDetail eventDetail;

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

vo 에 기본값 설정해서 저장하면
null 관리하기 좀더 쉬울것 같긴해요!

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

vo 에 기본값 설정해서 저장하면 null 관리하기 좀더 쉬울것 같긴해요!

직관적으로 default 지정하는 걸로 바꾸겠습니다

Comment on lines 59 to 78
/** 이벤트의 시작과 종료 시간을 지정 */
public void setTime(LocalDateTime startAt, LocalDateTime endAt) {
// 이벤트 종료가 시작보다 빠르면 안됨
if (startAt.isAfter(endAt)) {
throw EventCannotEndBeforeStartException.EXCEPTION;
}
this.startAt = startAt;
this.endAt = endAt;
}

/** 티켓팅 시작과 종료 시간을 지정 */
public void setTicketingTime(LocalDateTime startAt, LocalDateTime endAt) {
// 이벤트 종료가 시작보다 빠르면 안됨
if (startAt.isAfter(endAt)) {
throw EventCannotEndBeforeStartException.EXCEPTION;
}
this.ticketingStartAt = startAt;
this.ticketingEndAt = endAt;
}

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://github.com/Gosrock/DuDoong-Backend/blob/dev/DuDoong-Domain/src/main/java/band/gosrock/domain/common/vo/DateTimePeriod.java

채린이 도메인에서도 위 해당 vo 사용중인데
기간을 vo로 관리하시는거 어떤가유!

다만이제 Ticket 이랑 이벤트 두개를 vo로 바꾸게되면
startAt,endAt 필드가 두개 생기는거라
이름 재지정은 필요하긴 합니다
https://github.com/Gosrock/DuDoong-Backend/blob/dev/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/domain/PaymentInfo.java

attributeoverride 어노테이션 참고하시면 될것같아요!

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://github.com/Gosrock/DuDoong-Backend/blob/dev/DuDoong-Domain/src/main/java/band/gosrock/domain/common/vo/DateTimePeriod.java

채린이 도메인에서도 위 해당 vo 사용중인데 기간을 vo로 관리하시는거 어떤가유!

다만이제 Ticket 이랑 이벤트 두개를 vo로 바꾸게되면 startAt,endAt 필드가 두개 생기는거라 이름 재지정은 필요하긴 합니다 https://github.com/Gosrock/DuDoong-Backend/blob/dev/DuDoong-Domain/src/main/java/band/gosrock/domain/domains/order/domain/PaymentInfo.java

attributeoverride 어노테이션 참고하시면 될것같아요!

참고해서 바꿔볼게용

Comment on lines 23 to 50
Event.builder()
.hostId(createEventRequest.getHostId())
.name(createEventRequest.getName())
.urlName(createEventRequest.getUrlName())
.build();
event.setEventPlace(toEventPlace(createEventRequest));
event.setTime(createEventRequest.getStartAt(), createEventRequest.getEndAt());
return eventService.updateEventUrlName(event, createEventRequest.getUrlName());
}

public EventDetail toEventDetail(UpdateEventDetailRequest updateEventDetailRequest) {
// todo :: 러닝 타임, 티켓팅 시각 정보는 추후 협의
return EventDetail.builder()
.posterImage(updateEventDetailRequest.getPosterImageUrl())
.detailImage1(updateEventDetailRequest.getDetailImageUrl1())
.detailImage2(updateEventDetailRequest.getDetailImageUrl2())
.detailImage3(updateEventDetailRequest.getDetailImageUrl3())
.content(updateEventDetailRequest.getContent())
.build();
}

public EventPlace toEventPlace(CreateEventRequest createEventRequest) {
return EventPlace.builder()
.placeName(createEventRequest.getPlaceName())
.placeAddress(createEventRequest.getPlaceAddress())
.latitude(createEventRequest.getLatitude())
.longitude(createEventRequest.getLongitude())
.build();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

VO의 from 처럼 빌더를 정적 메서드로 묶어서 표시하면 더 깔끔하고 좋을 거 같은데 어떤가용

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

VO의 from 처럼 빌더를 정적 메서드로 묶어서 표시하면 더 깔끔하고 좋을 거 같은데 어떤가용

엔티티 내부에 들어가는 애들이라 여기 말고 위치할 곳이 없어보이는데 좋은 방법 있을까요?

Copy link
Member

@sanbonai06 sanbonai06 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니다! LGTM ⭐

@gengminy
Copy link
Member Author

이미지 url은 이미지 업로드api 는 제가 작업할 예정이고

근데 지금약간 저희 와프랑 다른 api 인것같은데 어떻게 생각하시나유?

  • 공연 간편 생성 ( create )
  • 공연 기본정보 업데이트
    공연 기본정보는 공연 등록이후에는 수정불가
  • 공연 이미지/상세 업데이트

이렇게 크게 세가지로 나뉘어지는것같은데 한번 확인 부탁드려요!

공연 상세 이미지 리스트 저장은 ( 포스터 말구 ) https://prohannah.tistory.com/133

@ElementCollection 같은걸 활용해서 저장하면 더 좋을것같긴해요!

지금 이거는 GUI 따라 작업한건데 와프가 맞는지 GUI 가 맞는지 확실하게 할 필요가 있을 거 같아요

@sonarqubecloud
Copy link

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 211 Code Smells

12.3% 12.3% Coverage
1.3% 1.3% Duplication

@gengminy gengminy merged commit 7eee9f4 into dev Jan 25, 2023
@ImNM ImNM deleted the feature/185-admin-event branch January 26, 2023 10:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
For: API [이슈 대상] 외부 API Type: Feature [이슈 목적] 새로운 기능 추가 Type: Refactor [이슈 목적] 프로덕션 코드 리팩토링
Projects
None yet
Development

Successfully merging this pull request may close these issues.

🚀 [feature] 이벤트 등록 기능
4 participants