156 lines
3.4 KiB
JavaScript
Executable File
156 lines
3.4 KiB
JavaScript
Executable File
const yapi = require('../yapi.js');
|
||
const baseModel = require('./base.js');
|
||
var mongoose = require('mongoose');
|
||
var Schema = mongoose.Schema;
|
||
|
||
class logModel extends baseModel {
|
||
getName() {
|
||
return 'log';
|
||
}
|
||
|
||
getSchema() {
|
||
return {
|
||
uid: { type: Number, required: true },
|
||
typeid: { type: Number, required: true },
|
||
type: {
|
||
type: String,
|
||
enum: ['user', 'group', 'interface', 'project', 'other', 'interface_col'],
|
||
required: true
|
||
},
|
||
content: { type: String, required: true },
|
||
username: { type: String, required: true },
|
||
add_time: Number,
|
||
data: Schema.Types.Mixed //用于原始数据存储
|
||
};
|
||
}
|
||
|
||
/**
|
||
* @param {String} content log内容
|
||
* @param {Enum} type log类型, ['user', 'group', 'interface', 'project', 'other']
|
||
* @param {Number} uid 用户id
|
||
* @param {String} username 用户名
|
||
* @param {Number} typeid 类型id
|
||
* @param {Number} add_time 时间
|
||
*/
|
||
save(data) {
|
||
let saveData = {
|
||
content: data.content,
|
||
type: data.type,
|
||
uid: data.uid,
|
||
username: data.username,
|
||
typeid: data.typeid,
|
||
add_time: yapi.commons.time(),
|
||
data: data.data
|
||
};
|
||
|
||
let log = new this.model(saveData);
|
||
|
||
return log.save();
|
||
}
|
||
|
||
del(id) {
|
||
return this.model.remove({
|
||
_id: id
|
||
});
|
||
}
|
||
|
||
list(typeid, type) {
|
||
return this.model
|
||
.find({
|
||
typeid: typeid,
|
||
type: type
|
||
})
|
||
.exec();
|
||
}
|
||
|
||
listWithPaging(typeid, type, page, limit, selectValue) {
|
||
page = parseInt(page);
|
||
limit = parseInt(limit);
|
||
const params = {
|
||
type: type,
|
||
typeid: typeid
|
||
};
|
||
|
||
if (selectValue === 'wiki') {
|
||
params['data.type'] = selectValue;
|
||
}
|
||
if (selectValue && !isNaN(selectValue)) {
|
||
params['data.interface_id'] = +selectValue;
|
||
}
|
||
return this.model
|
||
.find(params)
|
||
.sort({ add_time: -1 })
|
||
.skip((page - 1) * limit)
|
||
.limit(limit)
|
||
.exec();
|
||
}
|
||
listWithPagingByGroup(typeid, pidList, page, limit) {
|
||
page = parseInt(page);
|
||
limit = parseInt(limit);
|
||
return this.model
|
||
.find({
|
||
$or: [
|
||
{
|
||
type: 'project',
|
||
typeid: { $in: pidList }
|
||
},
|
||
{
|
||
type: 'group',
|
||
typeid: typeid
|
||
}
|
||
]
|
||
})
|
||
.sort({ add_time: -1 })
|
||
.skip((page - 1) * limit)
|
||
.limit(limit)
|
||
.exec();
|
||
}
|
||
listCountByGroup(typeid, pidList) {
|
||
return this.model.countDocuments({
|
||
$or: [
|
||
{
|
||
type: 'project',
|
||
typeid: { $in: pidList }
|
||
},
|
||
{
|
||
type: 'group',
|
||
typeid: typeid
|
||
}
|
||
]
|
||
});
|
||
}
|
||
listCount(typeid, type, selectValue) {
|
||
const params = {
|
||
type: type,
|
||
typeid: typeid
|
||
};
|
||
|
||
if (selectValue === 'wiki') {
|
||
params['data.type'] = selectValue;
|
||
}
|
||
|
||
if (selectValue && !isNaN(selectValue)) {
|
||
params['data.interface_id'] = +selectValue;
|
||
}
|
||
return this.model.countDocuments(params);
|
||
}
|
||
|
||
listWithCatid(typeid, type, interfaceId) {
|
||
const params = {
|
||
type: type,
|
||
typeid: typeid
|
||
};
|
||
if (interfaceId && !isNaN(interfaceId)) {
|
||
params['data.interface_id'] = +interfaceId;
|
||
}
|
||
return this.model
|
||
.find(params)
|
||
.sort({ add_time: -1 })
|
||
.limit(1)
|
||
.select('uid content type username typeid add_time')
|
||
.exec();
|
||
}
|
||
}
|
||
|
||
module.exports = logModel;
|