/** * 此文件内容为常用的系统枚举及变量。 */ /** * 系统部署时的配置文件。 * * @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; /** * 消息内容类型。 */ exports.CONTENT_TYPE = { PlainText: 1, // 信息 Image: 2, // 图片信息 Audio: 3, // 语音信息 Article: 4, // 文章信息 GoTo: 5, // 跳转信息 TopicBegin: 6, // 议题开始 TopicEnd: 7 // 议题结束 }; /** * 客户端平台。 */ 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, Participants: "participants:" + REDIS_KEY_REPLACER, ParticipantsRole: "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" }; exports.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) { switch (sessionType) { case SESSION_TYPES.SYSTEM: return DB_TABLES.SystemMessages; case SESSION_TYPES.MUC: return DB_TABLES.MucMessages; case SESSION_TYPES.P2P: return DB_TABLES.P2pMessages; case SESSION_TYPES.GROUP: return DB_TABLES.GroupMessages; case SESSION_TYPES.DISCUSSION: return DB_TABLES.DiscussionMessages; default: throw {message: "Unknown session type"}; } } };