/** * 此文件内容为常用的系统枚举及变量。 */ /** * 系统部署时的配置文件。 * * @type {string} */ "use strict"; let configFile = "config."; if (process.env.IM_PROFILE === "prod") { configFile += "prod"; } else if (process.env.IM_PROFILE === "prodPC") { configFile += "prodPC"; } 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, // 临时讨论组 PRESCRIPTION: 8, // 续方 PRESCRIPTION_HOSPITAL:9,//医院在线复诊 ONDOOR_NURSING:11 //上门护理 }; exports.SESSION_TYPES = SESSION_TYPES; /** * 会话状态 */ const TOPIC_STATUS = { NEW: 0, // 新建 PROCEEDINGS: 1, // 进行中 ENDED: 10 // 结束 }; exports.SESSION_STATUS = { PROCEEDINGS: 0, // 进行中 ENDED:1 // 结束 }; /** * 会话业务类型 */ 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_TYPES = { PlainText: 1, // 信息 Image: 2, // 图片信息 Audio: 3, // 语音信息 Article: 4, // 文章信息 GoTo: 5, // 跳转信息,求组其他医生或者邀请其他医生发送的推送消息 TopicBegin: 6, // 议题开始 TopicEnd: 7, // 议题结束 10 11 系统发送的会话消息 TopicInto: 14, // 进入议题 系统发送的会话消息 Video:12,//视频 System:13,//系统消息 PrescriptionCheck:15,//续方审核消息消息 typeToDescription: function (type, defaultDescription) { if (CONTENT_TYPES.Image == type) { return '[图片]'; } else if (CONTENT_TYPES.Audio == type) { return '[语音]'; } else if (CONTENT_TYPES.Video == type) { return '[视频]'; } else if (type > 3) { return defaultDescription; } return false; } }; exports.CONTENT_TYPES = CONTENT_TYPES; exports.SOCKET_TYPES={ PATIENT:"patient", DOCTOR:"doctor", PC_DOCTOR:"pc_doctor", DEMO:"demo" } /** * 客户端平台。 */ exports.PLATFORM = { iOS: 0, Android: 1, PC: 3, 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", UserPcStatus: "users:" + REDIS_KEY_REPLACER + ":pc_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 = { Doctors: "doctors", Patients: "patients", P2pMessages: "p2p_messages", MucMessages: "muc_messages", GroupMessages: "group_messages", DiscussionMessages: "discussion_messages", SystemMessages: "system_messages", Participants: "participants", Sessions: "sessions", Topics: "topics", StickySessions: "sticky_sessions", WlyyConsult:"wlyy_consults", WlyyConsultTeam:"wlyy.wlyy_consult_team", WlyyConsultS:"wlyy.wlyy_consult", 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 if (sessionType == SESSION_TYPES.PRESCRIPTION) return DB_TABLES.MucMessages; else if (sessionType == SESSION_TYPES.PRESCRIPTION_HOSPITAL) return DB_TABLES.MucMessages; else if (sessionType == SESSION_TYPES.ONDOOR_NURSING) return DB_TABLES.MucMessages; else throw {message: "Unknown session type"}; } }; exports.DB_TABLES = DB_TABLES;