perf(消息通知): 优化发送通知的性能
--bug=1010865 --user=刘瑞斌 【测试跟踪】批量移动功能用例耗时较长 https://www.tapd.cn/55049933/s/1114701
This commit is contained in:
parent
7f881317a8
commit
3dbc32bc21
|
@ -3,7 +3,6 @@ package io.metersphere.notice.sender;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import io.metersphere.commons.constants.NoticeConstants;
|
import io.metersphere.commons.constants.NoticeConstants;
|
||||||
import io.metersphere.commons.user.SessionUser;
|
import io.metersphere.commons.user.SessionUser;
|
||||||
import io.metersphere.commons.utils.SessionUtils;
|
|
||||||
import io.metersphere.dto.BaseSystemConfigDTO;
|
import io.metersphere.dto.BaseSystemConfigDTO;
|
||||||
import io.metersphere.notice.annotation.SendNotice;
|
import io.metersphere.notice.annotation.SendNotice;
|
||||||
import io.metersphere.notice.service.NoticeSendService;
|
import io.metersphere.notice.service.NoticeSendService;
|
||||||
|
@ -27,7 +26,7 @@ public class AfterReturningNoticeSendService {
|
||||||
private NoticeSendService noticeSendService;
|
private NoticeSendService noticeSendService;
|
||||||
|
|
||||||
@Async
|
@Async
|
||||||
public void sendNotice(SendNotice sendNotice, Object retValue, SessionUser sessionUser) {
|
public void sendNotice(SendNotice sendNotice, Object retValue, SessionUser sessionUser, String currentWorkspaceId) {
|
||||||
//
|
//
|
||||||
List<Map> resources = new ArrayList<>();
|
List<Map> resources = new ArrayList<>();
|
||||||
String source = sendNotice.source();
|
String source = sendNotice.source();
|
||||||
|
@ -51,7 +50,7 @@ public class AfterReturningNoticeSendService {
|
||||||
paramMap.put("url", baseSystemConfigDTO.getUrl());
|
paramMap.put("url", baseSystemConfigDTO.getUrl());
|
||||||
paramMap.put("operator", sessionUser.getName());
|
paramMap.put("operator", sessionUser.getName());
|
||||||
paramMap.putAll(resource);
|
paramMap.putAll(resource);
|
||||||
paramMap.putIfAbsent("projectId", SessionUtils.getCurrentProjectId());
|
paramMap.putIfAbsent("workspaceId", currentWorkspaceId);
|
||||||
// 占位符
|
// 占位符
|
||||||
handleDefaultValues(paramMap);
|
handleDefaultValues(paramMap);
|
||||||
|
|
||||||
|
|
|
@ -123,7 +123,8 @@ public class SendNoticeAspect {
|
||||||
context.setVariable(params[len], args[len]);
|
context.setVariable(params[len], args[len]);
|
||||||
}
|
}
|
||||||
SessionUser sessionUser = SessionUtils.getUser();
|
SessionUser sessionUser = SessionUtils.getUser();
|
||||||
afterReturningNoticeSendService.sendNotice(sendNotice, retValue, sessionUser);
|
String currentWorkspaceId = SessionUtils.getCurrentWorkspaceId();
|
||||||
|
afterReturningNoticeSendService.sendNotice(sendNotice, retValue, sessionUser, currentWorkspaceId);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LogUtil.error(e.getMessage(), e);
|
LogUtil.error(e.getMessage(), e);
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,8 +61,13 @@ public class NoticeSendService {
|
||||||
*/
|
*/
|
||||||
public void send(String taskType, NoticeModel noticeModel) {
|
public void send(String taskType, NoticeModel noticeModel) {
|
||||||
try {
|
try {
|
||||||
String projectId = (String) noticeModel.getParamMap().get("projectId");
|
String workspaceId = (String) noticeModel.getParamMap().get("workspaceId");
|
||||||
List<MessageDetail> messageDetails = noticeService.searchMessageByTypeAndProjectId(taskType, projectId);
|
List<MessageDetail> messageDetails;
|
||||||
|
if (StringUtils.isEmpty(workspaceId)) {
|
||||||
|
messageDetails = noticeService.searchMessageByType(taskType);
|
||||||
|
} else {
|
||||||
|
messageDetails = noticeService.searchMessageByTypeAndWorkspaceId(taskType, workspaceId);
|
||||||
|
}
|
||||||
|
|
||||||
// 异步发送通知
|
// 异步发送通知
|
||||||
messageDetails.stream()
|
messageDetails.stream()
|
||||||
|
@ -133,7 +138,7 @@ public class NoticeSendService {
|
||||||
// default:
|
// default:
|
||||||
// break;
|
// break;
|
||||||
// }
|
// }
|
||||||
messageDetails = noticeService.searchMessageByTypeAndProjectId(taskType, project.getId());
|
messageDetails = noticeService.searchMessageByTypeAndWorkspaceId(taskType, project.getId());
|
||||||
|
|
||||||
// 异步发送通知
|
// 异步发送通知
|
||||||
messageDetails.stream()
|
messageDetails.stream()
|
||||||
|
|
|
@ -121,9 +121,9 @@ public class NoticeService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<MessageDetail> searchMessageByTypeAndProjectId(String type, String projectId) {
|
public List<MessageDetail> searchMessageByTypeAndWorkspaceId(String type, String workspaceId) {
|
||||||
try {
|
try {
|
||||||
return getMessageDetails(type, projectId);
|
return getMessageDetails(type, workspaceId);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LogUtil.error(e.getMessage(), e);
|
LogUtil.error(e.getMessage(), e);
|
||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
|
|
Loading…
Reference in New Issue