fcc-core
Version:
Fusion communication center.
75 lines (71 loc) • 2.47 kB
JavaScript
import nats from './index'
import EventBus, { UPDATE_USER_STATUS, UPDATE_USER_LOCATION } from '../event-bus'
import httpRequst from '../ajaxRequest/instance'
export const natsSubscribe = async (xw) => {
xw.ajaxRequest([{
service: 'E1903426'
}]).then(res => {
if (res.code === '0') {
const orgIds = []
for (let i = 0; i < res.data.length; i++) {
orgIds.push(res.data[i].ORG_ID)
const subscribeState = `icp.store.employee.status.${res.data[i].ORG_ID}` // 人员状态主题
const subscribeLocation = `icp.store.location.${res.data[i].ORG_ID}` // 一线人员位置主题
// nats接收人员状态变化
nats.on(subscribeState, (data) => {
let memberSubscribe = xw.memberStatus
// 这里的逻辑是 ---- 更新M_MEMBER_STATE_DATA 的人员状态
if ((memberSubscribe[data.icp_code]||memberSubscribe[data.icp_code]===0) && memberSubscribe[data.icp_code]+'' !== data.status+'') {
memberSubscribe[data.icp_code] = data.status
} else {
memberSubscribe[data.icp_code] = data.status
// 发射通知
}
EventBus.$emit(UPDATE_USER_STATUS, {
icp_code: data.icp_code,
user_code: data.user_code,
EXTERNAL_SYS_ACCOUNT: data.EXTERNAL_SYS_ACCOUNT,
status: data.status,
})
})
// nats接收人员位置变化
nats.on(subscribeLocation, (data) => {
EventBus.$emit(UPDATE_USER_LOCATION, {
icp_code: data.icp_code,
user_code: data.user_code,
EXTERNAL_SYS_ACCOUNT: data.EXTERNAL_SYS_ACCOUNT,
location: {
latitude: data.latitude,
longitude: data.longitude
}
})
}, window.app)
}
xw.userInfo.orgIds = orgIds
}
})
}
export async function getOrgMemberState (orgIds,xw) {
const result = await httpRequst({
apiType: 'NATS_SERVER',
method: 'post',
json: true,
url: '/api/getMemberStatus',
data: {
orgIds: orgIds,
type: '1'
}
}).then(res => {
if (res.data.returnCode === 0) {
let stateData = res.data.returnData.map(item => {
let obj = {}
obj[item.icp_code] = item.status
return obj
})
return stateData
} else {
return {}
}
})
return result
}