refactor: 消息通知

This commit is contained in:
Captain.B 2021-08-17 17:35:54 +08:00 committed by 刘瑞斌
parent b979da6b8c
commit 27b9768f21
1 changed files with 21 additions and 12 deletions

View File

@ -16,6 +16,7 @@ import io.metersphere.notice.sender.impl.WeComNoticeSender;
import io.metersphere.service.UserService;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.RegExUtils;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@ -75,26 +76,34 @@ public class NoticeSendService {
messageDetails = noticeService.searchMessageByType(taskType);
break;
}
// 发送实体通知
messageDetails.stream()
.filter(messageDetail -> StringUtils.equals(messageDetail.getEvent(), noticeModel.getEvent()))
.forEach(messageDetail -> this.getNoticeSender(messageDetail).send(messageDetail, noticeModel));
// 发送站内通知
QueryOrgMemberRequest request = new QueryOrgMemberRequest();
request.setOrganizationId(SessionUtils.getCurrentOrganizationId());
List<User> orgAllMember = userService.getOrgAllMember(request);
// 替换变量
noticeModel.setContext(getContent(noticeModel));
orgAllMember.forEach(receiver -> {
String context = noticeModel.getContext();
LogUtil.debug("发送站内通知: {}, 内容: {}", receiver.getName(), context);
notificationService.sendAnnouncement(noticeModel.getSubject(), context, receiver.getId());
});
// 异步发送实体通知
messageDetails.stream()
.filter(messageDetail -> StringUtils.equals(messageDetail.getEvent(), noticeModel.getEvent()))
.forEach(messageDetail -> this.getNoticeSender(messageDetail).send(messageDetail, noticeModel));
// 异步发送站内通知
sendAnnouncement(noticeModel, orgAllMember);
} catch (Exception e) {
LogUtil.error(e.getMessage(), e);
}
}
@Async
public void sendAnnouncement(NoticeModel noticeModel, List<User> orgAllMember) {
// 替换变量
noticeModel.setContext(getContent(noticeModel));
orgAllMember.forEach(receiver -> {
String context = noticeModel.getContext();
LogUtil.debug("发送站内通知: {}, 内容: {}", receiver.getName(), context);
notificationService.sendAnnouncement(noticeModel.getSubject(), context, receiver.getId());
});
}
private String getContent(NoticeModel noticeModel) {
String template = noticeModel.getContext();
Map<String, Object> paramMap = noticeModel.getParamMap();