公司要求晚上营业结束后 通过givex的接口获取这1w个用户的积分余额,会员等级,过期积分,及续期积分及续期日信息,所以就写了这个
主要代码
index.js
const http = require('http');
const fs=require('fs');
const qs = require('querystring');
const SendMail=require('./mail');
var fWrite = fs.createWriteStream("./file/result.csv");
var ErrorWrite= fs.createWriteStream("./file/error.csv");
var FailWrite= fs.createWriteStream("./file/fail.csv");
var i=-1;
var stringData;
//写入文件
function WriteFileSuccess(WriteData){
fWrite.write(WriteData);
}
function WriteFileFail(WriteData){
FailWrite.write(WriteData);
}
function WriteFileError(WriteData){
ErrorWrite.write(WriteData);
}
//获取积分
function _POST()
{
i++;
if(i==3){
SendMail('result.csv','fail.csv')
return false;
}
console.log(i)
var post_data = {
"GivexNumber":stringData[i].split(',')[1]
};
var content = qs.stringify(post_data);
var options = {
hostname:'10.1.33.44', //换成实际存在的
path:'/api/Points/Balance', //换成实际存在的
method:'POST',
headers:{
'Content-Type':'application/x-www-form-urlencoded',
}
};
var req = http.request(options, function (res) {
// console.log('STATUS: ' + res.statusCode);
// console.log('HEADERS: ' + JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log('BODY: ' + chunk);
var chunk=JSON.parse(chunk)
console.log(chunk.PointsBalance)
if(chunk.Success){
WriteFileSuccess(stringData[i]+','+chunk.PointsBalance+','+chunk.MemberTier+','+chunk.PointsToBeExpired+','+chunk.PointsExpiryDate+'\r\n')
}
else{
WriteFileFail(stringData[i]+chunk.Message+'\r\n')
}
return chunk
}).on('error', function(err) {
WriteFileError(stringData[i]+'\r\n')
}).on('end',function(){
//请求结束
_POST(stringData[i])
});
});
req.on('error', function (e) {
WriteFileError(stringData[i]+'\r\n')
console.log('problem with request: ' + e.message);
});
// write data to request body
req.write(content);
req.end();
}
// // 异步读取
fs.readFile('test.csv', function (err, data) {
if (err) {
return console.error(err);
}
stringData=data.toString().split('\r\n');
_POST()
});
mail.js
'use strict';
const nodemailer = require('nodemailer');
const fs=require('fs');
function SendMail(attach1,attach2){
nodemailer.createTestAccount((err, account) => {
// create reusable transporter object using the default SMTP transport
let transporter = nodemailer.createTransport({
host: 'smtp.exmail.qq.com',
port: 25,
secure: false, // true for 465, false for other ports
auth: {
user: "denglin.wang@edaysoft.cn", // generated ethereal user
pass: "yourpass" // generated ethereal password
}
});
// setup email data with unicode symbols
let mailOptions = {
from: 'denglin.wang@edaysoft.cn', // sender address
to: 'denglin.wang@edaysoft.cn', // list of receivers
subject: '【最近有订单会员随机10000个】', // Subject line
// text:
html: '<b>Hi Andy</b><br/>\r\n 已通过givex的接口获取这1w个用户的账户情况,详情请见附件\r\nBR\r\n__Denglin' ,// html body
attachments: [
{ // utf-8 string as an attachment
filename: attach1,
content: fs.createReadStream(attach)
},
{ // utf-8 string as an attachment
filename: attach2,
content: fs.createReadStream(attach)
}
],
};
// send mail with defined transport object
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log(error);
}
console.log(mailOptions);
fWrite.write(JSON.stringify(mailOptions))
console.log(info)
console.log('Message sent: %s', info.messageId);
});
});
}
module.exports=SendMail
源码地址:https://download.csdn.net/download/qq_34117170/10295874