49 lines
1.5 KiB
JavaScript
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
|
|
})
|
|
})
|
|
}
|
|
}
|