/** * 用户状态模型。此处状态是指用户移动应用App状态,如用户是否已登录,App是否已打开。 * * 用户状态区分患者与医生。**当前**仅是与医生相关,若需要增加患者相关内容, * 需要增加在用户判断。 * * author: Sand * since: 2016.11.20 */ "use strict"; let BaseModel = require('./base.model'); let doctorRepo = require('../repository/mysql/doctor.repo'); let modelUtil = require("../util/modelUtil.js"); let Token = require('./auth/token'); class UserStatus extends BaseModel { constructor() { super(); } /** * 登录。 */ login(userId, token, clientId, platform) { let self = this; doctorRepo.deleteToken(token, function (err, result) { if (err) { modelUtil.emitDbError(self.eventEmitter, 'Error occurs when user login and delete token', err); } else { doctorRepo.login(userId, token, clientId, platform, function (err, result) { if (err) { modelUtil.emitDbError(self.eventEmitter, 'Error occurs when user login and delete token', err); } let token = new Token(userId, clientId, platform); modelUtil.emitData(self.eventEmitter, {token: token.value}); }); } }); } /** * 退出。 */ logout(userId) { let self = this; doctorRepo.logout(userId, function (err, result) { if (err) { modelUtil.emitDbError(self.eventEmitter, 'Logout failed', err); return; } modelUtil.emitData(self.eventEmitter, {}); }); } /** * 更新用户状态。 */ updateStatus(userId, status) { let self = this; doctorRepo.updateStatus(userId, status, function (err, result) { if (err) { modelUtil.emitDbError(self.eventEmitter, 'Update user status failed', err); return; } modelUtil.emitData(self.eventEmitter, {}); }); } } module.exports = UserStatus;