1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
/* eslint-disable */
import { formatTime } from './utils/format';
import { getMessageClasses, parseMessageToJSON } from './utils';
class Message {
constructor({
id,
infoContent,
infoLevel,
time,
infoType,
dateTime,
webConfig,
webPath,
messType,
infoClasses
} = message) {
this.id = id;
this.infoContent = infoContent;
this.infoLevel = infoLevel;
this.time = time;
this.infoType = infoType; // 方案类型 - 工单 报警 公告 定时推送
this.dateTime = dateTime;
this.webConfig = webConfig;
this.webPath = webPath;
this.messType = messType; // 方案名称 - 大类型下细类型
this.infoClasses = infoClasses;
}
}
function createMessage(message) {
return new Message(message);
}
/**
* 解析历史消息成统一消息对象
* "历史消息" 和 "实时推送" 的消息之间有些差距,所以统一处理成一样的 Message
* @param {*} hisMessage 历史消息: 通过接口查询到的 "历史消息"
* @param {object} options 扩展参数
* @returns {Message}
* 返回处理后的统一 Message 对象
*/
export const createMessageFromHis = (hisMessage, options = {}) => {
const { version } = options;
const time = formatTime(hisMessage.hisCreateTime);
const infoClasses = getMessageClasses(hisMessage.infoType);
let infoContent = {};
if (!version || version === '1.0') {
infoContent = parseMessageToJSON(infoClasses, hisMessage); // 1.0消息解析成统一格式
} else {
// 2.0 消息
infoContent = JSON.parse(hisMessage.infoContent || '{}');
}
const template = {
id: hisMessage.hisID,
infoContent,
time,
infoType: hisMessage.infoType,
dateTime: hisMessage.hisCreateTime,
infoLevel: hisMessage.infoLevel,
webConfig: hisMessage.web_config,
webPath: hisMessage.web_path,
messType: hisMessage.messType,
infoClasses,
};
return createMessage(template);
}
/**
* 解析实时消息成统一消息对象
* "历史消息" 和 "实时推送" 的消息之间有些差距,所以统一处理成一样的 Message
* @param {*} hisMessage 历史消息: 通过接口查询到的 "历史消息"
* @param {object} options 扩展参数
* @returns {Message}
* 返回处理后的统一 Message 对象
*/
export const createMessageFromReal = (realMesssage, options = {}) => {
const { version } = options;
const infoClasses = getMessageClasses(realMesssage.infoType);
const time = formatTime(realMesssage.createTime);
let infoContent = {};
if (!version || version === '1.0') {
infoContent = parseMessageToJSON(infoClasses, realMesssage); // 1.0消息解析成统一格式
} else {
// 2.0 消息
infoContent = JSON.parse(realMesssage.content || '{}');
}
const template = {
id: realMesssage.infoId,
infoContent,
time,
infoType: realMesssage.infoType,
infoLevel: realMesssage.level,
dateTime: realMesssage.createTime,
webConfig: realMesssage.web_config,
webPath: realMesssage.web_path,
messType: realMesssage.messType,
infoClasses,
}
return createMessage(template);
}
export default createMessage;