Files
dvcp-node-service/src/rest/addressBook/add.js

49 lines
1.5 KiB
JavaScript

const dbUtils = require("../../utils/dbUitls");
const fs = require('fs');
const FormData = require('form-data');
const fastcsv = require('fast-csv');
const axios = require("axios");
//生成csv并上传至企微后台获取 media_id
const uploadCsv = (data = [], access_token) => {
// data数据格式
// {"name": "张三", "email": "john.doe@example.com",phone:"13388888888"},
const csv = data.map(e => {
return {
"姓名": e.name,
"账号": e.phone,
"手机号": e.phone,
"邮箱": e.email,
}
})
const form = new FormData()
const csvStream = fastcsv.format({headers: true})
csvStream.pipe(fs.createWriteStream('tmp.csv'))
data.forEach(item => csvStream.write(item))
csvStream.end()
form.append('media', fs.createReadStream('tmp.csv'))
return axios.post(`https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=${access_token}&type=file`, {
headers: form.getHeaders()
}).then(res => {
const {media_id} = res.data
return media_id
})
}
module.exports = {
action: "/wxwork/addressBook/syncUser",
method: "post",
execute: (request, response) => {
const {access_token} = request.body
// 获取原CA账号数据
dbUtils.list({
table: "sys_user",
}).then(data => uploadCsv(data, access_token))
.then(media_id => {
// 上传csv至企微后台
return axios.post(`https://qyapi.weixin.qq.com/cgi-bin/batch/replaceuser?access_token=${access_token}`, {
media_id
})
})
}
}