import { TypeHookMsg_V1 } from '../../types/typesMsg' import CONST_MSG_TYPE from '../../const/CONST_MSG_TYPE' import CONST_MSG_TYPE_V2 from '../../const/CONST_MSG_TYPE_V2' // 格式化v2群聊消息,变成v1消息格式 export function formatMsg_V2(msgData): TypeHookMsg_V1 | null { msgData.msgtype = MapMsgType_V2(msgData) delete msgData.type delete msgData.msg_type // msgData.sender 为空时,代表是私聊消息,消息发送人是user_id // msgData.sender 不为空时,代表是群聊消息,消息发送人id为sender, 群id为user_id return { at_list: msgData.at_list, content: msgData.content, is_room: msgData.sender == '' ? 0 : 1, // 0 私聊,1 群聊 // msg_id: msgData.msg_id, // 2.x 同一条消息msg_id不同,替代方案 msg_id: msgData.user_id.slice(-4) + msgData.time_stamp, // 2.x 同一条消息msg_id不同,替代方案 hook_wx_msg_id: msgData.msg_id, msgtype: msgData.msgtype, rereceiver: msgData.self_user_id, room_conversation_id: msgData.sender == '' ? '' : msgData.user_id, send_time: msgData.time_stamp, sender: msgData.sender == '' ? msgData.user_id : msgData.sender, sender_name: msgData.send_nick_name, // 新增 is_self_msg: msgData.is_self_msg === 1 && msgData.self_user_id == msgData.user_id ? 1 : 0, // 1: 自己发送的消息, 0: 其他消息 member_list: msgData.member_list || [] // 其他参数 // v1: // appinfo: '9043546910012672396', // conversation_id: 'S:1688852708135685_7881300234016407', // readuinscount: 0, // referid: 0, // sender_name: '。', // server_id: 30061998 // v2: // waiter_id 客服ID } } // 将msgData中的type+msg_type转换为v1版本对应的type export function MapMsgType_V2(msgData): number { // msgData type msg_type let mapType = 9999 switch (msgData.type) { case 100: mapType = getKeyByValue(CONST_MSG_TYPE, CONST_MSG_TYPE_V2[msgData.msg_type]) break // case 200: // 好友申请通知 case 201: mapType = 21 // 好友删除通知 // "del_type": 0, //删除类型 0:别人删我 1:我删别人 break case 300: mapType = 17 // 群名称变换通知 break // case 900: // 退出登录通知 // case 1000: // 系统弹窗通知 // case 901: // 输入登录验证码通知 } return mapType } function getKeyByValue(obj, value): number { for (const key in obj) { if (obj[key] === value) { return Number(key) } } return 9999 // 如果没有找到对应的值,返回 9999-其他 }