NewsLikeService.java 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package com.izouma.nineth.service;
  2. import com.izouma.nineth.domain.NewsLike;
  3. import com.izouma.nineth.dto.PageQuery;
  4. import com.izouma.nineth.repo.NewsLikeRepo;
  5. import com.izouma.nineth.repo.NewsRepo;
  6. import com.izouma.nineth.repo.ShowroomRepo;
  7. import com.izouma.nineth.utils.JpaUtils;
  8. import lombok.AllArgsConstructor;
  9. import org.springframework.data.domain.Page;
  10. import org.springframework.stereotype.Service;
  11. import java.util.List;
  12. @Service
  13. @AllArgsConstructor
  14. public class NewsLikeService {
  15. private NewsLikeRepo newsLikeRepo;
  16. private NewsRepo newsRepo;
  17. private ShowroomRepo showroomRepo;
  18. public Page<NewsLike> all(PageQuery pageQuery) {
  19. return newsLikeRepo.findAll(JpaUtils.toSpecification(pageQuery, NewsLike.class), JpaUtils.toPageRequest(pageQuery));
  20. }
  21. public void like(Long userId, Long newsId) {
  22. List<NewsLike> list = newsLikeRepo.findByUserIdAndNewsId(userId, newsId);
  23. if (!list.isEmpty()) return;
  24. newsLikeRepo.save(NewsLike.builder()
  25. .userId(userId)
  26. .newsId(newsId)
  27. .build());
  28. newsRepo.addLike(newsId, 1);
  29. }
  30. public void unlike(Long userId, Long newsId) {
  31. List<NewsLike> list = newsLikeRepo.findByUserIdAndNewsId(userId, newsId);
  32. if (!list.isEmpty()) {
  33. newsLikeRepo.deleteAll(list);
  34. newsRepo.addLike(newsId, -list.size());
  35. }
  36. }
  37. public void likeRoom(Long userId, Long roomId) {
  38. List<NewsLike> list = newsLikeRepo.findByUserIdAndShowroomId(userId, roomId);
  39. if (!list.isEmpty()) return;
  40. newsLikeRepo.save(NewsLike.builder()
  41. .userId(userId)
  42. .showroomId(roomId)
  43. .build());
  44. showroomRepo.addLike(roomId, 1);
  45. }
  46. public void unlikeRoom(Long userId, Long roomId) {
  47. List<NewsLike> list = newsLikeRepo.findByUserIdAndShowroomId(userId, roomId);
  48. if (!list.isEmpty()) {
  49. newsLikeRepo.deleteAll(list);
  50. showroomRepo.addLike(roomId, -list.size());
  51. }
  52. }
  53. }