94 lines
2.8 KiB
JavaScript
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);
|
|
})
|
|
});
|
|
}
|
|
} |