Skip to content

Commit

Permalink
[feat] 랭킹 생성하는 기능 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
syyling committed Mar 7, 2024
1 parent d77da03 commit 9ca5dc7
Show file tree
Hide file tree
Showing 5 changed files with 115 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,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 9ca5dc7

Please sign in to comment.