update 消息推送增加 消息类型 消息来源 前端跳转路径等扩展参数

This commit is contained in:
疯狂的狮子Li
2026-03-26 15:34:02 +08:00
parent fa8e1cd3c0
commit 40011e9acd
13 changed files with 443 additions and 9 deletions

View File

@@ -0,0 +1,83 @@
package org.dromara.common.core.domain.dto;
import lombok.Data;
import org.dromara.common.core.enums.PushSourceEnum;
import org.dromara.common.core.enums.PushTypeEnum;
import org.dromara.common.core.utils.StringUtils;
import java.io.Serial;
import java.io.Serializable;
import java.util.Map;
/**
* 推送给前端的统一消息体
*
* @author Lion Li
*/
@Data
public class PushPayload implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 消息类型
*/
private String type;
/**
* 消息来源
*/
private String source;
/**
* 文本消息
*/
private String message;
/**
* 扩展数据
*/
private Object data;
/**
* 前端跳转路径
*/
private String path;
/**
* 前端跳转参数
*/
private Map<String, Object> query;
/**
* 时间戳
*/
private Long timestamp;
public static PushPayload of(String type, String source, String message, Object data) {
PushPayload payload = new PushPayload();
payload.setType(StringUtils.defaultIfBlank(type, PushTypeEnum.MESSAGE.getType()));
payload.setSource(StringUtils.defaultIfBlank(source, PushSourceEnum.BACKEND.getSource()));
payload.setMessage(message);
payload.setData(data);
payload.setTimestamp(System.currentTimeMillis());
return payload;
}
public static PushPayload of(PushTypeEnum type, PushSourceEnum source, String message, Object data) {
return of(
type == null ? null : type.getType(),
source == null ? null : source.getSource(),
message,
data
);
}
public static PushPayload of(PushTypeEnum type, PushSourceEnum source, String message, Object data, String path, Map<String, Object> query) {
PushPayload payload = of(type, source, message, data);
payload.setPath(path);
payload.setQuery(query);
return payload;
}
}

View File

@@ -0,0 +1,41 @@
package org.dromara.common.core.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 推送消息来源枚举
*
* @author Lion Li
*/
@Getter
@AllArgsConstructor
public enum PushSourceEnum {
/**
* 后端系统消息
*/
BACKEND("backend"),
/**
* 通知公告
*/
NOTICE("notice"),
/**
* 工作流
*/
WORKFLOW("workflow"),
/**
* 大模型
*/
LLM("llm"),
/**
* 客户端消息
*/
CLIENT("client");
private final String source;
}

View File

@@ -0,0 +1,36 @@
package org.dromara.common.core.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 推送消息类型枚举
*
* @author Lion Li
*/
@Getter
@AllArgsConstructor
public enum PushTypeEnum {
/**
* 通用消息
*/
MESSAGE("message"),
/**
* 通知公告
*/
NOTICE("notice"),
/**
* 大模型消息
*/
LLM("llm"),
/**
* 自定义消息
*/
CUSTOM("custom");
private final String type;
}