/** * 会话接口。 * * author: Sand * since: 12/15/2016 */ "use strict"; let express = require('express'); let router = express.Router(); let http = require('http'); let log = require('../util/log.js'); let ObjectUtil = require("../util/object.util.js"); let ControllerUtil = require('../util/controller.util'); let Sessions = require('../models/sessions/sessions'); let Participants = require('../models/sessions/participants'); const APIv1 = require('../include/endpoints').APIv1; /** * 获取用户的聊天列表 * 请求URL /sessions?page=0&pagesize=10&user=3121 */ router.get(APIv1.Sessions.SessionList,function(req,res){ let page = req.query.page; let pagesize = req.query.pagesize; let user = req.query.user; if (!page) { throw {httpStatus: 406, message: 'Missing page.'}; } if (!pagesize) { throw {httpStatus: 406, message: 'Missing pagesize.'}; } if (!user) { throw {httpStatus: 406, message: 'Missing user.'}; } let sessions = new Sessions(); ControllerUtil.regModelEventHandler(sessions, res); sessions.getUserSessions(user,page,pagesize); }); /** * 获取用户的聊天信息列表 * 请求URL /messages?page=0&pagesize=10&user=3121&sessionId=testsessionmsg1 */ router.get(APIv1.Sessions.MessageList,function(req,res){ let page = req.query.page; let pagesize = req.query.pagesize; let user = req.query.user; let sessionId =req.query.sessionId; if (!page) { throw {httpStatus: 406, message: 'Missing page.'}; } if (!pagesize) { throw {httpStatus: 406, message: 'Missing pagesize.'}; } if (!user) { throw {httpStatus: 406, message: 'Missing user.'}; } if (!sessionId) { throw {httpStatus: 406, message: 'Missing sessionId.'}; } let sessions = new Sessions(); ControllerUtil.regModelEventHandler(sessions, res); sessions.getMessages(sessionId,user,page,pagesize); }); /** * 某个聊天记录置顶操作 * 请求URL /stick?user=3121&sessionId=testsessionmsg1 */ router.post(APIv1.Sessions.StickSession,function(req,res){ let user = req.query.user; let sessionId =req.query.sessionId; if (!user) { throw {httpStatus: 406, message: 'Missing user.'}; } if (!sessionId) { throw {httpStatus: 406, message: 'Missing sessionId.'}; } let sessions = new Sessions(); ControllerUtil.regModelEventHandler(sessions, res); sessions.stickSession(sessionId,user); }); /** * 取消置顶 * 请求URL /cancelStick?user=3121&sessionId=testsessionmsg1 */ router.post(APIv1.Sessions.UnStickSession,function(req,res){ let user = req.query.user; let sessionId =req.query.sessionId; if (!user) { throw {httpStatus: 406, message: 'Missing user.'}; } if (!sessionId) { throw {httpStatus: 406, message: 'Missing sessionId.'}; } let sessions = new Sessions(); ControllerUtil.regModelEventHandler(sessions, res); sessions.cancelStickSession(sessionId,user); }); /** * 创建讨论组 * sessionType:1表示MUC会话,2表示P2P,3表示群会话,4表示临时讨论组 * users 讨论组包含的用户标示 * sessionId 会话ID * 请求URL /create?sessionId=0&users={10:1,20:1}&name=3121&sessionType=2 */ router.get(APIv1.Sessions.CreateSession,function(req,res){ let sessionId = req.query.sessionId; let users = req.query.users; let name = req.query.name; let sessionType = req.query.sessionType; if (!sessionId) { throw {httpStatus: 406, message: 'Missing sessionId.'}; } if (!users) { throw {httpStatus: 406, message: 'Missing users.'}; } if (!name) { throw {httpStatus: 406, message: 'Missing name.'}; } if (!sessionType) { throw {httpStatus: 406, message: 'Missing sessionType.'}; } let sessions = new Sessions(); ControllerUtil.regModelEventHandler(sessions, res); sessions.createSession(sessionId,name,sessionType,users); }); /** * 发送消息 * message:消息发送对象 * sessionId 会话ID */ router.post(APIv1.Sessions.SendMsg,function(req,res){ let message = req.body; if (!ObjectUtil.isJsonObject(message)) { throw {httpStatus: 406, message: 'Problems parsing JSON.'} } // 字段判断 let testing = ObjectUtil.fieldsCheck(message, "senderId", "senderName", "contentType", "content"); if (!testing.pass) { throw {httpStatus: 406, message: testing.message} } let sessionId = req.query.sessionId; if (!sessionId) { throw {httpStatus: 406, message: 'Missing sessionId.'}; } let type = req.query.type; if (!type) { throw {httpStatus: 406, message: 'Missing type.'}; } let sessions = new Sessions(); ControllerUtil.regModelEventHandler(sessions, res); message.timestamp=new Date(); sessions.saveMessageBySession(message,sessionId,type); }); /** * 发送消息 * message:消息发送对象 * sessionId 会话ID */ router.post(APIv1.Sessions.SendMsg,function(req,res){ let message = req.body; if (!ObjectUtil.isJsonObject(message)) { throw {httpStatus: 406, message: 'Problems parsing JSON.'} } // 字段判断 let testing = ObjectUtil.fieldsCheck(message, "senderId", "senderName", "contentType", "content"); if (!testing.pass) { throw {httpStatus: 406, message: testing.message} } let sessionId = req.query.sessionId; if (!sessionId) { throw {httpStatus: 406, message: 'Missing sessionId.'}; } let sessions = new Sessions(); ControllerUtil.regModelEventHandler(sessions, res); message.timestamp=new Date(); sessions.saveMessageBySession(message,sessionId); }); /** * 移除人员 * user:移除的人员 * sessionId 会话ID */ router.post(APIv1.Sessions.RemoveSessionUser,function(req,res){ let user = req.query.user; if (!user) { throw {httpStatus: 406, message: 'Missing user.'}; } let sessionId = req.query.sessionId; if (!sessionId) { throw {httpStatus: 406, message: 'Missing sessionId.'}; } let participants = new Participants(); ControllerUtil.regModelEventHandler(sessions, res); participants.deleteUser(sessionId,user); }); /** * 移除人员 * user:移除的人员 * sessionId 会话ID */ router.post(APIv1.Sessions.PushSessionUser,function(req,res){ let user = req.query.user; if (!user) { throw {httpStatus: 406, message: 'Missing user.'}; } let sessionId = req.query.sessionId; if (!sessionId) { throw {httpStatus: 406, message: 'Missing sessionId.'}; } let participants = new Participants(); ControllerUtil.regModelEventHandler(sessions, res); participants.pushUser(sessionId,user); }); module.exports = router;