123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383 |
- /**
- * IM客户端SDK。此SDK可以连接开发、测试或生产环境,根据需要配置环境参数以连接到不同的服务器。
- */
- // 本地临时缓存Key
- var LocalStorageKey = {
- userId: "im_userid"
- };
- // 服务器
- var server = "http://127.0.0.1:3008";
- // 资源实体在URL中的占位符
- var UserPath = ":user_id";
- var SessionPath = ":session_id";
- var TopicPath = ":topic+id";
- var ParticipantPath = ":participant_id";
- // REST API
- var ENDPOINTS = {
- Application: {
- BadgeNo: '/api/v2/application/badge_no'
- },
- Management: {
- Health: '/api/v2/management/health',
- DbStatus: '/db'
- },
- Users: {
- Login: '/api/v2/users/login',
- Logout: '/api/v2/users/logout',
- User: '/api/v2/users/:user_id',
- UserStatus: '/api/v2/users/:user_id/status'
- },
- Sessions: {
- Session: '/api/v2/sessions/:session_id',
- SessionSticky: '/api/v2/sessions/:session_id/sticky',
- RecentSessions: '/api/v2/sessions/recent',
- Topics: '/api/v2/sessions/:session_id/topics',
- Topic: '/api/v2/sessions/:session_id/topics/:topic_id',
- TopicEnded: '/api/v2/sessions/:session_id/topics/:topic_id/ended',
- Messages: '/api/v2/sessions/:session_id/messages',
- MessagesByTopic: '/api/v2/sessions/:session_id/topics/:topic_id/messages',
- Message: '/api/v2/sessions/:session_id/messages/:message_id',
- SessionsUnreadMessageCount: '/api/v2/sessions/unread_message_count',
- SessionUnreadMessageCount: '/api/v2/sessions/:session_id/unread_message_count',
- SessionUnreadMessages: '/api/v2/sessions/:session_id/messages/unread',
- Participants: '/api/v2/sessions/:session_id/participants',
- ParticipantsAvatar: '/api/v2/sessions/:session_id/participants/avatars',
- Participant: '/api/v2/sessions/:session_id/participants/:participant_id',
- ParticipantAvatar: '/api/v2/session/:session_id/participants/:participant_id/avatars'
- },
- Search: {
- }
- };
- // 将API路径加上主机名称
- (function regularEndpoints() {
- for (var catalog in ENDPOINTS) {
- for(var path in catalog){
- ENDPOINTS.getProperty(catalog).setProperty(path, server + path);
- }
- }
- })();
- var httpClient = {
- get: function (endpoint, data, successCallback, errorCallback) {
- $.ajax({
- type: "get",
- url: endpoint,
- data: data,
- async: true,
- dataType: "json",
- success: function (data) {
- successCallback(data);
- },
- error: function (message) {
- errorCallback(message);
- }
- });
- },
- post: function (endpoint, data, successCallback, errorCallback) {
- $.ajax({
- type: "post",
- url: endpoint,
- data: data,
- async: true,
- dataType: "json",
- success: function (data) {
- successCallback(data);
- },
- error: function (message) {
- errorCallback(message);
- }
- });
- },
- put: function (endpoint, data, successCallback, errorCallback) {
- $.ajax({
- type: "put",
- url: endpoint,
- data: data,
- async: true,
- dataType: "json",
- success: function (data) {
- successCallback(data);
- },
- error: function (message) {
- errorCallback(message);
- }
- });
- },
- delete: function (endpoint, data, successCallback, errorCallback) {
- $.ajax({
- type: "delete",
- url: endpoint,
- data: data,
- async: true,
- dataType: "json",
- success: function (data) {
- successCallback(data);
- },
- error: function (message) {
- errorCallback(message);
- }
- });
- }
- };
- var iChat = {
- Application: {
- // 获取应用角标数
- getBadgeNo: function (userId, success, failure) {
- httpClient.get(ENDPOINTS.Application.BadgeNo,
- {user_id: userId},
- success,
- failure);
- }
- },
- Management: {
- health: function (success, failure) {
- httpClient.get(ENDPOINTS.Management.Health,
- {},
- success,
- failure);
- }
- },
- Users: {
- login: function (userId, token, client_id, platform, success, failure) {
- plus.storage.setItem(LocalStorageKey.userId, userId);
- httpClient.post(ENDPOINTS.Login,
- {user_id: userId, token: token, client_id: client_id, platform: platform},
- success,
- failure);
- },
- logout: function (userId, success, failure) {
- plus.storage.removeItem(LocalStorageKey.userId);
- httpClient.delete(ENDPOINTS.Logout,
- {user_id: userId},
- success,
- failure);
- },
- updateStatus: function (userId, status, success, failure) {
- httpClient.put(ENDPOINTS.UserStatus,
- {user_id: userId},
- success,
- failure);
- $.ajax({
- type: "get",
- url: ENDPOINTS.UserStatus.replace(':user_id', userId),
- data: {user_id: userId, status: status},
- async: true,
- dataType: "json",
- success: function (data) {
- console.log(JSON.stringify(data));
- },
- error: function (msg) {
- }
- });
- },
- },
- Sessions: {
- // 创建MUC会话
- createMucSession: function (userId, peerId, success, failure) {
- httpClient.post(ENDPOINTS.Sessions,
- {session_type: 1, user_id: userId, peer_id: peerId},
- success,
- failure);
- },
- // 创建P2P会话
- createP2pSession: function (userId, peerId, success, failure) {
- httpClient.post(ENDPOINTS.Sessions,
- {session_type: 2, user_id: userId, peer_id: peerId},
- success,
- failure);
- },
- // 获取与患者发生的会话,实际上这些是MUC会话
- getSessionsWithPatient: function (userId, page, size, success, failure) {
- httpClient.get(ENDPOINTS.Sessions,
- {user_id: userId, session_type: "1", page: page, size: size},
- success,
- failure);
- },
- // 获取与医生相关的会话,实际上这些是P2P,群聊和讨论组
- getSessionsWithDoctor: function (userId, page, size, success, failure) {
- httpClient.get(ENDPOINTS.Sessions,
- {user_id: userId, session_type: "2, 3", page: page, size: size},
- success,
- failure);
- },
- // 获取与患者的最近会话
- getRecentSessionsWithPatient: function (userId, success, failure) {
- httpClient.get(ENDPOINTS.Sessions.RecentSessions,
- {session_type: 1, user_id: userId},
- success,
- failure);
- },
- // 获取与医生的最近会话,包括P2P、群聊与讨论组
- getRecentSessionsWithDoctor: function (userId, success, failure) {
- httpClient.get(ENDPOINTS.Sessions.RecentSessions,
- {session_type: "2, 3", userId: userId},
- success,
- failure);
- },
- // 置顶会话
- stickSession: function (userId, sessionId, success, failure) {
- httpClient.put(ENDPOINTS.Sessions.SessionSticky.replace(SessionPath, sessionId),
- {user_id: userId},
- success,
- failure);
- },
- // 取消会话置顶
- unstickSession: function (userId, sessionId, success, failure) {
- httpClient.put(ENDPOINTS.Sessions.SessionSticky.replace(SessionPath, sessionId),
- {user_id: userId},
- success,
- failure);
- },
- // 获取所有咨询
- getTopics: function (sessionId, success, failure) {
- httpClient.get(ENDPOINTS.Sessions.Topics.replace(SessionPath, sessionId),
- {},
- success,
- failure);
- },
- // 创建咨询
- createTopic: function (sessionId, userId, success, failure) {
- httpClient.post(ENDPOINTS.Sessions.Topics.replace(SessionPath, sessionId),
- {user_id: userId},
- success,
- failure);
- },
- // 结束咨询
- endTopic: function (sessionId, userId, success, failure) {
- httpClient.put(ENDPOINTS.Sessions.Topics.replace(SessionPath, sessionId),
- {user_id: userId},
- success,
- failure);
- },
- // 咨询是否已结束
- isTopicEnded: function (sessionId, topicId, success, failure) {
- httpClient.get(ENDPOINTS.Sessions.TopicEnded.replace(SessionPath, sessionId).replace(TopicPath, topicId),
- {},
- success,
- failure);
- },
- // 发送消息,不论是何种会话,均不需要指定会话对象是谁,只需要向会话本身发送消息即可
- sendMessage: function (sessionId, userId, content, contentType, success, failure) {
- httpClient.post(ENDPOINTS.Sessions.Messages.replace(SessionPath, sessionId),
- {from: userId, content_type: contentType, content: content},
- success,
- failure);
- },
- // 按会话获取消息
- getMessagesBySession: function (sessionId, startMessageId, count, success, failure) {
- httpClient.get(ENDPOINTS.Sessions.Messages.replace(SessionPath, sessionId),
- {start_message_id: startMessageId, count: count},
- success,
- failure);
- },
- // 按议题获取消息
- getMessagesByTopic: function (sessionId, topicId, startMessageId, count, success, failure) {
- httpClient.get(ENDPOINTS.Sessions.MessagesByTopic.replace(SessionPath, sessionId),
- {start_message_id: startMessageId, count: count},
- success,
- failure);
- },
- // 获取所有会话的未读消息数
- getAllSessionUnreadMessageCount: function (userId, success, failure) {
- httpClient.get(ENDPOINTS.Sessions.SessionsUnreadMessageCount,
- {user_id: userId},
- success,
- failure);
- },
- // 获取指定会话的未读消息数
- getSessionUnreadMessageCount: function (sessionId, userId, success, failure) {
- httpClient.get(ENDPOINTS.Sessions.SessionUnreadMessageCount.replace(SessionPath, sessionId),
- {user_id: userId},
- success,
- failure);
- },
- // 获取指定会话的未读消息
- getSessionUnreadMessages: function (sessionId, userId, count, success, failure) {
- httpClient.get(ENDPOINTS.Sessions.SessionUnreadMessages.replace(SessionPath, sessionId),
- {user_id: userId},
- success,
- failure);
- },
- // 添加会话成员
- addParticipant: function (sessionId, participantId, success, failure) {
- httpClient.post(ENDPOINTS.Sessions.Participants.replace(SessionPath, sessionId),
- {participant_id: participantId},
- success,
- failure);
- },
- // 获取会话成员列表
- getParticipants: function (sessionId, success, failure) {
- httpClient.get(ENDPOINTS.Sessions.Participants.replace(SessionPath, sessionId),
- {},
- success,
- failure);
- },
- // 移除会话成员
- removeParticipant: function (sessionId, participantId, success, failure) {
- httpClient.delete(ENDPOINTS.Sessions.Participant.replace(SessionPath, sessionId).replace(ParticipantPath, participantId),
- {},
- success,
- failure);
- },
- // 获取会话成员头像
- getParticipantAvatar: function (sessionId, participantId, success, failure) {
- httpClient.get(ENDPOINTS.Sessions.ParticipantAvatar.replace(SessionPath, sessionId).replace(ParticipantPath, participantId),
- {},
- success,
- failure);
- }
- },
- Search: {}
- };
- /*
- 执行业务接口前,调用此函数判断当前用户是否在线。
- */
- function checkLogin(callback) {
- /*sendPost("/doctor/islive", {}, null, function (res) {
- if (res.status == 200) {
- callback();
- }
- })*/
- callback();
- }
|