users.endpoint.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  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/objectUtil');
  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. * user_id:用户ID
  23. * token:个推的token
  24. * client_id:个推的client id
  25. * platform:平台类型,0为iOS,1为Android
  26. */
  27. router.get(APIv1.Users.Login, function (req, res) {
  28. let userId = req.query.user_id;
  29. let token = req.query.token;
  30. let clientId = req.query.client_id;
  31. let platform = req.query.platform;
  32. if (userId == null) {
  33. throw {httpStatus: 406, message: 'Missing field: user_id.'};
  34. }
  35. if (token == null) {
  36. throw {httpStatus: 406, message: 'Missing field: token.'};
  37. }
  38. if (clientId == null) {
  39. throw {httpStatus: 406, message: 'Missing field: client_id.'};
  40. }
  41. if (platform == null) {
  42. throw {httpStatus: 406, message: 'Missing field: platform.'};
  43. }
  44. let users = new Users();
  45. users.on(MODEL_EVENTS.OK, function (message) {
  46. res.status(200).send(message);
  47. });
  48. users.on(MODEL_EVENTS.Error, function (message) {
  49. res.status(500).send(message);
  50. });
  51. users.login(userId, token, clientId, platform);
  52. });
  53. /**
  54. * 退出。
  55. *
  56. * 请求URL:
  57. * /users/logout?user_id=sand
  58. *
  59. * 参数:
  60. * user_id:用户ID
  61. */
  62. router.get(APIv1.Users.Logout, function (req, res) {
  63. let userId = req.query.user_id;
  64. if (userId == null) {
  65. throw {httpStatus: 406, message: 'Logout Failed. Missing field: user_id.'};
  66. }
  67. let userStatus = new Users();
  68. userStatus.on(MODEL_EVENTS.OK, function (message) {
  69. res.status(200).send(message);
  70. });
  71. userStatus.on(MODEL_EVENTS.Error, function (message) {
  72. res.status(500).send(message);
  73. });
  74. userStatus.logout(userId);
  75. });
  76. /**
  77. * 更新客户端状态。
  78. *
  79. * 请求URL:
  80. * /users/:user_id/status
  81. *
  82. * POST参数格式:
  83. * {status: 1}, app状态,0在后台,1在前台
  84. */
  85. router.post(APIv1.Users.UserStatus, function (req, res) {
  86. let userId = req.param('user_id');
  87. let status = req.body;
  88. if (!objectUtil.isJsonObject(status)) {
  89. throw {httpStatus: 406, message: "Problems parsing json."};
  90. }
  91. if (userId === null || (status.status != 0 && status.status != 1)) {
  92. throw {httpStatus: 406, message: 'Validation Failed. Missing fields.'};
  93. }
  94. let userStatus = new Users();
  95. userStatus.on(MODEL_EVENTS.OK, function (message) {
  96. res.status(200).send(message);
  97. });
  98. userStatus.on(MODEL_EVENTS.Error, function (message) {
  99. res.status(500).send(message);
  100. });
  101. userStatus.updateStatus(userId, status.status);
  102. });
  103. module.exports = router;