2026-07-27 11:28:33 +08:00

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,
};
}
}