Skip to content

Commit

Permalink
Merge pull request #12 from syyling/feat/7
Browse files Browse the repository at this point in the history
[feat] 랭킹 생성하는 기능 추가
  • Loading branch information
syyling authored Mar 7, 2024
2 parents 4e48580 + 9ca5dc7 commit 01fc20a
Show file tree
Hide file tree
Showing 7 changed files with 157 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.mookive.mookive_backend.ranking.applicaiton.dto.request;

import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

public class RankingRequest {

@Getter
@NoArgsConstructor
public static class RankingCreateRequest {

private Long userId;
private Long movieId;
private int rankingNumber;

@Builder
public RankingCreateRequest(Long userId, Long movieId, int rankingNumber) {
this.userId = userId;
this.movieId = movieId;
this.rankingNumber = rankingNumber;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.mookive.mookive_backend.ranking.applicaiton.mapper;

import com.mookive.mookive_backend.movie.domain.entity.Movie;
import com.mookive.mookive_backend.ranking.domain.entity.Ranking;
import com.mookive.mookive_backend.user.domain.entity.User;

public class RankingMapper {

public static Ranking mapToRanking(Movie movie, User user, int rankingNumber) {
return Ranking.builder()
.movie(movie)
.user(user)
.rankingNumber(rankingNumber)
.build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.mookive.mookive_backend.ranking.applicaiton.service;

import com.mookive.mookive_backend.movie.domain.entity.Movie;
import com.mookive.mookive_backend.movie.domain.service.MovieQueryService;
import com.mookive.mookive_backend.ranking.applicaiton.dto.request.RankingRequest;
import com.mookive.mookive_backend.ranking.applicaiton.mapper.RankingMapper;
import com.mookive.mookive_backend.ranking.domain.entity.Ranking;
import com.mookive.mookive_backend.ranking.domain.service.RankingSaveService;
import com.mookive.mookive_backend.user.domain.entity.User;
import com.mookive.mookive_backend.user.domain.service.UserQueryService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
@RequiredArgsConstructor
public class RankingCreateService {

private final RankingSaveService rankSaveService;
private final MovieQueryService movieQueryService;
private final UserQueryService userQueryService;

public void createRank(List<RankingRequest.RankingCreateRequest> rankCreateRequestList) {

for(RankingRequest.RankingCreateRequest rankingCreateRequest : rankCreateRequestList) {
Long movieId = rankingCreateRequest.getMovieId();
Movie movie = movieQueryService.findById(movieId);
Long userId = rankingCreateRequest.getUserId();
User user = userQueryService.findById(userId);
int rankingNumber = rankingCreateRequest.getRankingNumber();
Ranking ranking = RankingMapper.mapToRanking(movie, user, rankingNumber);
rankSaveService.saveRanking(ranking);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.mookive.mookive_backend.ranking.domain.entity;

import com.mookive.mookive_backend.movie.domain.entity.Movie;
import com.mookive.mookive_backend.user.domain.entity.User;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Ranking {

@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@ManyToOne
@JoinColumn(name = "movie_id")
private Movie movie;

@ManyToOne
@JoinColumn(name = "user_id")
private User user;

private int rankingNumber;

@Builder
public Ranking(Movie movie, User user, int rankingNumber) {
this.movie = movie;
this.user = user;
this.rankingNumber = rankingNumber;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.mookive.mookive_backend.ranking.domain.respository;

import com.mookive.mookive_backend.ranking.domain.entity.Ranking;
import org.springframework.data.jpa.repository.JpaRepository;

public interface RankingRepository extends JpaRepository<Ranking, Long> {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.mookive.mookive_backend.ranking.domain.service;

import com.mookive.mookive_backend.ranking.domain.entity.Ranking;
import com.mookive.mookive_backend.ranking.domain.respository.RankingRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class RankingSaveService {

private final RankingRepository rankingRepository;

public void saveRanking(Ranking ranking) {
rankingRepository.save(ranking);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.mookive.mookive_backend.ranking.presentation;

import com.mookive.mookive_backend.ranking.applicaiton.dto.request.RankingRequest;
import com.mookive.mookive_backend.ranking.applicaiton.service.RankingCreateService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequiredArgsConstructor
public class RankingController {

private final RankingCreateService rankingCreateService;

@PostMapping("/ranking")
public void createRank(@RequestBody List<RankingRequest.RankingCreateRequest> rankingCreateRequestList) {
rankingCreateService.createRank(rankingCreateRequestList);
}
}

0 comments on commit 01fc20a

Please sign in to comment.