/** * 用户端点。 */ "use strict"; let express = require('express'); let router = express.Router(); let http = require('http'); let configFile = require('../include/commons').CONFIG_FILE; let config = require('../resources/config/' + configFile); let log = require("../util/log.js"); let objectUtil = require('../util/objectUtil'); let Users = require('../models/user/users'); const APIv1 = require('../include/endpoints').APIv1; const MODEL_EVENTS = require('../include/commons').MODEL_EVENTS; /** * 登录。用户登录后,更新数据库中的在线状态。 * * 请求URL: * /users/login?user_id=sand&token=0PFWlKmLBN9YzhCfFWVgYA&client_id=H6FYbDejks6VjMmW3uH7V6&platform=0 * * 参数说明: * user_id:用户ID * token:个推的token * client_id:个推的client id * platform:平台类型,0为iOS,1为Android */ router.get(APIv1.Users.Login, function (req, res) { let userId = req.query.user_id; let token = req.query.token; let clientId = req.query.client_id; let platform = req.query.platform; if (userId == null) { throw {httpStatus: 406, message: 'Missing field: user_id.'}; } if (token == null) { throw {httpStatus: 406, message: 'Missing field: token.'}; } if (clientId == null) { throw {httpStatus: 406, message: 'Missing field: client_id.'}; } if (platform == null) { throw {httpStatus: 406, message: 'Missing field: platform.'}; } let users = new Users(); users.on(MODEL_EVENTS.OK, function (message) { res.status(200).send(message); }); users.on(MODEL_EVENTS.Error, function (message) { res.status(500).send(message); }); users.login(userId, token, clientId, platform); }); /** * 退出。 * * 请求URL: * /users/logout?user_id=sand * * 参数: * user_id:用户ID */ router.get(APIv1.Users.Logout, function (req, res) { let userId = req.query.user_id; if (userId == null) { throw {httpStatus: 406, message: 'Logout Failed. Missing field: user_id.'}; } let userStatus = new Users(); userStatus.on(MODEL_EVENTS.OK, function (message) { res.status(200).send(message); }); userStatus.on(MODEL_EVENTS.Error, function (message) { res.status(500).send(message); }); userStatus.logout(userId); }); /** * 更新客户端状态。 * * 请求URL: * /users/:user_id/status * * POST参数格式: * {status: 1}, app状态,0在后台,1在前台 */ router.post(APIv1.Users.UserStatus, function (req, res) { let userId = req.param('user_id'); let status = req.body; if (!objectUtil.isJsonObject(status)) { throw {httpStatus: 406, message: "Problems parsing json."}; } if (userId === null || (status.status != 0 && status.status != 1)) { throw {httpStatus: 406, message: 'Validation Failed. Missing fields.'}; } let userStatus = new Users(); userStatus.on(MODEL_EVENTS.OK, function (message) { res.status(200).send(message); }); userStatus.on(MODEL_EVENTS.Error, function (message) { res.status(500).send(message); }); userStatus.updateStatus(userId, status.status); }); module.exports = router;