|
|
@@ -6,10 +6,14 @@ import cn.seecoder.seecoderportalcommon.vo.CommunicationVO;
|
|
|
import cn.seecoder.seecoderportalcommon.vo.PageVO;
|
|
|
import cn.seecoder.seecoderportalcommon.vo.UserVO;
|
|
|
import cn.seecoder.seecoderportalserver.domain.Communication;
|
|
|
+import cn.seecoder.seecoderportalserver.domain.CommunicationStar;
|
|
|
import cn.seecoder.seecoderportalserver.mapper.CommunicationFileMapper;
|
|
|
import cn.seecoder.seecoderportalserver.mapper.CommunicationMapper;
|
|
|
+import cn.seecoder.seecoderportalserver.mapper.UserMapper;
|
|
|
import cn.seecoder.seecoderportalserver.repository.CommunicationRepository;
|
|
|
+import cn.seecoder.seecoderportalserver.repository.CommunicationStarRepository;
|
|
|
import cn.seecoder.seecoderportalserver.service.CommunicationService;
|
|
|
+import cn.seecoder.seecoderportalserver.service.UserService;
|
|
|
import cn.seecoder.seecoderportalserver.utility.OssUtil;
|
|
|
import cn.seecoder.seecoderportalserver.web.rest.errors.CustomErrorException;
|
|
|
import org.springframework.data.domain.Page;
|
|
|
@@ -25,6 +29,7 @@ import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Optional;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @author fanyanpeng
|
|
|
@@ -37,14 +42,23 @@ public class CommunicationServiceImpl implements CommunicationService {
|
|
|
private final CommunicationMapper communicationMapper;
|
|
|
private final CommunicationFileMapper communicationFileMapper;
|
|
|
|
|
|
+ private final CommunicationStarRepository communicationStarRepository;
|
|
|
+
|
|
|
private final OssUtil ossUtil;
|
|
|
|
|
|
+ private final UserService userService;
|
|
|
+
|
|
|
+ private final UserMapper userMapper;
|
|
|
+
|
|
|
|
|
|
- public CommunicationServiceImpl(CommunicationRepository communicationRepository, CommunicationMapper communicationMapper, CommunicationFileMapper communicationFileMapper, OssUtil ossUtil){
|
|
|
+ public CommunicationServiceImpl(CommunicationRepository communicationRepository, CommunicationMapper communicationMapper, CommunicationFileMapper communicationFileMapper, CommunicationStarRepository communicationStarRepository, OssUtil ossUtil, UserService userService, UserMapper userMapper){
|
|
|
this.communicationRepository = communicationRepository;
|
|
|
this.communicationMapper = communicationMapper;
|
|
|
this.communicationFileMapper = communicationFileMapper;
|
|
|
+ this.communicationStarRepository = communicationStarRepository;
|
|
|
this.ossUtil = ossUtil;
|
|
|
+ this.userService = userService;
|
|
|
+ this.userMapper = userMapper;
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -160,22 +174,34 @@ public class CommunicationServiceImpl implements CommunicationService {
|
|
|
|
|
|
@Override
|
|
|
public Boolean starCommunication(Long communicationId, Long userId) {
|
|
|
- return null;
|
|
|
+ if (communicationStarRepository.findByUserIdAndCommunicationId(userId,communicationId).isPresent()){
|
|
|
+ throw new CustomErrorException("已经收藏过");
|
|
|
+ }
|
|
|
+ CommunicationStar communicationStar=new CommunicationStar();
|
|
|
+ communicationStar.setCommunicationId(communicationId);
|
|
|
+ communicationStar.setUserId(userId);
|
|
|
+ communicationStarRepository.save(communicationStar);
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public Boolean cancelStarCommunication(Long communicationId, Long userId) {
|
|
|
- return null;
|
|
|
+ communicationStarRepository.deleteByUserIdAndCommunicationId(userId,communicationId);
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public PageVO<CommunicationVO> getStarredCommunicationPage(Long userId, Integer page, Integer size) {
|
|
|
- return null;
|
|
|
+ Pageable pageable = PageRequest.of(page,size);
|
|
|
+ Page<Communication> communications=communicationRepository.findByStarUserId(userId,pageable);
|
|
|
+ return toPageVO(communications,userId);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public List<UserVO> starredUsers(Long communicationId) {
|
|
|
- return null;
|
|
|
+ List<CommunicationStar> communicationStars=communicationStarRepository.findByCommunicationId(communicationId);
|
|
|
+ return communicationStars.stream()
|
|
|
+ .map(communicationStar->userService.findUserById(communicationStar.getUserId())).collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
|