UNPKG

fcc-core

Version:

Fusion communication center.

75 lines (71 loc) 2.47 kB
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 }