|
|
@@ -56,9 +56,7 @@ public class MessageServiceImpl implements MessageService {
|
|
|
}
|
|
|
|
|
|
public MessageVO create(MessageVO messageVO, Long userId) {
|
|
|
- if (!messageVO.getSender().getId().equals(userId)) {
|
|
|
- throw new CustomErrorException("当前用户无权创建消息");
|
|
|
- }
|
|
|
+ messageVO.getSender().setId(userId);
|
|
|
try {
|
|
|
this.verifyTarget(messageVO.getTargetType(), messageVO.getTargetId());
|
|
|
} catch (CustomErrorException e) {
|
|
|
@@ -103,21 +101,37 @@ public class MessageServiceImpl implements MessageService {
|
|
|
OffsetDateTime endTime = OffsetDateTime.now().minusDays(period * 3L);
|
|
|
OffsetDateTime startTime = OffsetDateTime.now().minusDays((period + 1) * 3L);
|
|
|
List<MessageVO> result = new ArrayList<>();
|
|
|
- for (Message message : messageRepository.findMessagesBySenderIdAndStateNot(userId, ObjectState.DELETED)) {
|
|
|
- result.addAll(messageRepository.findMessagesByTargetIdAndCreatedAtIsBetweenAndStateNot(message.getId(), startTime, endTime, ObjectState.DELETED)
|
|
|
+ for (Message message : messageRepository
|
|
|
+ .findMessagesBySenderIdAndStateNot(userId, ObjectState.DELETED)) {
|
|
|
+ result.addAll(messageRepository
|
|
|
+ .findMessagesByTargetIdAndCreatedAtIsBetweenAndStateNot(
|
|
|
+ message.getId(),
|
|
|
+ startTime,
|
|
|
+ endTime,
|
|
|
+ ObjectState.DELETED)
|
|
|
.stream()
|
|
|
.map(messageMapper::toMessageVO)
|
|
|
.collect(Collectors.toList()));
|
|
|
}
|
|
|
if (userService.isTeacher(userService.findUserById(userId).getRole())) {
|
|
|
for (CourseVO courseVO : courseService.findTeacherCourses(userId)) {
|
|
|
- result.addAll(messageRepository.findMessagesByTargetIdAndCreatedAtIsBetweenAndStateNot(courseVO.getId(), startTime, endTime, ObjectState.DELETED)
|
|
|
+ result.addAll(messageRepository
|
|
|
+ .findMessagesByTargetIdAndCreatedAtIsBetweenAndStateNot(
|
|
|
+ courseVO.getId(),
|
|
|
+ startTime, endTime,
|
|
|
+ ObjectState.DELETED)
|
|
|
.stream()
|
|
|
.map(messageMapper::toMessageVO)
|
|
|
.collect(Collectors.toList()));
|
|
|
}
|
|
|
- for (AnnouncementVO announcementVO : announcementService.findAnnouncementsByUserId(userId)) {
|
|
|
- result.addAll(messageRepository.findMessagesByTargetIdAndCreatedAtIsBetweenAndStateNot(announcementVO.getId(), startTime, endTime, ObjectState.DELETED)
|
|
|
+ for (AnnouncementVO announcementVO :
|
|
|
+ announcementService.findAnnouncementsByUserId(userId)) {
|
|
|
+ result.addAll(messageRepository.
|
|
|
+ findMessagesByTargetIdAndCreatedAtIsBetweenAndStateNot(
|
|
|
+ announcementVO.getId(),
|
|
|
+ startTime,
|
|
|
+ endTime,
|
|
|
+ ObjectState.DELETED)
|
|
|
.stream()
|
|
|
.map(messageMapper::toMessageVO)
|
|
|
.collect(Collectors.toList()));
|
|
|
@@ -125,9 +139,17 @@ public class MessageServiceImpl implements MessageService {
|
|
|
}
|
|
|
result = result.stream()
|
|
|
.filter(messageVO -> {
|
|
|
- MessageRecord record = messageRecordRepository.findById(new MessageRecordKey(messageVO.getId(), userId)).orElse(null);
|
|
|
+ MessageRecord record = messageRecordRepository
|
|
|
+ .findById(new MessageRecordKey(
|
|
|
+ messageVO.getId(),
|
|
|
+ userId)).orElse(null);
|
|
|
if (record == null) {
|
|
|
- messageRecordRepository.save(new MessageRecord(messageVO.getId(), userId, OffsetDateTime.now(), false, null));
|
|
|
+ messageRecordRepository.save(
|
|
|
+ new MessageRecord(messageVO.getId(),
|
|
|
+ userId,
|
|
|
+ OffsetDateTime.now(),
|
|
|
+ false,
|
|
|
+ null));
|
|
|
return true;
|
|
|
} else {
|
|
|
return !record.getState();
|
|
|
@@ -138,12 +160,22 @@ public class MessageServiceImpl implements MessageService {
|
|
|
}
|
|
|
|
|
|
public List<CourseMessageDTO> findMessagesByCourseId(Long courseId) {
|
|
|
- List<CourseMessageDTO> result = messageRepository.findMessagesByMntIdAndActionTypeIsAndTargetTypeIsAndStateNot(courseId, ActionType.COMMENT, ObjectType.COURSE, ObjectState.DELETED)
|
|
|
+ List<CourseMessageDTO> result = messageRepository
|
|
|
+ .findMessagesByMntIdAndActionTypeIsAndTargetTypeIsAndStateNot(
|
|
|
+ courseId,
|
|
|
+ ActionType.COMMENT,
|
|
|
+ ObjectType.COURSE,
|
|
|
+ ObjectState.DELETED)
|
|
|
.stream()
|
|
|
.map(message -> new CourseMessageDTO(messageMapper.toMessageVO(message)))
|
|
|
.collect(Collectors.toList());
|
|
|
for (CourseMessageDTO courseMessageDTO : result) {
|
|
|
- for (MessageVO messageVO : messageRepository.findMessagesByMntIdAndActionTypeIsAndTargetTypeIsAndStateNot(courseMessageDTO.getMainMessage().getId(), ActionType.COMMENT, ObjectType.COMMENT, ObjectState.DELETED)
|
|
|
+ for (MessageVO messageVO : messageRepository
|
|
|
+ .findMessagesByMntIdAndActionTypeIsAndTargetTypeIsAndStateNot(
|
|
|
+ courseMessageDTO.getMainMessage().getId(),
|
|
|
+ ActionType.COMMENT,
|
|
|
+ ObjectType.COMMENT,
|
|
|
+ ObjectState.DELETED)
|
|
|
.stream().map(messageMapper::toMessageVO).collect(Collectors.toList())) {
|
|
|
if (messageVO.getTargetId().equals(courseMessageDTO.getMainMessage().getId())) {
|
|
|
messageVO.setTargetId(null);
|