feat: 看板用户行为事件

This commit is contained in:
TsMask
2024-01-30 15:22:22 +08:00
parent 2e1e0f2cff
commit 15ab2908be
10 changed files with 392 additions and 427 deletions

View File

@@ -1,33 +0,0 @@
import { ref } from 'vue';
/**事件数据 */
export const cdrEventData = ref<Record<string, any>[]>([]);
/**事件总量 */
export const cdrEventTotal = ref<number>(0);
/**事件推送id */
export const cdrEventId = ref<string>('');
/**cdrEvent CDR会话事件 数据解析 */
export function cdrEventParse(item: Record<string, any>) {
let evData: Record<string, any> = item.cdrJSON || item.CDR;
if (typeof evData === 'string') {
try {
evData = JSON.parse(evData);
} catch (error) {
console.error(error);
return false;
}
}
if (evData.recordType === 'CALL') {
return {
id: item.id || item.timestamp,
type: evData.recordType,
time: evData.callDuration,
call: evData.callReference,
msg: `${evData.calledParty} -> ${evData.callerParty}`,
};
}
}

View File

@@ -1,54 +0,0 @@
import { ref } from 'vue';
/**事件数据 */
export const ueEventData = ref<Record<string, any>[]>([]);
/**事件总量 */
export const ueEventTotal = ref<number>(0);
/**事件推送id */
export const ueEventId = ref<string>('');
/**ueEvent UE会话事件 数据解析 */
export function ueEventParse(item: Record<string, any>) {
let evData: Record<string, any> = item.eventJSON;
if (typeof evData === 'string') {
try {
evData = JSON.parse(evData);
} catch (error) {
console.error(error);
}
}
if (item.eventType === 'auth-result') {
return {
id: item.id || item.timestamp,
type: item.eventType,
time: evData.authTime,
imsi: evData.imsi,
msg: `${evData.authMessage}`,
};
}
if (item.eventType === 'detach') {
return {
id: item.id || item.timestamp,
type: item.eventType,
time: evData.detachTime,
imsi: evData.imsi,
msg: `${evData.detachResult}`,
};
}
if (item.eventType === 'cm-state') {
return {
id: item.id || item.timestamp,
type: item.eventType,
time: evData.changeTime,
imsi: evData.imsi,
msg: `${evData.onlineNumber}`,
};
}
return false;
}

View File

@@ -0,0 +1,66 @@
import { ref } from 'vue';
/**UE事件数据 */
export const ueEventData = ref<Record<string, any>[]>([]);
/**UE事件总量 */
export const ueEventTotal = ref<number>(0);
/**UE事件推送id */
export const ueEventId = ref<string>('');
/**ueEvent UE会话事件 数据解析 */
export function ueEventParse(item: Record<string, any>) {
let evData: Record<string, any> = item.eventJSON;
if (typeof evData === 'string') {
try {
evData = JSON.parse(evData);
} catch (error) {
console.error(error);
}
}
return {
eType: 'ue',
eId: `ue_${item.timestamp}`,
id: item.id,
type: item.eventType,
data: evData,
};
}
/**CDR事件数据 */
export const cdrEventData = ref<Record<string, any>[]>([]);
/**CDR事件总量 */
export const cdrEventTotal = ref<number>(0);
/**CDR事件推送id */
export const cdrEventId = ref<string>('');
/**cdrEvent CDR会话事件 数据解析 */
export function cdrEventParse(item: Record<string, any>) {
let evData: Record<string, any> = item.cdrJSON || item.CDR;
if (typeof evData === 'string') {
try {
evData = JSON.parse(evData);
} catch (error) {
console.error(error);
return false;
}
}
return {
eType: 'cdr',
eId: `cdr_${item.timestamp}`,
id: item.id,
data: evData,
};
}
/**CDR+UE事件数据 */
export const eventData = ref<Record<string, any>[]>([]);
/**CDR+UE事件总量 */
export const eventTotal = ref<number>(0);
/**CDR/UE事件推送id */
export const eventId = ref<string>('');

View File

@@ -2,17 +2,12 @@ import { RESULT_CODE_ERROR } from '@/constants/result-constants';
import { OptionsType, WS } from '@/plugins/ws-websocket';
import { onBeforeUnmount, onMounted } from 'vue';
import {
ueEventData,
ueEventId,
ueEventTotal,
ueEventParse,
} from './useUEEvent';
import {
cdrEventData,
cdrEventTotal,
cdrEventId,
cdrEventParse,
} from './useCDREvent';
eventData,
eventTotal,
eventId,
} from './useUserActivity';
import { upfTotalFlow, upfTFParse } from './useUPFTotalFlow';
import { neStateParse } from './useTopology';
@@ -28,21 +23,20 @@ export default function useWS() {
/**接收数据后回调 */
function wsError(ev: any) {
// 接收数据后回调
console.log(ev);
console.error(ev);
}
/**接收数据后回调 */
function wsMessage(res: Record<string, any>) {
console.log(res);
// console.log(res);
const { code, requestId, data } = res;
if (code === RESULT_CODE_ERROR) {
console.warn(res.msg);
return;
}
if (!requestId) return;
// 网元状态
if (requestId.startsWith('neState')) {
if (requestId && requestId.startsWith('neState')) {
const neType = requestId.split('_')[1];
neStateParse(neType, data);
return;
@@ -53,35 +47,27 @@ export default function useWS() {
// ueEvent UE会话事件
case '1010':
if (Array.isArray(data.rows)) {
ueEventTotal.value = data.total;
const evDataArr: Record<string, any>[] = [];
eventTotal.value += data.total;
for (const item of data.rows) {
const v = ueEventParse(item);
if (v) {
evDataArr.push(v);
eventData.value.push(v);
}
}
ueEventData.value = evDataArr;
if (evDataArr.length > 0) {
ueEventId.value = evDataArr[0].id;
}
eventId.value = eventData.value[0].eId;
}
break;
//cdrEvent CDR会话事件
case '1005':
if (Array.isArray(data.rows)) {
cdrEventTotal.value = data.total;
const evDataArr: Record<string, any>[] = [];
eventTotal.value += data.total;
for (const item of data.rows) {
const v = cdrEventParse(item);
if (v) {
evDataArr.push(v);
eventData.value.push(v);
}
}
cdrEventData.value = evDataArr;
if (evDataArr.length > 0) {
cdrEventId.value = evDataArr[0].id;
}
eventId.value = eventData.value[0].eId;
}
break;
//UPF-总流量数
@@ -112,8 +98,12 @@ export default function useWS() {
if (data.data) {
const v = ueEventParse(data.data);
if (v) {
ueEventData.value.unshift(v);
ueEventId.value = v.id;
eventData.value.unshift(v);
eventTotal.value += 1;
eventId.value = v.eId;
if (eventData.value.length > 50) {
eventData.value.pop();
}
}
}
break;
@@ -122,8 +112,12 @@ export default function useWS() {
if (data.data) {
const v = cdrEventParse(data.data);
if (v) {
cdrEventData.value.unshift(v);
cdrEventId.value = v.id;
eventData.value.unshift(v);
eventTotal.value += 1;
eventId.value = v.eId;
if (eventData.value.length > 50) {
eventData.value.pop();
}
}
}
break;
@@ -154,7 +148,7 @@ export default function useWS() {
sortField: 'timestamp',
sortOrder: 'desc',
pageNum: 1,
pageSize: 50,
pageSize: 25,
},
});
}
@@ -170,7 +164,7 @@ export default function useWS() {
sortField: 'timestamp',
sortOrder: 'desc',
pageNum: 1,
pageSize: 50,
pageSize: 25,
},
});
}