users.endpoint.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. /**
  2. * 用户端点。
  3. */
  4. "use strict";
  5. let express = require('express');
  6. let router = express.Router();
  7. let http = require('http');
  8. let configFile = require('../include/commons').CONFIG_FILE;
  9. let config = require('../resources/config/' + configFile);
  10. let log = require("../util/log.js");
  11. let objectUtil = require('../util/object.util');
  12. let Users = require('../models/user/users');
  13. const APIv1 = require('../include/endpoints').APIv1;
  14. const MODEL_EVENTS = require('../include/commons').MODEL_EVENTS;
  15. /**
  16. * 登录。用户登录后,更新数据库中的在线状态。
  17. *
  18. * 请求URL:
  19. * /users/login?user_id=sand&token=0PFWlKmLBN9YzhCfFWVgYA&client_id=H6FYbDejks6VjMmW3uH7V6&platform=0
  20. *
  21. * 返回值:
  22. * 登录后的token.
  23. *
  24. * 参数说明:
  25. * user_id:用户ID
  26. * token:个推的token
  27. * client_id:个推的client id
  28. * platform:平台类型,0为iOS,1为Android
  29. */
  30. router.get(APIv1.Users.Login, function (req, res) {
  31. let userId = req.query.user_id;
  32. let token = req.query.token;
  33. let clientId = req.query.client_id;
  34. let platform = req.query.platform;
  35. if (userId == null) {
  36. throw {httpStatus: 406, message: 'Missing field: user_id.'};
  37. }
  38. if (token == null) {
  39. throw {httpStatus: 406, message: 'Missing field: token.'};
  40. }
  41. if (clientId == null) {
  42. throw {httpStatus: 406, message: 'Missing field: client_id.'};
  43. }
  44. if (platform == null) {
  45. throw {httpStatus: 406, message: 'Missing field: platform.'};
  46. }
  47. let users = new Users();
  48. users.login(userId, platform, token, clientId, function (err, result) {
  49. res.status(200).send(result);
  50. });
  51. });
  52. /**
  53. * 退出。
  54. *
  55. * 请求URL:
  56. * /users/logout?user_id=sand
  57. *
  58. * 参数:
  59. * user_id:用户ID
  60. */
  61. router.get(APIv1.Users.Logout, function (req, res) {
  62. let userId = req.query.user_id;
  63. if (userId == null) {
  64. throw {httpStatus: 406, message: 'Logout Failed. Missing field: user_id.'};
  65. }
  66. let userStatus = new Users();
  67. userStatus.on(MODEL_EVENTS.OK, function (message) {
  68. res.status(200).send(message);
  69. });
  70. userStatus.on(MODEL_EVENTS.Error, function (message) {
  71. res.status(500).send(message);
  72. });
  73. userStatus.logout(userId);
  74. });
  75. /**
  76. * 更新客户端状态。
  77. *
  78. * 请求URL:
  79. * /users/:user_id/status
  80. *
  81. * POST参数格式:
  82. * {status: 1}, app状态,0在后台,1在前台
  83. */
  84. router.post(APIv1.Users.UserStatus, function (req, res) {
  85. let userId = req.param('user_id');
  86. let status = req.body;
  87. if (!objectUtil.isJsonObject(status)) {
  88. throw {httpStatus: 406, message: "Problems parsing json."};
  89. }
  90. if (userId === null || (status.status != 0 && status.status != 1)) {
  91. throw {httpStatus: 406, message: 'Validation Failed. Missing fields.'};
  92. }
  93. let userStatus = new Users();
  94. userStatus.on(MODEL_EVENTS.OK, function (message) {
  95. res.status(200).send(message);
  96. });
  97. userStatus.on(MODEL_EVENTS.Error, function (message) {
  98. res.status(500).send(message);
  99. });
  100. userStatus.updateStatus(userId, status.status);
  101. });
  102. module.exports = router;