var {
|
domain_id,
|
getToken,
|
customeId,
|
httprequest
|
} = require("./httprequest")
|
|
var querystring = require('querystring');
|
Date.prototype.Format = function (fmt) {
|
var o = {
|
'M+': this.getMonth() + 1,
|
'd+': this.getDate(),
|
'H+': this.getHours(),
|
'm+': this.getMinutes(),
|
's+': this.getSeconds(),
|
'S+': this.getMilliseconds()
|
};
|
//因为date.getFullYear()出来的结果是number类型的,所以为了让结果变成字符串型,下面有两种方法:
|
if (/(y+)/.test(fmt)) {
|
//第一种:利用字符串连接符“+”给date.getFullYear()+'',加一个空字符串便可以将number类型转换成字符串。
|
fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length));
|
}
|
for (var k in o) {
|
if (new RegExp('(' + k + ')').test(fmt)) {
|
//第二种:使用String()类型进行强制数据类型转换String(date.getFullYear()),这种更容易理解。
|
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (('00' + o[k]).substr(String(o[k]).length)));
|
}
|
}
|
return fmt;
|
};
|
Date.prototype.DateAdd = function(strInterval, Number) {
|
var dtTmp = this;
|
switch (strInterval) {
|
case 's' :return new Date(Date.parse(dtTmp) + (1000 * Number));
|
case 'n' :return new Date(Date.parse(dtTmp) + (60000 * Number));
|
case 'h' :return new Date(Date.parse(dtTmp) + (3600000 * Number));
|
case 'd' :return new Date(Date.parse(dtTmp) + (86400000 * Number));
|
case 'w' :return new Date(Date.parse(dtTmp) + ((86400000 * 7) * Number));
|
case 'q' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number*3, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
|
case 'm' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
|
case 'y' :return new Date((dtTmp.getFullYear() + Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
|
}
|
}
|
|
function addTask(tempId, poolId, taskname, callBackFunc,errCallFunc) {
|
var url = "http://edmapi.rushmail.com/api.php?module=wc-task&action=task-add";
|
var template_id = tempId
|
var task_name = taskname
|
var count_preset = 1;
|
var time_preset = "";
|
var email_domain_id = domain_id;
|
var email_id = 0;
|
var reply_to = "test@suport.tai-online.com"
|
var track = 1;
|
var status = -9;
|
var pdata = {
|
token: getToken(),
|
customer_id: customeId,
|
template_id: template_id,
|
pool_id: poolId,
|
task_name: task_name,
|
count_preset: count_preset,
|
time_preset: time_preset,
|
email_domain_id: email_domain_id,
|
email_id: email_id,
|
email_addr: "test@suport.tai-online.com",
|
reply_to: "test@tai-online.com",
|
track: track,
|
status: status
|
|
}
|
var post_data = querystring.stringify(
|
pdata
|
)
|
httprequest(url, post_data, function (ret) {
|
if (ret.code == "success") {
|
console.log("邮件任务添加成功 taskId:", ret.status)
|
var taskId = ret.status; // 248596;
|
if (callBackFunc)
|
callBackFunc(taskId)
|
|
} else {
|
console.log("邮件任务添加失败", ret.message)
|
if(errCallFunc){
|
errCallFunc("邮件任务添加失败")
|
}
|
}
|
},errCallFunc)
|
}
|
|
function startSendEmail(taskId, callbackFunc,errCallBack) {
|
var url = 'http://edmapi.rushmail.com/api.php?module=wc-task&action=task-start';
|
var data = {
|
token: getToken(),
|
customer_id: customeId,
|
task_id: taskId
|
};
|
var post_data = querystring.stringify(data)
|
httprequest(url, post_data, function (ret) {
|
if (ret.code == "success") {
|
console.log("邮件发送成功");
|
if (callbackFunc)
|
callbackFunc(taskId);
|
} else {
|
console.log("邮件发送失败", ret.message);
|
if(errCallBack){
|
errCallBack("邮件发送失败")
|
}
|
}
|
},errCallBack)
|
}
|
|
function getTaskList(callbackFunc) {
|
var url = "http://edmapi.rushmail.com/api.php?module=wc-task&action=task-list";
|
var data = {
|
token: getToken(),
|
customer_id: customeId,
|
page: 1,
|
limit: 100
|
};
|
var post_data = querystring.stringify(data)
|
httprequest(url, post_data, function (ret) {
|
if (ret.status) {
|
console.log("发送任务获取成功");
|
if (callbackFunc)
|
callbackFunc(ret.data.task_list.list);
|
} else {
|
console.log("发送任务获取失败", ret);
|
}
|
})
|
}
|
|
function getTask(task_id, template_id, pool_id, task_name, count_preset,
|
count_send, time_preset, time_start, email_did, email_id,
|
email_addr, reply_to, track, status,
|
callbackFunc) {
|
var url = "http://edmapi.rushmail.com/api.php?module=wc-task&action=task-view";
|
var data = {
|
token: getToken(),
|
customer_id: customeId,
|
task_id: task_id,
|
template_id: template_id,
|
pool_id: pool_id,
|
task_name: task_name,
|
count_preset: count_preset,
|
count_send: count_send,
|
time_preset: time_preset,
|
time_start: time_start,
|
email_did: email_did,
|
email_id: email_id,
|
email_addr: email_addr,
|
reply_to: reply_to,
|
track: track,
|
status: status
|
};
|
// task_id:任务 id template_id:模板 id
|
// pool_id:地址池 id
|
// task_name:任务名称
|
// count_preset:预定数量
|
// count_send:已发数量
|
// time_preset:预定时间
|
// time_start:开始时间
|
// email_did:发送域名 id
|
// email_id:发送邮箱帐号 id
|
// email_addr:发送邮箱帐号 如果是全部帐号 此项为*
|
// reply_to:邮件回复地址
|
// track:跟综统计
|
// 0 不使用 1 跟踪打开率 2 跟踪打开率和点击率
|
// status:-1 暂不发送 0 等待发送 1 正在发送 2 发送完成 3 暂停发送 4 取消发送
|
|
var post_data = querystring.stringify(data)
|
httprequest(url, post_data, function (ret) {
|
if (ret.status) {
|
console.log("查看任务成功");
|
if (callbackFunc)
|
callbackFunc();
|
} else {
|
console.log("查看任务失败", ret);
|
}
|
})
|
}
|
|
function delTask(taskId, callbackFunc) {
|
var url = "http://edmapi.rushmail.com/api.php?module=wc-task&action=task-delete"
|
var data = {
|
token: getToken(),
|
customer_id: customeId,
|
task_id: taskId
|
};
|
var post_data = querystring.stringify(data)
|
httprequest(url, post_data, function (ret) {
|
if (ret.status) {
|
console.log("删除任务成功");
|
if (callbackFunc)
|
callbackFunc();
|
} else {
|
console.log("删除任务失败", ret);
|
}
|
})
|
}
|
|
function getTrackView(date, callbackFunc) {
|
var url = "http://edmapi.rushmail.com/api.php?module=track&action=smtp-overview";
|
var data = {
|
token: getToken(),
|
customer_id: customeId,
|
date: date
|
};
|
var post_data = querystring.stringify(data)
|
httprequest(url, post_data, function (ret) {
|
if (ret.status) {
|
console.log("获取跟踪数据");
|
if (callbackFunc)
|
callbackFunc(ret);
|
} else {
|
console.log("获取跟踪数据失败", ret);
|
}
|
})
|
}
|
/**
|
* 跟踪统计概况
|
* @param {*} taskId
|
*/
|
function getTrackByTaskIdAsync(taskId){
|
return new Promise(function (resolve, reject) {
|
getTrackByTaskId(taskId, function (ret) {
|
resolve(ret);
|
}, function (e) {
|
reject(e)
|
});
|
|
})
|
}
|
function getTrackByTaskId(taskId,callBackFunc,errCallBackFunc){
|
var url="http://edmapi.rushmail.com/api.php?module=track&action=overview";
|
var data = {
|
token: getToken(),
|
customer_id: customeId,
|
task_id: taskId
|
};
|
var post_data = querystring.stringify(data)
|
httprequest(url, post_data, function (ret) {
|
|
if (ret.status) {
|
// console.log("获取跟踪数据");
|
if (callBackFunc)
|
callBackFunc(ret);
|
} else {
|
// console.log(ret.message);
|
if (callBackFunc)
|
callBackFunc(ret);
|
}
|
},errCallBackFunc)
|
}
|
/**
|
* 发送任务报告 异步
|
* @param {*} date
|
* @param {*} callbackFunc
|
*/
|
function getTaskReport(date, callbackFunc,errCallBack) {
|
var url = "http://edmapi.rushmail.com/api.php?module=report&action=task-list";
|
var data = {
|
token: getToken(),
|
customer_id: customeId,
|
date: date
|
};
|
var post_data = querystring.stringify(data)
|
httprequest(url, post_data, function (ret) {
|
if (ret.status) {
|
console.log("获取发送任务统计数据成功");
|
if (callbackFunc)
|
callbackFunc(ret.data.task_list);
|
} else {
|
console.log("获取发送任务统计数据失败", ret);
|
if(errCallBack){
|
errCallBack("获取发送任务统计数据失败"+ret.message)
|
}
|
}
|
},errCallBack)
|
|
}
|
|
function getFailType(task){
|
if(task.failure3_count>0)return {id:3,msg:"对方拒收"};
|
if(task.failure2_count>0)return {id:2,msg:"空间不足"};
|
if(task.failure1_count>0)return {id:1,msg:"地址无效"};
|
return {id:0,msg:"正常"};
|
}
|
/**
|
* 查询报告
|
* @param {*} date
|
*/
|
async function getTaskReportInfoAsync(date){
|
var tasks=await getTaskReportAsync(date);
|
var tasklist=[];
|
for(var task of tasks){
|
var fail=getFailType(task);
|
var wctask_id=task.wctask_id;
|
var trackInfo="";
|
var isOpen=false;
|
// console.log(task)
|
|
if(fail.id ==0 && wctask_id>0){
|
|
trackInfo= await getTrackByTaskIdAsync(wctask_id);
|
// console.log(trackInfo)
|
if(trackInfo.status){
|
if(trackInfo.data.open_unique>0 || trackInfo.data.open_total>0){
|
isOpen=true;
|
}
|
}
|
}
|
var t={task_id:wctask_id,sent:task.receive_count,fail:fail.id,msg:fail.msg,isOpen:isOpen}
|
tasklist.push(t);
|
}
|
return tasklist;
|
}
|
async function getTaskReportInfoWeekAsync(date){
|
var datelist=[];
|
// console.log("getTaskReportInfoWeekAsync",date)
|
for(var i=0;i<7;i++){
|
|
var newDate=date.DateAdd("d",-i);
|
console.log(newDate);
|
datelist.push(newDate.Format("yyyy-MM-dd"));
|
}
|
var tasklist=[];
|
for(var d of datelist){
|
var tasks=await getTaskReportAsync(d);
|
for(var task of tasks){
|
var fail=getFailType(task);
|
var wctask_id=task.wctask_id;
|
var trackInfo="";
|
var isOpen=false;
|
// console.log(task)
|
|
if(fail.id ==0 && wctask_id>0){
|
|
trackInfo= await getTrackByTaskIdAsync(wctask_id);
|
// console.log(trackInfo)
|
if(trackInfo.status){
|
if(trackInfo.data.open_unique>0 || trackInfo.data.open_total>0){
|
isOpen=true;
|
}
|
}
|
}
|
var t={task_id:wctask_id,sent:task.receive_count,fail:fail.id,msg:fail.msg,isOpen:isOpen}
|
tasklist.push(t);
|
}
|
}
|
return tasklist;
|
}
|
|
/**
|
* 发送任务报告 同步
|
* @param {*} date
|
*/
|
var getTaskReportAsync=async function(date){
|
return new Promise(function (resolve, reject) {
|
getTaskReport(date, function (ret) {
|
resolve(ret);
|
}, function (e) {
|
reject(e)
|
});
|
|
})
|
}
|
/**
|
* 获取跟踪数据
|
* @param {*} track_id
|
* @param {*} callbackFunc
|
*/
|
function getTrack(track_id, callbackFunc, errCallBack) {
|
var url = "http://edmapi.rushmail.com/api.php?module=track&action=detail";
|
var data = {
|
token: getToken(),
|
customer_id: customeId,
|
track_id: track_id
|
};
|
var post_data = querystring.stringify(data)
|
httprequest(url, post_data, function (ret) {
|
if (ret.status) {
|
// console.log("获取跟踪数据成功");
|
if (callbackFunc)
|
callbackFunc(ret);
|
} else {
|
console.log("获取跟踪数据成功数据失败", ret);
|
if (errCallBack) {
|
errCallBack(ret);
|
}
|
}
|
}, errCallBack);
|
|
}
|
/**
|
* 通过跟踪编号得到跟踪信息
|
* @param {*} track_id
|
*/
|
var getTrackAsync = async function (track_id) {
|
return new Promise(function (resolve, reject) {
|
getTrack(track_id, function (ret) {
|
resolve(ret);
|
}, function (e) {
|
reject(e)
|
});
|
|
})
|
}
|
|
|
exports.addTask = addTask;
|
exports.startSendEmail = startSendEmail;
|
exports.getTaskList = getTaskList;
|
exports.getTask = getTask;
|
exports.getTrackView = getTrackView;
|
exports.getTaskReport = getTaskReport;
|
exports.getTaskReportInfoAsync=getTaskReportInfoAsync;
|
exports.getTaskReportInfoWeekAsync=getTaskReportInfoWeekAsync;
|
exports.getTrack = getTrack;
|
exports.getTrackAsync = getTrackAsync;
|