mirror of
https://github.com/leanote/desktop-app.git
synced 2025-10-14 15:11:24 +00:00
158 lines
3.5 KiB
JavaScript
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;
|