session.endpoint.js 6.7 KB

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