| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package com.izouma.nineth.service;
- import com.izouma.nineth.domain.Collection;
- import com.izouma.nineth.domain.Follow;
- import com.izouma.nineth.domain.Like;
- import com.izouma.nineth.domain.User;
- import com.izouma.nineth.dto.CollectionDTO;
- import com.izouma.nineth.dto.PageQuery;
- import com.izouma.nineth.dto.UserDTO;
- import com.izouma.nineth.repo.CollectionRepo;
- import com.izouma.nineth.repo.LikeRepo;
- import com.izouma.nineth.utils.JpaUtils;
- import com.izouma.nineth.utils.SecurityUtils;
- import lombok.AllArgsConstructor;
- import org.springframework.beans.BeanUtils;
- import org.springframework.data.domain.Page;
- import org.springframework.data.domain.PageImpl;
- import org.springframework.stereotype.Service;
- import java.util.List;
- import java.util.stream.Collectors;
- @Service
- @AllArgsConstructor
- public class CollectionService {
- private CollectionRepo collectionRepo;
- private LikeRepo likeRepo;
- public Page<Collection> all(PageQuery pageQuery) {
- return collectionRepo.findAll(JpaUtils.toSpecification(pageQuery, Collection.class), JpaUtils.toPageRequest(pageQuery));
- }
- public CollectionDTO toDTO(Collection collection) {
- return toDTO(collection, true);
- }
- public CollectionDTO toDTO(Collection collection, boolean join) {
- CollectionDTO collectionDTO = new CollectionDTO();
- BeanUtils.copyProperties(collection, collectionDTO);
- if (join) {
- if (SecurityUtils.getAuthenticatedUser() != null) {
- List<Like> list = likeRepo.findByUserIdAndCollectionId(SecurityUtils.getAuthenticatedUser().getId(),
- collection.getId());
- collectionDTO.setLiked(!list.isEmpty());
- }
- }
- return collectionDTO;
- }
- public List<CollectionDTO> toDTO(List<Collection> collections) {
- return collections.stream().parallel().map(collection -> {
- CollectionDTO dto = toDTO(collection, false);
- if (SecurityUtils.getAuthenticatedUser() != null) {
- List<Like> likes = likeRepo.findByUserId(SecurityUtils.getAuthenticatedUser().getId());
- dto.setLiked(likes.stream().anyMatch(l -> l.getCollectionId().equals(collection.getId())));
- }
- return dto;
- }).collect(Collectors.toList());
- }
- public Page<CollectionDTO> toDTO(Page<Collection> collections) {
- List<CollectionDTO> userDTOS = toDTO(collections.getContent());
- return new PageImpl<>(userDTOS, collections.getPageable(), collections.getTotalElements());
- }
- }
|