| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- package nju.seec.helper.service.impl;
- import nju.seec.helper.aspect.auth.LoginUser;
- import nju.seec.helper.dao.MessageDAO;
- import nju.seec.helper.dto.message.MessageDTO;
- import nju.seec.helper.entity.Message;
- import nju.seec.helper.enums.MessageType;
- import nju.seec.helper.service.MessageService;
- import org.springframework.data.domain.Page;
- import org.springframework.data.domain.Pageable;
- import org.springframework.scheduling.annotation.Async;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import java.util.Set;
- import java.util.stream.Collectors;
- /**
- * @author cst
- */
- @Service
- public class MessageServiceImpl implements MessageService {
- private final MessageDAO messageDAO;
- public MessageServiceImpl(MessageDAO messageDAO) {
- this.messageDAO = messageDAO;
- }
- @Async
- @Override
- public void createMessage(Set<Long> toUserIds, MessageType type, String content, Long refId) {
- messageDAO.saveAll(
- toUserIds.parallelStream()
- .map(toUserId -> new Message()
- .setToUserId(toUserId)
- .setType(type)
- .setContent(content)
- .setRefId(refId))
- .collect(Collectors.toSet()));
- }
- @Transactional(rollbackFor = Exception.class)
- @Override
- public void deleteMessages(LoginUser user, MessageDTO messageDTO) {
- messageDAO.deleteByToUserIdAndIdIn(user.getId(), messageDTO.getIds());
- }
- @Async
- @Override
- public void deleteMessages(Long refId, MessageType messageType) {
- messageDAO.deleteByRefIdAndType(refId, messageType);
- }
- @Transactional(rollbackFor = Exception.class)
- @Override
- public void readMessages(LoginUser user, MessageDTO messageDTO) {
- messageDAO.updateRead(user.getId(), messageDTO.getIds());
- }
- @Transactional(readOnly = true)
- @Override
- public Page<Message> getUnreadMessages(LoginUser user, String key, Pageable pageable) {
- return messageDAO.findByToUserIdAndReadAndContentContains(user.getId(), false, key, pageable);
- }
- @Transactional(readOnly = true)
- @Override
- public Page<Message> getReadMessages(LoginUser user, String key, Pageable pageable) {
- return messageDAO.findByToUserIdAndReadAndContentContains(user.getId(), true, key, pageable);
- }
- }
|