Files
desktop-app/node_modules/user.js
2015-01-25 13:24:57 +08:00

158 lines
3.5 KiB
JavaScript

var Evt = require('evt');
var db = require('db');
function log(o) {
console.log(o);
}
/**
UserId (主键)
Email
Username
Token
LastLoginTime
IsActive // 是否是活跃用户
*/
// var User = {}
var Api = null; // require('api');
// 用户基本信息
User = {
token: '',
userId: '',
email: '',
username: '',
LastSyncUsn: -1,
LastSyncTime: null,
// 登录后保存当前
setCurUser: function(user) {
if(user) {
this.token = user.Token;
this.userId = user.UserId;
this.email = user.Email;
this.username = user.Username;
// 保存到数据库中
this.saveCurUser(user);
}
},
saveCurUser: function(user, callback) {
// 当前用户是否在数据库中
db.users.count({_id: user.UserId}, function(err, count) {
if(err || count == 0) {
// 添加一个
user['_id'] = user.UserId;
user['IsActive'] = true;
db.users.insert(user, function(err, doc) {
log(err);
});
} else {
user.IsActive = true;
delete user['Ok'];
db.users.update({_id: user.UserId}, {$set: user}, function(err, cnt) {
if(err || cnt == 0) {
log(err);
callback && callback(false);
} else {
callback && callback(true);
}
});
}
});
// 设值其它用户为非active
db.users.update({_id: {$ne: user.UserId}}, {$set: {IsActive: false}}, {multiple: true})
},
// 打开软件时, 从db中获取当前用户
init: function(callback) {
console.log("......user init.......")
var me = this;
db.users.findOne({IsActive: true}, function(err, user) {
if(err || !user || !user.UserId) {
log('不存在');
callback && callback(false);
} else {
// me.setCurUser(doc);
me.token = user.Token;
me.userId = user.UserId;
me.email = user.Email;
me.username = user.Username;
me.LastSyncUsn = user.LastSyncUsn;
me.LastSyncTime = user.LastSyncTime;
callback && callback(user);
}
});
},
// 得到当前活跃用户Id
getCurActiveUserId: function() {
return this.userId || "user1";
},
getToken: function() {
return this.token || "user1";
},
getCurUserImagesPath: function() {
return Evt.getBasePath() + '/' + this.getCurUserImagesAppPath();
},
getCurUserAttachsPath: function() {
return Evt.getBasePath() + '/' + this.getCurUserAttachsAppPath();
},
getCurUserImagesAppPath: function() {
return 'data/' + this.getCurActiveUserId() + '/images';
},
getCurUserAttachsAppPath: function() {
return 'data/' + this.getCurActiveUserId() + '/attachs';
},
getCurUser: function(callback) {
var me = this;
db.users.findOne({_id: me.getCurActiveUserId()}, function(err, doc) {
if(err) {
callback(false);
} else {
callback(doc);
}
});
},
getLastSyncState: function(callback) {
var me = this;
me.getCurUser(function(user) {
if(user) {
callback(user.LastSyncUsn, user.LastSyncTime);
} else {
callback(false, false);
}
})
},
// 同步后更新同步状态
updateLastSyncState: function(callback) {
var me = this;
if(!Api) {
Api = require('api');
}
log('--updateLastSyncState---')
Api.getLastSyncState(function(state) {
if(state) {
me.LastSyncUsn = state.LastSyncUsn;
me.LastSyncTime = state.LastSyncTime;
db.users.update({UserId: me.getCurActiveUserId()}, {$set: state});
}
callback();
});
},
// send changes要用
getLastSyncUsn: function() {
var me = this;
return me.LastSyncUsn;
},
// 更新 send changes要用
updateLastSyncUsn: function(usn) {
var me = this;
me.LastSyncUsn = usn;
db.users.update({UserId: me.getCurActiveUserId()}, {$set: {LastSyncUsn: usn}});
}
};
module.exports = User;