172 lines
4.3 KiB
JavaScript
172 lines
4.3 KiB
JavaScript
const request = require("../request");
|
|
const accessToken = require("./token");
|
|
exports.main = async (context) => {
|
|
let { access_token = "", corpId, permanentCode, suiteToken } = context;
|
|
if (!access_token) {
|
|
access_token = await accessToken.getToken({
|
|
corpId: corpId,
|
|
permanentCode: permanentCode,
|
|
suiteToken,
|
|
});
|
|
context.accesstoken = access_token;
|
|
}
|
|
switch (context.type) {
|
|
case "setSessoinPublicKey":
|
|
return await setSessoinPublicKey(context);
|
|
case "getSessionAuthUserList":
|
|
return await getSessionAuthUserList(context);
|
|
case "getSessionSearchMsg":
|
|
return await getSessionSearchMsg(context);
|
|
case "syncCallProgram":
|
|
return await syncCallProgram(context);
|
|
case "asyncProgramTask":
|
|
return await asyncProgramTask(context);
|
|
default: {
|
|
return {
|
|
success: false,
|
|
message: "未找到对应的操作类型",
|
|
};
|
|
}
|
|
}
|
|
};
|
|
|
|
async function setSessoinPublicKey({
|
|
publicKeyVersion,
|
|
publicKey,
|
|
accesstoken,
|
|
}) {
|
|
let url = `https://qyapi.weixin.qq.com/cgi-bin/chatdata/set_public_key?access_token=${accesstoken}`;
|
|
let res = await request.main(
|
|
url,
|
|
{ public_key: publicKey, public_key_ver: publicKeyVersion },
|
|
"POST"
|
|
);
|
|
if (res.errcode === 0) {
|
|
return {
|
|
success: true,
|
|
message: "设置成功",
|
|
publicKeyVersion,
|
|
};
|
|
} else if (res.errcode === 40212) {
|
|
// 版本号小
|
|
console.log("版本号过小, 增加版本号");
|
|
publicKeyVersion++;
|
|
return await setSessoinPublicKey({
|
|
publicKeyVersion,
|
|
publicKey,
|
|
accesstoken,
|
|
});
|
|
} else {
|
|
return {
|
|
success: false,
|
|
errcode: res.errcode,
|
|
message: res.errmsg,
|
|
};
|
|
}
|
|
}
|
|
|
|
async function getSessionAuthUserList(item) {
|
|
const { cursor, limit, accesstoken } = item;
|
|
let url = `https://qyapi.weixin.qq.com/cgi-bin/chatdata/get_auth_user_list?access_token=${accesstoken}`;
|
|
let query = {};
|
|
if (cursor) query.cursor = cursor;
|
|
if (limit) {
|
|
query.limit = Number(limit);
|
|
}
|
|
let res = await request.main(url, query, "POST");
|
|
if (res.errcode === 0) {
|
|
return {
|
|
success: true,
|
|
message: "获取成功",
|
|
data: res.auth_user_list,
|
|
next_cursor: res.next_cursor,
|
|
has_more: res.has_more,
|
|
};
|
|
} else {
|
|
return {
|
|
success: false,
|
|
message: res.errmsg,
|
|
has_more: false,
|
|
next_cursor: "",
|
|
data: [],
|
|
};
|
|
}
|
|
}
|
|
|
|
async function getSessionSearchMsg(item) {
|
|
const { keyword, limit, cursor, accesstoken } = item;
|
|
let query = {
|
|
query_word: keyword,
|
|
limit,
|
|
};
|
|
if (cursor) query.cursor = cursor;
|
|
let url = `https://qyapi.weixin.qq.com/cgi-bin/chatdata/search_msg?access_token=${accesstoken}`;
|
|
let res = await request.main(url, query, "POST");
|
|
if (res.errcode !== 0) {
|
|
let message = res.errmsg;
|
|
if (res.errcode === 40058) {
|
|
message = "搜索的关键字不能少于1个字";
|
|
}
|
|
return {
|
|
success: false,
|
|
message: message,
|
|
};
|
|
} else {
|
|
return {
|
|
success: true,
|
|
message: "获取成功",
|
|
data: res.msg_list,
|
|
next_cursor: res.next_cursor,
|
|
has_more: res.has_more,
|
|
};
|
|
}
|
|
}
|
|
|
|
async function syncCallProgram(item) {
|
|
const { accessToken, program_id, ability_id, request_data, notify_id } = item;
|
|
let query = {
|
|
program_id,
|
|
ability_id,
|
|
request_data: JSON.stringify(request_data),
|
|
};
|
|
if (notify_id) query.notify_id = notify_id;
|
|
let url = `https://qyapi.weixin.qq.com/cgi-bin/chatdata/sync_call_program?access_token=${accessToken}`;
|
|
let res = await request.main(url, query, "POST");
|
|
if (res.errcode !== 0) {
|
|
return {
|
|
success: false,
|
|
message: res.errmsg,
|
|
errcode: res.errcode,
|
|
};
|
|
} else {
|
|
const data = res.response_data ? JSON.parse(res.response_data) : {};
|
|
return {
|
|
success: true,
|
|
message: "调用成功",
|
|
data,
|
|
};
|
|
}
|
|
}
|
|
|
|
async function asyncProgramTask(item) {
|
|
let { jobid, accessToken } = item;
|
|
const query = {
|
|
jobid,
|
|
};
|
|
let url = `https://qyapi.weixin.qq.com/cgi-bin/chatdata/async_program_task?access_token=${accessToken}`;
|
|
let res = await request.main(url, query, "POST");
|
|
if (res.errcode !== 0) {
|
|
return {
|
|
success: false,
|
|
message: res.errmsg,
|
|
errcode: res.errcode,
|
|
};
|
|
} else {
|
|
return {
|
|
success: true,
|
|
message: "调用成功",
|
|
...res,
|
|
};
|
|
}
|
|
}
|