|  | @ -8,17 +8,225 @@
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 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 configFile = require('../include/commons').CONFIG_FILE;
 | 
	
		
			
				|  |  | let config = require('../resources/config/' + configFile);
 | 
	
		
			
				|  |  | let log = require("../util/log.js");
 | 
	
		
			
				|  |  | let objectUtil = require('../util/object.util');
 | 
	
		
			
				|  |  | let Sessions = require('../models/sessions/sessions');
 | 
	
		
			
				|  |  | let Participants = require('../models/sessions/participants');
 | 
	
		
			
				|  |  | const APIv1 = require('../include/endpoints').APIv1;
 | 
	
		
			
				|  |  | const CONTENT_TYPES = require('../include/commons').CONTENT_TYPE;
 | 
	
		
			
				|  |  | const MAX_INT = require('../include/commons').MAX_INT;
 | 
	
		
			
				|  |  | const DEFAULT_PAGE_SIZE = require('../include/commons').DEFAULT_PAGE_SIZE;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | let Users = require('../models/user/users');
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | const APIv1 = require('../include/endpoints').APIv1;
 | 
	
		
			
				|  |  | const MODEL_EVENTS = require('../include/commons').MODEL_EVENTS;
 | 
	
		
			
				|  |  | /**
 | 
	
		
			
				|  |  |  * 获取用户的聊天列表
 | 
	
		
			
				|  |  |  * 请求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.getSessionMessages(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&name=3121&sessionType=2
 | 
	
		
			
				|  |  |  */
 | 
	
		
			
				|  |  | router.post(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.createSessions(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 sessions = new Sessions();
 | 
	
		
			
				|  |  |     ControllerUtil.regModelEventHandler(sessions, res);
 | 
	
		
			
				|  |  |     message.timestamp=new Date();
 | 
	
		
			
				|  |  |     sessions.saveMessageBySession(message,sessionId);
 | 
	
		
			
				|  |  | })
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | /**
 | 
	
		
			
				|  |  |  * 发送消息
 | 
	
		
			
				|  |  |  * 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);
 | 
	
		
			
				|  |  | })
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | router.get(APIv1.Chats)
 | 
	
		
			
				|  |  | module.exports = router;
 |