Изменил логику получения новых сообщений

This commit is contained in:
Mark Struchkov 2019-08-17 23:27:50 +03:00
parent a9f329271b
commit cb0b82045d
3 changed files with 33 additions and 2 deletions

View File

@ -16,20 +16,30 @@ public interface MessageService<T extends Message> {
/** /**
* Получить список сообщений за заданный временной интервал * Получить список сообщений за заданный временной интервал
*
* @param timeFrom Начало интервала * @param timeFrom Начало интервала
* @param timeTo Конец интервала * @param timeTo Конец интервала
* @return Список сообщений * @return Список сообщений
*/ */
List<T> getByAddDateTime(LocalDateTime timeFrom, LocalDateTime timeTo); List<T> getByAddDateTime(LocalDateTime timeFrom, LocalDateTime timeTo);
/** /**
* Получить список ПОСЛЕДНИХ сообщений для каждого пользователя за заданных временной интервал * Получить список ПОСЛЕДНИХ сообщений для каждого пользователя за заданных временной интервал
*
* @param timeFrom Начало интервала * @param timeFrom Начало интервала
* @param timeTo Конец интервала * @param timeTo Конец интервала
* @return Список сообщений * @return Список сообщений
*/ */
List<T> getLastEventByCreateDateTime(LocalDateTime timeFrom, LocalDateTime timeTo); List<T> getLastEventByCreateDateTime(LocalDateTime timeFrom, LocalDateTime timeTo);
List<T> getLastEventByAddDateTime(LocalDateTime timeFrom, LocalDateTime timeTo); List<T> getLastEventByAddDateTime(LocalDateTime timeFrom, LocalDateTime timeTo);
/**
* Возвращает новые сообщения пользователей по дате добавления в хранилище.
*
* @param now Текущяя дата и время
* @return Последнее сообщение пользователя от последней переданной даты now
*/
List<T> getNewMessage(LocalDateTime now);
} }

View File

@ -42,6 +42,11 @@ public class BoardCommentServiceImpl implements BoardCommentService {
return getBoardComments(mails); return getBoardComments(mails);
} }
@Override
public List<BoardComment> getNewMessage(LocalDateTime now) {
return null;
}
private List<BoardComment> getBoardComments(List<BoardComment> mails) { private List<BoardComment> getBoardComments(List<BoardComment> mails) {
Set<Integer> people = new HashSet<>(); Set<Integer> people = new HashSet<>();
List<BoardComment> returnMails = new ArrayList<>(); List<BoardComment> returnMails = new ArrayList<>();

View File

@ -6,7 +6,9 @@ import org.sadtech.social.core.domain.content.Mail;
import org.sadtech.social.core.repository.ContentRepository; import org.sadtech.social.core.repository.ContentRepository;
import org.sadtech.social.core.service.MailService; import org.sadtech.social.core.service.MailService;
import java.time.Clock;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
@ -18,10 +20,13 @@ import java.util.Set;
public class MailServiceImpl implements MailService { public class MailServiceImpl implements MailService {
private final ContentRepository<Mail> mailRepository; private final ContentRepository<Mail> mailRepository;
private boolean newMessage = false;
private LocalDateTime oldDateTime = LocalDateTime.now(Clock.tickSeconds(ZoneId.systemDefault()));
@Override @Override
public void add(Mail mail) { public void add(Mail mail) {
mailRepository.add(mail); mailRepository.add(mail);
newMessage = true;
log.info("Сообщение добавлено в репозиторий | {}", mail); log.info("Сообщение добавлено в репозиторий | {}", mail);
} }
@ -53,6 +58,17 @@ public class MailServiceImpl implements MailService {
} }
} }
@Override
public List<Mail> getNewMessage(LocalDateTime now) {
List<Mail> lastEventByAddDateTime = Collections.emptyList();
if (newMessage) {
lastEventByAddDateTime = getLastEventByAddDateTime(oldDateTime, now);
newMessage = false;
}
oldDateTime = now;
return lastEventByAddDateTime;
}
private List<Mail> getReturnMails(List<Mail> mails) { private List<Mail> getReturnMails(List<Mail> mails) {
Set<Integer> people = new HashSet<>(); Set<Integer> people = new HashSet<>();
List<Mail> returnMails = new ArrayList<>(); List<Mail> returnMails = new ArrayList<>();