mirror of
https://github.com/taobataoma/meanTorrent.git
synced 2026-08-04 22:51:03 +02:00
feat(tickets): new model to save mail-tickets and message-tickets for service group
This commit is contained in:
@@ -10,13 +10,16 @@ var path = require('path'),
|
||||
User = mongoose.model('User'),
|
||||
Peer = mongoose.model('Peer'),
|
||||
Complete = mongoose.model('Complete'),
|
||||
MailTicket = mongoose.model('MailTicket'),
|
||||
backup = require('mongodb-backup');
|
||||
|
||||
var mtDebug = require(path.resolve('./config/lib/debug'));
|
||||
var commonEnvConfig = require(path.resolve('./config/env/comm-variable'));
|
||||
var appConfig = config.meanTorrentConfig.app;
|
||||
var backupConfig = config.meanTorrentConfig.backup;
|
||||
var announceConfig = config.meanTorrentConfig.announce;
|
||||
var inbox = require('inbox');
|
||||
var simpleParser = require('mailparser').simpleParser;
|
||||
|
||||
const PEERSTATE_SEEDER = 'seeder';
|
||||
const PEERSTATE_LEECHER = 'leecher';
|
||||
@@ -64,7 +67,7 @@ module.exports = function (app) {
|
||||
|
||||
cronJobs.push(removeGhostPeers());
|
||||
cronJobs.push(countUsersHnrWarning());
|
||||
// cronJobs.push(listenServiceEmail());
|
||||
cronJobs.push(listenServiceEmail());
|
||||
|
||||
return cronJobs;
|
||||
};
|
||||
@@ -213,8 +216,8 @@ function countUsersHnrWarning() {
|
||||
function listenServiceEmail() {
|
||||
var listenServiceEmailJob = new CronJob({
|
||||
//cronTime: '00 00 1 * * *',
|
||||
cronTime: '*/10 * * * * *',
|
||||
//cronTime: '00 00 * * * *',
|
||||
// cronTime: '*/10 * * * * *',
|
||||
cronTime: '00 00 * * * *',
|
||||
onTick: function () {
|
||||
// console.log(chalk.green('listenServiceEmail: process!'));
|
||||
// console.log(chalk.green(listenServiceEmailJob.running));
|
||||
@@ -234,13 +237,13 @@ function listenServiceEmail() {
|
||||
client.on('connect', function () {
|
||||
console.log(chalk.green('CONNECT to ' + commonEnvConfig.variable.mailer.options.auth.user + ' successfully!'));
|
||||
listenServiceEmailJob.listeningServiceEmail = true;
|
||||
client.openMailbox('INBOX', function (error, info) {
|
||||
client.openMailbox('INBOX', false, function (error, info) {
|
||||
if (error) throw error;
|
||||
|
||||
client.listMessages(-20, function (err, messages) {
|
||||
messages.forEach(function (message) {
|
||||
if (message.flags.indexOf('\\Seen') < 0) {
|
||||
addNewMessageToTicket(client, message);
|
||||
addNewMessageToTicket(client, message, false);
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -270,13 +273,20 @@ function listenServiceEmail() {
|
||||
});
|
||||
|
||||
listenServiceEmailJob.listeningServiceEmail = false;
|
||||
listenServiceEmailJob.fireOnTick();
|
||||
listenServiceEmailJob.start();
|
||||
|
||||
return listenServiceEmailJob;
|
||||
|
||||
function addNewMessageToTicket(client, message) {
|
||||
console.log(message);
|
||||
var messageStream = client.createMessageStream(message.UID);
|
||||
messageStream.pipe(process.stdout, {end: false});
|
||||
function addNewMessageToTicket(client, message, isNew = true) {
|
||||
simpleParser(client.createMessageStream(message.UID), function (err, mail_object) {
|
||||
client.addFlags(message.UID, ['\\Seen'], function (err, flags) {
|
||||
console.log(chalk.blue('Check-out ' + (isNew ? 'new' : 'unseen') + ' email from ' + commonEnvConfig.variable.mailer.options.auth.user));
|
||||
console.log('From: ', mail_object.from.text);
|
||||
console.log('Subject: ', mail_object.subject);
|
||||
// console.log('Text body:', mail_object.text);
|
||||
console.log('Add flag: ', flags);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
63
modules/tickets/server/models/mail-ticket.server.model.js
Normal file
63
modules/tickets/server/models/mail-ticket.server.model.js
Normal file
@@ -0,0 +1,63 @@
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* Module dependencies
|
||||
*/
|
||||
var mongoose = require('mongoose'),
|
||||
Schema = mongoose.Schema;
|
||||
|
||||
/**
|
||||
* Ticket Schema
|
||||
*/
|
||||
var MailTicketSchema = new Schema({
|
||||
from: {
|
||||
type: String,
|
||||
default: '',
|
||||
trim: true
|
||||
},
|
||||
to: {
|
||||
type: String,
|
||||
default: '',
|
||||
trim: true
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
default: '',
|
||||
trim: true
|
||||
},
|
||||
content: {
|
||||
type: String,
|
||||
default: '',
|
||||
trim: true
|
||||
},
|
||||
attach: [{
|
||||
type: String,
|
||||
default: '',
|
||||
trim: true
|
||||
}],
|
||||
handler: {
|
||||
type: Schema.Types.ObjectId,
|
||||
ref: 'User'
|
||||
},
|
||||
_replies: [this],
|
||||
|
||||
status: {
|
||||
type: Number,
|
||||
default: 0 //0 new, 1 handling, 2 solved
|
||||
},
|
||||
createdAt: {
|
||||
type: Date,
|
||||
default: Date.now
|
||||
},
|
||||
handlerAt: {
|
||||
type: Date
|
||||
},
|
||||
updatedAt: {
|
||||
type: Date
|
||||
}
|
||||
}, {usePushEach: true});
|
||||
|
||||
MailTicketSchema.index({updatedAt: -1, createdAt: -1});
|
||||
MailTicketSchema.index({status: -1, updatedAt: -1});
|
||||
|
||||
mongoose.model('MailTicket', MailTicketSchema);
|
||||
61
modules/tickets/server/models/message-ticket.server.model.js
Normal file
61
modules/tickets/server/models/message-ticket.server.model.js
Normal file
@@ -0,0 +1,61 @@
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* Module dependencies
|
||||
*/
|
||||
var mongoose = require('mongoose'),
|
||||
Schema = mongoose.Schema;
|
||||
|
||||
/**
|
||||
* Ticket Schema
|
||||
*/
|
||||
var MessageTicketSchema = new Schema({
|
||||
from: {
|
||||
type: Schema.Types.ObjectId,
|
||||
ref: 'User'
|
||||
},
|
||||
to: {
|
||||
type: Schema.Types.ObjectId,
|
||||
ref: 'User'
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
default: '',
|
||||
trim: true
|
||||
},
|
||||
content: {
|
||||
type: String,
|
||||
default: '',
|
||||
trim: true
|
||||
},
|
||||
attach: [{
|
||||
type: String,
|
||||
default: '',
|
||||
trim: true
|
||||
}],
|
||||
handler: {
|
||||
type: Schema.Types.ObjectId,
|
||||
ref: 'User'
|
||||
},
|
||||
_replies: [this],
|
||||
|
||||
status: {
|
||||
type: Number,
|
||||
default: 0 //0 new, 1 handling, 2 solved
|
||||
},
|
||||
createdAt: {
|
||||
type: Date,
|
||||
default: Date.now
|
||||
},
|
||||
handlerAt: {
|
||||
type: Date
|
||||
},
|
||||
updatedAt: {
|
||||
type: Date
|
||||
}
|
||||
}, {usePushEach: true});
|
||||
|
||||
MessageTicketSchema.index({updatedAt: -1, createdAt: -1});
|
||||
MessageTicketSchema.index({status: -1, updatedAt: -1});
|
||||
|
||||
mongoose.model('MessageTicket', MessageTicketSchema);
|
||||
@@ -85,6 +85,7 @@
|
||||
"jasmine-core": "~2.7.0",
|
||||
"lodash": "~4.17.4",
|
||||
"lusca": "~1.5.1",
|
||||
"mailparser": "^2.2.0",
|
||||
"method-override": "~2.3.8",
|
||||
"mocha": "~3.4.2",
|
||||
"moment": "^2.18.1",
|
||||
|
||||
Reference in New Issue
Block a user