/** * 此文件内容为常用的系统枚举及变量。 */ /** * 系统部署时的配置文件。 * * @type {string} */ "use strict"; let configFile = "config."; if (process.env.IM_PROFILE === "prod") { configFile += "prod"; } else if (process.env.IM_PROFILE === "test") { configFile += "test"; } else { configFile += "dev"; } exports.CONFIG_FILE = configFile; /** * 会话类型 */ const SESSION_TYPES = { SYSTEM: 0, // 系统会话 MUC: 1, // MUC会话 P2P: 2, // P2P GROUP: 3, // 固定组 DISCUSSION: 4 // 临时讨论组 }; exports.SESSION_TYPES = SESSION_TYPES; /** * 会话状态 */ const TOPIC_STATUS = { NEW: 0, // 新建 PROCEEDINGS: 1, // 进行中 ENDED: 10 // 结束 }; /** * 会话业务类型 */ exports.SESSION_BUSINESS_TYPE = { PATIENT: 2,//针对患者 DOCTOR: 1//针对医生 }; exports.TOPIC_STATUS = TOPIC_STATUS; /** * 会话参与者角色 */ const PARTICIPANT_ROLES = { HOST: 0, REGULAR: 1, BYSTANDER: 10 }; exports.PARTICIPANT_ROLES = PARTICIPANT_ROLES; /** * 消息内容类型。 */ const CONTENT_TYPE = { PlainText: 1, // 信息 Image: 2, // 图片信息 Audio: 3, // 语音信息 Article: 4, // 文章信息 GoTo: 5, // 跳转信息 TopicBegin: 6, // 议题开始 TopicEnd: 7, // 议题结束 typeToDescription: function (type, defaultDescription) { if (type === CONTENT_TYPES.Image) { return '[图片]'; } else if (type === CONTENT_TYPES.Audio) { return '[语音]'; } else if (type > 3) { return defaultDescription; } return false; } }; exports.CONTENT_TYPE = CONTENT_TYPE; /** * 客户端平台。 */ exports.PLATFORM = { iOS: 0, Android: 1, Wechat: 10 }; /** * 组类型。 */ exports.GROUP_TYPE = { AdminTeam: 1, DiscussionGroup: 2 }; /** * 模型事件。 * * @type {{Error: string, DataNotFound: string, OK: string}} */ exports.MODEL_EVENTS = { Error: "error", // 数据库访问出错 DataNotFound: "no_data", // 找不到指定的数据 OK: "ok", // 操作结束或有数据返回 Exists: "exists" // 数据已存在 }; /** * 整型最大值。 */ exports.MAX_INT = 9007199254740992; /** * 置顶会话基础分值,以此为下限向上递增。 */ exports.STICKY_SESSION_BASE_SCORE = 9000000000000; /** * 默认分页大小。 */ exports.DEFAULT_PAGE_SIZE = 100; /** * Redis Key列表与占位符。 */ const REDIS_KEY_REPLACER = "{id}"; exports.REDIS_KEY_REPLACER = REDIS_KEY_REPLACER; exports.SESSION_USER_STATUS = { ONLINE: 0, OTHER: 1 }; exports.REDIS_KEYS = { Users: "users:", User: "users:" + REDIS_KEY_REPLACER, UserAppStatus: "users:" + REDIS_KEY_REPLACER + ":app_status", UserWechatStatus: "users:" + REDIS_KEY_REPLACER + ":wechat_status", UserSessions: "users:" + REDIS_KEY_REPLACER + ":sessions", Sessions: "sessions:", Session: "sessions:" + REDIS_KEY_REPLACER, SessionParticipants: "participants:" + REDIS_KEY_REPLACER, SessionParticipantsRole: "participants:" + REDIS_KEY_REPLACER + ":role", Topics: "sessions:" + REDIS_KEY_REPLACER + ":topics", Topic: "topics:" + REDIS_KEY_REPLACER, Messages: "sessions:" + REDIS_KEY_REPLACER + ":messages", MessagesByTimestamp: "sessions:" + REDIS_KEY_REPLACER + ":messages_by_timestamp" }; const DB_TABLES = { P2pMessages: "p2p_messages", MucMessages: "muc_messages", GroupMessages: "group_messages", DiscussionMessages: "discussion_messages", SystemMessages: "system_messages", Participants: "participants", Sessions: "sessions", Topics: "topics", StickySessions: "sticky_sessions", sessionTypeToTableName: function (sessionType) { if (sessionType == SESSION_TYPES.SYSTEM) return DB_TABLES.SystemMessages; else if (sessionType == SESSION_TYPES.MUC) return DB_TABLES.MucMessages; else if (sessionType == SESSION_TYPES.P2P) return DB_TABLES.P2pMessages; else if (sessionType == SESSION_TYPES.GROUP) return DB_TABLES.GroupMessages; else if (sessionType == SESSION_TYPES.DISCUSSION) return DB_TABLES.DiscussionMessages; else throw {message: "Unknown session type"}; } }; exports.DB_TABLES = DB_TABLES;