# 数据库操作相关

# 消息格式说明

# 最近消息列表消息格式

let ConversationList = {
  targetId: "targetId",
  conversationTitle: "conversationTitle",
  conversationType: "conversationType",
  draft: "draft",
  hasUnreadMention: "hasUnreadMention",
  isHidden: "isHidden",
  isTop: "isTop",
  latestMessage: "latestMessage",
  latestMessageId: "latestMessageId",
  messageStatus: "messageStatus",
  mentionedMsg: "mentionedMsg",
  notificationStatus: "notificationStatus",
  receivedTime: "receivedTime",
  senderPortraitUri: "senderPortraitUri",
  senderUserId: "senderUserId",
  senderUserName: "senderUserName",
  sentTime: "sentTime",
  unreadMessageCount: "unreadMessageCount",
  readTime: "readTime",
};

# IM 消息格式

let ChatMessage = {
  content: "content",
  conversationType: "conversationType",
  extra: "extra",
  isLocalMessage: "isLocalMessage",
  messageDirection: "messageDirection",
  messageId: "messageId",
  messageType: "messageType",
  messageUId: "messageUId",
  objectName: "objectName",
  offLineMessage: "offLineMessage",
  receivedTime: "receivedTime",
  senderUserId: "senderUserId",
  sentTime: "sentTime",
  messageStatus: "messageStatus",
  targetId: "targetId",
  targetName: "targetName",
};

# 数据库创建

# createSql(userId, callback)

Appdata 文件夹下的 ZhiXin 文件夹中创建一个数据库文件 {userId}@localhost.sqlite如果用户数据库存在老表,会进行数据库更新操作,将老表的数据格式化后迁移到新表中。

  • userId 用户的 ID
  • callback 回调

回调

  • 回调返回 update 表明数据库需要升级,这时候可以加载正在升级数据库对话框
  • 回调返回 init 表明数据库不需要升级,是直接创建的,并创建完成
  • 回调返回 finish 表明数据库升级完成

代码示例

ZX_CLIENT.createSql("123456", (data) => {
  console.log(data);
});

# 消息获取

# 获取最近消息列表

# ZX_CLIENT.ImMsg.getConversationList(callback)

获取表 ConversationList 中所有的数据。

  • callback 回调

代码示例

ZX_CLIENT.ImMsg.getConversationList((data) => {
  console.log(data);
});

# 根据时间戳获取 Im 聊天消息

# ZX_CLIENT.ImMsg.getChatMessageByTime(targetId, sentTime, direction, callback)

获取表 ChatMessage 中,会话 targetIdsentTime(根据 direction 进行判断,小于 0 为之前 20 条,0 为前后 10 条,大于 0 为之后 20 条)的聊天记录。

  • targetId:会话 ID
  • sentTime:时间戳
  • direction:范围
  • callback:回调

代码示例

ZX_CLIENT.ImMsg.getChatMessageByTime("123456", "7890", -1, (data) => {
  console.log(data);
});

# 全局搜索消息

# ZX_CLIENT.ImMsg.searchChatMessage(keyWords, sentTime, direction, size, callback);

搜索表 ChatMessage 中 的聊天记录

参数说明

  • keyWords:关键词
  • sentTime:时间戳
  • direction:搜索方向 大于 0 就是之后的 小于 0 就是之前的
  • size:返回结果个数
  • callback:回调

代码示例

搜索关键词 电费第,需要返回 1578382166713 之前的消息 20

ZX_CLIENT.ImMsg.searchChatMessage("电费第", "1578382166713", -1, 20, (data) => {
  console.log(data);
});

# 全局搜索消息

# ZX_CLIENT.ImMsg.getChatMessage(condition, callback);

搜索表 ChatMessage 中 的聊天记录

  • condition:搜索条件
  • callback:回调

代码示例

搜索 messageTypeFileMessage,且 targetId7686322317716898133 的消息

ZX_CLIENT.ImMsg.getChatMessage(
  {
    targetId: "7686322317716898133",
    messageType: "FileMessage",
  },
  (data) => {
    console.log(data);
  }
);

# 获取历史消息

# ZX_CLIENT.ImMsg.getChatMessageHistory({ targetId, sentTime, direction, messageType, keyWords, count, callback});

搜索表 ChatMessage 中 的聊天记录

参数说明

  • targetId:对话 ID
  • sentTime:时间
  • direction:方向
  • messageType:消息类型(是个数组)
  • keyWords:关键词
  • count:消息个数
  • callback:回调

代码示例

搜索 messageTypeFileMessageVideoMessagetargetId7686322317716898133sentTime1582181182638 之后的消息,

ZX_CLIENT.ImMsg.getChatMessageHistory({
  targetId: "7686322317716898133",
  sentTime: "1582181182638",
  direction: 1,
  messageType: ["FileMessage", "VideoMessage"],
  keyWords: undefined,
  callback: (data) => {
    console.log("afdfadfadf", data);
  },
});

搜索 messageTypeFileMessageVideoMessagetargetId7686322317716898133sentTime1582181182638 之后的消息,关键词 keyWords哈哈哈

ZX_CLIENT.ImMsg.getChatMessageHistory({
  targetId: "7686322317716898133",
  sentTime: "1582181182638",
  direction: 1,
  messageType: ["FileMessage", "VideoMessage"],
  keyWords: "哈哈哈",
  callback: (data) => {
    console.log("afdfadfadf", data);
  },
});

# 消息写入

# 向最近消息列表插入消息

# ZX_CLIENT.ImMsg.insertConversationList(messageData, callback)

向表 ConversationList 中插入消息。

  • messageData:最近聊天列表消息 (请严格按照上方消息格式说明传值)
  • callback:回调

代码示例

ZX_CLIENT.ImMsg.insertConversationList(messageData, (data) => {
  console.log(data);
});

# 更新最近消息列表消息

# ZX_CLIENT.updateConversationList(condition, messageData, callback)

更新表 ConversationList 中的消息。

  • targetId:会话 id
  • messageData:需要更新的字段
  • callback:回调

代码示例

更新 targetId12345678isToptrueconversationTitlebalabala

ZX_CLIENT.ImMsg.updateConversationList(
  {
    targetId: "123456789",
  },
  { isTop: true, conversationTitle: "balabala" },
  (data) => {
    console.log(data);
  }
);

# 删除最近消息列表消息

# ZX_CLIENT.ImMsg.deleteConversationList(condition, callback);

从表 ConversationList 中删除消息。

  • condition:条件
  • callback:回调

代码示例

ZX_CLIENT.ImMsg.deleteConversationList({ targetId: 12345 }, (data) => {
  console.log(data);
});

# 批量添加 IM 聊天消息

# ZX_CLIENT.ImMsg.bulkInsertChatMessage(params, callback);

向表 ChatMessage 中批量添加聊天消息。

  • params:聊天消息的数组 [ChatMessage1,ChatMessage2,ChatMessage3] ChatMessage 格式见上方消息格式说明的 IM 消息格式
  • callback:回调

代码示例

let ChatMessage = {
  content: "content",
  conversationType: "conversationType",
  extra: "extra",
  isLocalMessage: "isLocalMessage",
  messageDirection: "messageDirection",
  messageId: "messageId",
  messageType: "messageType",
  messageUId: "messageUId",
  objectName: "objectName",
  offLineMessage: "offLineMessage",
  receivedTime: "receivedTime",
  senderUserId: "senderUserId",
  sentTime: "sentTime",
  messageStatus: "messageStatus",
  targetId: "targetId",
  targetName: "targetName",
};

ZX_CLIENT.ImMsg.bulkInsertChatMessage(
  [ChatMessage, ChatMessage, ChatMessage],
  (data) => {
    console.log(data);
  }
);

# 更新 IM 消息列表消息

# ZX_CLIENT.ImMsg.updateChatMessage(condition, messageData, callback);

更新表 ChatMessage 中的消息。

  • messageId:消息 id
  • messageData:需要更新的字段
  • callback:回调

代码示例

更新 messageId12345678content123 isLocalMessagetrue

ZX_CLIENT.ImMsg.updateChatMessage(
  {
    messageId: "123456789",
  },
  { content: 123, conversationTitle: true },
  (data) => {
    console.log(data);
  }
);

# 删除 IM 消息列表消息

ZX_CLIENT.ImMsg.deleteChatMessage(condition, callback);

从表 ChatMessage 中删除消息。

  • condition:条件
  • callback:回调

代码示例

ZX_CLIENT.ImMsg.deleteChatMessage({ targetId: 12345 }, (data) => {
  console.log(data);
});

# 设置消息已读

# ZX_CLIENT.ImMsg.toReadMsg(targetId, include, callback);

  1. 更新表 ChatMessage{targetId} 符合 {include}(数组)的消息 messageStatus31
  2. 更新表 ConversationList{targetId} 的消息 unreadMessageCount0
  • targetId:对话 id
  • include:需要更新的messageStatus,是个数组
  • callback:回调

代码示例

更新 targetId123456789messageStatus 为 11 22 33 中的一个的消息为已读

ZX_CLIENT.ImMsg.toReadMsg("123456789", ["11", "22", "33"], (data) => {
  console.log(data);
});