kefu/model/session.js

94 lines
2.8 KiB
JavaScript

var mongoose = require('../utils/mongoose').mongoose;
var crypto = require('crypto');
var Schema = mongoose.Schema;
// session模型
var SessionSchema = new Schema({
uid: {type: String, index: true},
socket: {type: String,index:true},
// 类型
type: {type: String, default: "customer"},
// 客服编号
kefu_id: {type: String,default:""},
nickname: {type: String},
status: {type: Number,default:1},
create_at: {type: Date, default: Date.now}
});
//session model instance
const sessionModel = mongoose.model("sessions", SessionSchema);
module.exports = {
find(uid,status = 1) {
return new Promise((success, fail) => {
let condition = {uid};
if(status != null){
condition.status = status;
}
sessionModel.findOne(condition, (err, session) => {
if (err) fail(err);
else success(session)
})
});
},
createOrUpdate(condition,data){
return new Promise((success, fail) => {
sessionModel.findOne(condition, (err, session) => {
if(err){
fail(err);return;
}
try{
if(session){
if(typeof(data) == "function"){
data = data.call(this,false)
}
sessionModel.update(condition,data, (err, doc) => {
if (err) fail(err);
else success(doc);
})
}else{//新增
if(typeof(data) == "function"){
data = data.call(this,true)
}
let model = new sessionModel(data);
model.save(data, (err, doc) => {
if (err) fail(err);
else success(doc);
})
}
}catch (e) {
fail(e)
}
});
});
},
create(data) {
return new Promise((success, fail) => {
sessionModel.save(data, (err, doc) => {
if (err) fail(err);
else success(doc);
})
});
},
update(uid, data) {
return new Promise((success, fail) => {
sessionModel.findOneAndUpdate({uid}, data, success);
});
},
remove(uid) {
return new Promise((success, fail) => {
sessionModel.findOneAndRemove({uid}, data, success);
});
},
// 查询列表
findByCondition(data) {
return new Promise((success, fail) => {
sessionModel.find(data, (err, doc) => {
if (err) fail(err);
else success(doc);
})
});
}
}