session.endpoint.js 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. /**
  2. * 会话接口。
  3. *
  4. * author: Sand
  5. * since: 12/15/2016
  6. */
  7. "use strict";
  8. let express = require('express');
  9. let router = express.Router();
  10. let http = require('http');
  11. let log = require('../util/log.js');
  12. let ObjectUtil = require("../util/object.util.js");
  13. let ControllerUtil = require('../util/controller.util');
  14. let Sessions = require('../models/sessions/sessions');
  15. let Participants = require('../models/sessions/participants');
  16. const APIv1 = require('../include/endpoints').APIv1;
  17. const CONTENT_TYPES = require('../include/commons').CONTENT_TYPE;
  18. const MAX_INT = require('../include/commons').MAX_INT;
  19. const DEFAULT_PAGE_SIZE = require('../include/commons').DEFAULT_PAGE_SIZE;
  20. /**
  21. * 获取用户的聊天列表
  22. * 请求URL /sessions?page=0&pagesize=10&user=3121
  23. */
  24. router.get(APIv1.Sessions.SessionList,function(req,res){
  25. let page = req.query.page;
  26. let pagesize = req.query.pagesize;
  27. let user = req.query.user;
  28. if (!page) {
  29. throw {httpStatus: 406, message: 'Missing page.'};
  30. }
  31. if (!pagesize) {
  32. throw {httpStatus: 406, message: 'Missing pagesize.'};
  33. }
  34. if (!user) {
  35. throw {httpStatus: 406, message: 'Missing user.'};
  36. }
  37. let sessions = new Sessions();
  38. ControllerUtil.regModelEventHandler(sessions, res);
  39. sessions.getUserSessions(user,page,pagesize);
  40. })
  41. /**
  42. * 获取用户的聊天信息列表
  43. * 请求URL /messages?page=0&pagesize=10&user=3121&sessionId=testsessionmsg1
  44. */
  45. router.get(APIv1.Sessions.MessageList,function(req,res){
  46. let page = req.query.page;
  47. let pagesize = req.query.pagesize;
  48. let user = req.query.user;
  49. let sessionId =req.query.sessionId;
  50. if (!page) {
  51. throw {httpStatus: 406, message: 'Missing page.'};
  52. }
  53. if (!pagesize) {
  54. throw {httpStatus: 406, message: 'Missing pagesize.'};
  55. }
  56. if (!user) {
  57. throw {httpStatus: 406, message: 'Missing user.'};
  58. }
  59. if (!sessionId) {
  60. throw {httpStatus: 406, message: 'Missing sessionId.'};
  61. }
  62. let sessions = new Sessions();
  63. ControllerUtil.regModelEventHandler(sessions, res);
  64. sessions.getSessionMessages(sessionId,user,page,pagesize);
  65. })
  66. /**
  67. * 某个聊天记录置顶操作
  68. * 请求URL /stick?user=3121&sessionId=testsessionmsg1
  69. */
  70. router.post(APIv1.Sessions.StickSession,function(req,res){
  71. let user = req.query.user;
  72. let sessionId =req.query.sessionId;
  73. if (!user) {
  74. throw {httpStatus: 406, message: 'Missing user.'};
  75. }
  76. if (!sessionId) {
  77. throw {httpStatus: 406, message: 'Missing sessionId.'};
  78. }
  79. let sessions = new Sessions();
  80. ControllerUtil.regModelEventHandler(sessions, res);
  81. sessions.stickSession(sessionId,user);
  82. })
  83. /**
  84. * 取消置顶
  85. * 请求URL /cancelStick?user=3121&sessionId=testsessionmsg1
  86. */
  87. router.post(APIv1.Sessions.UnStickSession,function(req,res){
  88. let user = req.query.user;
  89. let sessionId =req.query.sessionId;
  90. if (!user) {
  91. throw {httpStatus: 406, message: 'Missing user.'};
  92. }
  93. if (!sessionId) {
  94. throw {httpStatus: 406, message: 'Missing sessionId.'};
  95. }
  96. let sessions = new Sessions();
  97. ControllerUtil.regModelEventHandler(sessions, res);
  98. sessions.cancelStickSession(sessionId,user);
  99. })
  100. /**
  101. * 创建讨论组
  102. * sessionType:1表示MUC会话,2表示P2P,3表示群会话,4表示临时讨论组
  103. * users 讨论组包含的用户标示
  104. * sessionId 会话ID
  105. * 请求URL /create?sessionId=0&users=10&name=3121&sessionType=2
  106. */
  107. router.post(APIv1.Sessions.CreateSession,function(req,res){
  108. let sessionId = req.query.sessionId;
  109. let users = req.query.users;
  110. let name = req.query.name;
  111. let sessionType = req.query.sessionType;
  112. if (!sessionId) {
  113. throw {httpStatus: 406, message: 'Missing sessionId.'};
  114. }
  115. if (!users) {
  116. throw {httpStatus: 406, message: 'Missing users.'};
  117. }
  118. if (!name) {
  119. throw {httpStatus: 406, message: 'Missing name.'};
  120. }
  121. if (!sessionType) {
  122. throw {httpStatus: 406, message: 'Missing sessionType.'};
  123. }
  124. let sessions = new Sessions();
  125. ControllerUtil.regModelEventHandler(sessions, res);
  126. sessions.createSessions(sessionId,name,sessionType,users);
  127. })
  128. /**
  129. * 发送消息
  130. * message:消息发送对象
  131. * sessionId 会话ID
  132. */
  133. router.post(APIv1.Sessions.SendMsg,function(req,res){
  134. let message = req.body;
  135. if (!ObjectUtil.isJsonObject(message)) {
  136. throw {httpStatus: 406, message: 'Problems parsing JSON.'}
  137. }
  138. // 字段判断
  139. let testing = ObjectUtil.fieldsCheck(message, "senderId", "senderName", "contentType", "content");
  140. if (!testing.pass) {
  141. throw {httpStatus: 406, message: testing.message}
  142. }
  143. let sessionId = req.query.sessionId;
  144. if (!sessionId) {
  145. throw {httpStatus: 406, message: 'Missing sessionId.'};
  146. }
  147. let sessions = new Sessions();
  148. ControllerUtil.regModelEventHandler(sessions, res);
  149. message.timestamp=new Date();
  150. sessions.saveMessageBySession(message,sessionId);
  151. })
  152. /**
  153. * 发送消息
  154. * message:消息发送对象
  155. * sessionId 会话ID
  156. */
  157. router.post(APIv1.Sessions.SendMsg,function(req,res){
  158. let message = req.body;
  159. if (!ObjectUtil.isJsonObject(message)) {
  160. throw {httpStatus: 406, message: 'Problems parsing JSON.'}
  161. }
  162. // 字段判断
  163. let testing = ObjectUtil.fieldsCheck(message, "senderId", "senderName", "contentType", "content");
  164. if (!testing.pass) {
  165. throw {httpStatus: 406, message: testing.message}
  166. }
  167. let sessionId = req.query.sessionId;
  168. if (!sessionId) {
  169. throw {httpStatus: 406, message: 'Missing sessionId.'};
  170. }
  171. let sessions = new Sessions();
  172. ControllerUtil.regModelEventHandler(sessions, res);
  173. message.timestamp=new Date();
  174. sessions.saveMessageBySession(message,sessionId);
  175. })
  176. /**
  177. * 移除人员
  178. * user:移除的人员
  179. * sessionId 会话ID
  180. */
  181. router.post(APIv1.Sessions.RemoveSessionUser,function(req,res){
  182. let user = req.query.user;
  183. if (!user) {
  184. throw {httpStatus: 406, message: 'Missing user.'};
  185. }
  186. let sessionId = req.query.sessionId;
  187. if (!sessionId) {
  188. throw {httpStatus: 406, message: 'Missing sessionId.'};
  189. }
  190. let participants = new Participants();
  191. ControllerUtil.regModelEventHandler(sessions, res);
  192. participants.deleteUser(sessionId,user);
  193. })
  194. /**
  195. * 移除人员
  196. * user:移除的人员
  197. * sessionId 会话ID
  198. */
  199. router.post(APIv1.Sessions.PushSessionUser,function(req,res){
  200. let user = req.query.user;
  201. if (!user) {
  202. throw {httpStatus: 406, message: 'Missing user.'};
  203. }
  204. let sessionId = req.query.sessionId;
  205. if (!sessionId) {
  206. throw {httpStatus: 406, message: 'Missing sessionId.'};
  207. }
  208. let participants = new Participants();
  209. ControllerUtil.regModelEventHandler(sessions, res);
  210. participants.pushUser(sessionId,user);
  211. })
  212. module.exports = router;