Skip to content

Commit

Permalink
엔티티 수정 후 광고 조회, 스트림 데이터 저장 수정
Browse files Browse the repository at this point in the history
  • Loading branch information
chobeebee committed Jul 8, 2024
1 parent aa1159b commit 710213c
Show file tree
Hide file tree
Showing 15 changed files with 229 additions and 90 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import com.sparta.binplay.dto.response.StreamResponseDto;
import com.sparta.binplay.dto.response.VideoResponseDto;
import com.sparta.binplay.entity.CustomOAuth2User;
import com.sparta.binplay.entity.Videos;
import com.sparta.binplay.service.AdViewService;
import com.sparta.binplay.service.StreamService;
import com.sparta.binplay.service.VideoAdService;
Expand All @@ -29,11 +28,11 @@ public class VideoController {
private final AdViewService adViewService;

//모든 비디오 조회 (필요없지 않나)
@GetMapping
/*@GetMapping
public ResponseEntity<List<Videos>> getAllVideos() {
List<Videos> videos = videoService.findAllVideos();
return ResponseEntity.ok(videos);
}
}*/

// my비디오 리스트 조회
@GetMapping("/my")
Expand Down
19 changes: 19 additions & 0 deletions src/main/java/com/sparta/binplay/dto/request/AdViewRequestDto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.sparta.binplay.dto.request;

import com.sparta.binplay.entity.VideoAd;
import lombok.Builder;
import lombok.Getter;

import java.time.LocalDate;

@Getter
public class AdViewRequestDto {
private LocalDate createdAt;
private VideoAd videoAd;

@Builder
public AdViewRequestDto(LocalDate createdAt, VideoAd videoAd) {
this.createdAt = createdAt;
this.videoAd = videoAd;
}
}
Original file line number Diff line number Diff line change
@@ -1,21 +1,15 @@
package com.sparta.binplay.dto.request;

import com.sparta.binplay.entity.Users;
import com.sparta.binplay.entity.Videos;
import lombok.Getter;

@Getter
public class StreamRequestDto {
private int viewingTime;
private int playTime;
private int pausedAt;
private Users user;
private Videos video;

public StreamRequestDto(int viewingTime, int pausedAt, Users user, Videos video) {
this.viewingTime = viewingTime;
public StreamRequestDto(int viewingTime) {
this.playTime = viewingTime;
this.pausedAt = pausedAt;
this.user = user;
this.video = video;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ public class VideoRequestDto {
private Long videoId;
private String title;
private String description;
private long videoLength;
private int videoLength;

public VideoRequestDto(Long videoId, String title, String description, long videoLength) {
public VideoRequestDto(Long videoId, String title, String description, int videoLength) {
this.videoId = videoId;
this.title = title;
this.description = description;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.sparta.binplay.dto.response;

import com.sparta.binplay.entity.AdViews;
import lombok.*;

import java.time.LocalDate;

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class AdViewResponseDto {
private Long adViewId;
private LocalDate createdAt;
private Long videoAdId;

public static AdViewResponseDto from(AdViews adView) {
return AdViewResponseDto.builder()
.adViewId(adView.getAdViewId())
.createdAt(adView.getCreatedAt())
.videoAdId(adView.getVideoAd().getVideoAdId()) // VideoAd 객체의 ID만 포함
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,14 @@
@Builder
public class StreamResponseDto {
private Long streamId;
private int viewingTime;
private int playTime;
private int pausedAt;
private LocalDateTime createAt;
private LocalDateTime modifiedAt;

public static StreamResponseDto from(Streams stream) {
return StreamResponseDto.builder()
.streamId(stream.getStreamId())
.viewingTime(stream.getViewingTime())
.playTime(stream.getPlayTime())
.pausedAt(stream.getPausedAt())
.createAt(stream.getCreatedAt())
.build();
Expand Down
53 changes: 53 additions & 0 deletions src/main/java/com/sparta/binplay/entity/AdViews.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package com.sparta.binplay.entity;

import com.sparta.binplay.dto.request.AdViewRequestDto;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.CreationTimestamp;

import java.time.LocalDate;
import java.util.Set;

@Entity
@Getter
@Table(name="ad_views")
@NoArgsConstructor
@Builder
@AllArgsConstructor
public class AdViews {

@Id
@Column(name="ad_view_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long adViewId;

@CreationTimestamp
@Column(name = "created_at", updatable = false, nullable = false)
private LocalDate createdAt;

@ManyToOne
@JoinColumn(name = "video_ad_id")
private VideoAd videoAd;

@OneToMany(mappedBy = "adView")
private Set<StatisticAd> statisticsAds;

@OneToMany(mappedBy = "adView")
private Set<PaymentAd> paymentsAds;

public AdViews(LocalDate createdAt, VideoAd videoAd) {
this.createdAt = createdAt;
this.videoAd = videoAd;
}

public static AdViews of(AdViewRequestDto adViewRequestDto) {
return AdViews.builder()
.createdAt(adViewRequestDto.getCreatedAt())
.videoAd(adViewRequestDto.getVideoAd())
.build();
}

}
13 changes: 12 additions & 1 deletion src/main/java/com/sparta/binplay/entity/Ads.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,25 @@
import jakarta.persistence.*;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.CreationTimestamp;

import java.time.LocalDate;
import java.util.Set;

@Entity
@Getter
@Table(name="ads")
@NoArgsConstructor
public class Ads extends Timestamped{
public class Ads {
@Id
@Column(name = "ad_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long adId;

@CreationTimestamp
@Column(name = "created_at", updatable = false, nullable = false)
private LocalDate createdAt;

@OneToMany(mappedBy = "ad")
private Set<VideoAd> videoAds;
}
43 changes: 32 additions & 11 deletions src/main/java/com/sparta/binplay/entity/Streams.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,38 +6,54 @@
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import java.time.LocalDateTime;

@Entity
@Getter
@Table(name = "streams")
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Streams extends Timestamped {
@EntityListeners(AuditingEntityListener.class)
public class Streams {
@Id
@Column(name = "stream_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long streamId;

@Column(name = "viewing_time")
private int viewingTime;
@Column(name = "play_time")
private int playTime;

@Column(name = "paused_at")
private int pausedAt;

@CreatedDate
@Column(name="created_at", updatable = false)
private LocalDateTime createdAt;

@ManyToOne
@JoinColumn(name = "user_id", nullable = false)
@JoinColumn(name = "user_id")
private Users user;

@ManyToOne
@JoinColumn(name = "video_id", nullable = false)
@JoinColumn(name = "video_id")
private Videos video;

public Streams(StreamRequestDto streamRequestDto) {
this.viewingTime = streamRequestDto.getViewingTime();
this.playTime = streamRequestDto.getPlayTime();
this.pausedAt = streamRequestDto.getPausedAt();
this.user = streamRequestDto.getUser();
this.video = streamRequestDto.getVideo();
}

public static Streams of(Users user, Videos video, StreamRequestDto streamRequestDto) {
return Streams.builder()
.user(user)
.video(video)
.playTime(streamRequestDto.getPlayTime())
.pausedAt(streamRequestDto.getPausedAt())
.build();
}

public void updatePause(int stopTime) {
Expand All @@ -46,12 +62,17 @@ public void updatePause(int stopTime) {

public void updateViewingTime(int stopTime) {

this.viewingTime+= (stopTime - this.viewingTime);
if(video.getVideoLength() < playTime + stopTime) {
this.playTime = video.getVideoLength();
return;
}
this.playTime += stopTime;

//영상을 끝까지 봤다면 영상 처음으로 돌림
if(this.viewingTime == video.getVideoLength()) {
this.viewingTime = 0;
if(this.playTime == video.getVideoLength()) {
this.playTime = 0;
}
}


}
23 changes: 3 additions & 20 deletions src/main/java/com/sparta/binplay/entity/Users.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ public class Users extends Timestamped{
@OneToMany(mappedBy = "user")
private List<Videos> videos;

@OneToMany(mappedBy = "user")
private List<Streams> streams;

public Users(UserRequestDto requestDto) {
this.email = requestDto.getEmail();
this.password = requestDto.getPassword();
Expand All @@ -52,24 +55,4 @@ public Users(UserRequestDto requestDto) {
this.role = requestDto.getRole();
this.isActive = requestDto.isActive();
}

public Users toEntity() {
return Users.builder()
.email(email)
.password(password)
.username(username)
.grade(grade)
.role(role)
.isActive(isActive)
.build();
}

public void update(UserRequestDto requestDto) {
this.email = requestDto.getEmail();
this.password = requestDto.getPassword();
this.name = requestDto.getName();
this.grade = requestDto.getGrade();
this.role = requestDto.getRole();
this.isActive = requestDto.isActive();
}
}
4 changes: 2 additions & 2 deletions src/main/java/com/sparta/binplay/entity/Videos.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public class Videos extends Timestamped {
private long views;

@Column(name = "video_length", nullable = false)
private long videoLength;
private int videoLength;

@ManyToOne
@JoinColumn(name = "user_id", nullable = false)
Expand All @@ -55,7 +55,7 @@ public class Videos extends Timestamped {
@OneToMany(mappedBy = "video")
private List<PaymentVideo> paymentsVideo = new ArrayList<>();

public Videos(String title, String description, long videoLength) {
public Videos(String title, String description, int videoLength) {
this.title = title;
this.description = description;
this.videoLength = videoLength;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.sparta.binplay.repository;

import com.sparta.binplay.entity.AdViews;
import org.springframework.data.jpa.repository.JpaRepository;

public interface AdViewRepository extends JpaRepository<AdViews, Long> {
}
34 changes: 34 additions & 0 deletions src/main/java/com/sparta/binplay/service/AdViewService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.sparta.binplay.service;

import com.sparta.binplay.dto.response.AdViewResponseDto;
import com.sparta.binplay.entity.AdViews;
import com.sparta.binplay.entity.VideoAd;
import com.sparta.binplay.repository.AdViewRepository;
import com.sparta.binplay.repository.VideoAdRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class AdViewService {
private final AdViewRepository adViewRepository;
private final VideoAdRepository videoAdRepository;

public AdViewResponseDto saveAdView(Long videoAdId) {
// 비디오 광고를 videoAdId로 조회하고, 존재하지 않으면 예외를 던집니다.
VideoAd videoAd = videoAdRepository.findById(videoAdId)
.orElseThrow(() -> new RuntimeException("비디오 광고를 찾을 수 없음"));

// 새로운 AdViews 객체를 생성합니다.
AdViews adView = AdViews.builder()
.videoAd(videoAd)
.build();

// 생성된 AdViews 객체를 저장합니다.
AdViews savedAdView = adViewRepository.save(adView);

// 저장된 AdViews 객체를 AdViewResponseDto로 변환하여 반환합니다.
return AdViewResponseDto.from(savedAdView);
}

}
Loading

0 comments on commit 710213c

Please sign in to comment.