user.endpoint.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. /**
  2. * 用户端点。
  3. */
  4. "use strict";
  5. let ObjectUtil = require('../../util/object.util');
  6. let ControllerUtil = require('../../util/controller.util');
  7. let Users = require('../../models/user/users');
  8. let AppClient = require('../../models/client/app.client');
  9. let express = require('express');
  10. let router = express.Router();
  11. let http = require('http');
  12. let configFile = require('../../include/commons').CONFIG_FILE;
  13. let config = require('../../resources/config/' + configFile);
  14. let log = require("../../util/log.js");
  15. const APIv2 = require('../../include/endpoints').APIv2;
  16. /**
  17. * 登录。用户登录后,更新数据库中的在线状态。
  18. *
  19. * 请求URL:
  20. * /users/login?user_id=sand&token=0PFWlKmLBN9YzhCfFWVgYA&client_id=H6FYbDejks6VjMmW3uH7V6&platform=0
  21. *
  22. * 返回值:
  23. * 登录后的token.
  24. *
  25. * 参数说明:
  26. * user_id:用户ID
  27. * token:个推的token
  28. * client_id:个推的client id
  29. * platform:平台类型,0为iOS,1为Android
  30. */
  31. router.post(APIv2.Users.Login, function (req, res) {
  32. let payload = req.body;
  33. let testing = ObjectUtil.fieldsCheck(payload, "user_id", "token", "client_id", "platform");
  34. if (!testing.pass) {
  35. throw {httpStatus: 406, message: testing.message}
  36. }
  37. let users = new Users();
  38. ControllerUtil.regModelEventHandler(users, res);
  39. users.login(payload.user_id, payload.platform, payload.token, payload.client_id);
  40. });
  41. /**
  42. * 更新客户端状态。
  43. *
  44. * 请求URL:
  45. * /users/:user_id/status
  46. *
  47. * POST参数格式:
  48. * {status: 1}, app状态,0在后台,1在前台
  49. */
  50. router.put(APIv2.Users.UserStatus, function (req, res) {
  51. let userId = req.params.user_id;
  52. let payload = req.body;
  53. if (userId === null) {
  54. throw {httpStatus: 406, message: 'Validation Failed. Missing field(s): user_id.'};
  55. }
  56. let appClient = new AppClient();
  57. ControllerUtil.regModelEventHandler(appClient, res);
  58. appClient.updateAppStatus(userId, payload.app_in_bg);
  59. });
  60. /**
  61. * 退出。
  62. *
  63. * 请求URL:
  64. * /users/logout?user_id=sand
  65. *
  66. * 参数:
  67. * user_id:用户ID
  68. */
  69. router.delete(APIv2.Users.Logout, function (req, res) {
  70. let userId = req.query.user_id;
  71. if (!userId) {
  72. throw {httpStatus: 406, message: 'Logout Failed. Missing field: user_id.'};
  73. }
  74. let userStatus = new Users();
  75. ControllerUtil.regModelEventHandler(userStatus, res);
  76. userStatus.logout(userId,req.query.platform);
  77. });
  78. module.exports = router;