ai-query对接新版freesun-agent接口的分支
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

77 lines
2.4 KiB

'use strict';
const normalize = (value) => String(value || '').trim();
module.exports = async (ctx, next) => {
try {
const query = ctx?.request?.query || {};
const body = ctx?.request?.body || {};
const rawUserId = normalize(
query.userid || query.userId || query.creator || body.userid || body.userId || body.creator,
);
if (!rawUserId) {
await next();
return;
}
const models = ctx?.app?.fs?.dc?.models || {};
const TenderUser = models.TenderUser;
if (!TenderUser) {
await next();
return;
}
let mappedUserId = '';
const byPepId = await TenderUser.findOne({
attributes: ['id', 'pepId'],
where: { pepId: rawUserId, deletedAt: null },
raw: true,
});
if (byPepId?.pepId !== undefined && byPepId?.pepId !== null) {
mappedUserId = String(byPepId.pepId);
} else {
const byId = await TenderUser.findOne({
attributes: ['id', 'pepId'],
where: { id: rawUserId, deletedAt: null },
raw: true,
});
if (byId?.id !== undefined && byId?.id !== null) {
mappedUserId = byId.pepId ? String(byId.pepId) : String(byId.id);
} else {
const byExternalId = await TenderUser.findOne({
attributes: ['id', 'pepId'],
where: { externalUserId: rawUserId, deletedAt: null },
raw: true,
});
if (byExternalId?.id !== undefined && byExternalId?.id !== null) {
mappedUserId = byExternalId.pepId ? String(byExternalId.pepId) : String(byExternalId.id);
}
}
}
if (mappedUserId) {
if (query.userid !== undefined || query.userId !== undefined) {
query.userId = mappedUserId;
}
if (query.creator !== undefined) {
query.creator = mappedUserId;
}
if (body.userid !== undefined || body.userId !== undefined) {
body.userId = mappedUserId;
}
if (body.creator !== undefined || body.userid !== undefined || body.userId !== undefined) {
body.creator = mappedUserId;
}
ctx.fs = ctx.fs || {};
ctx.fs.userIdMapping = {
externalUserId: rawUserId,
internalUserId: mappedUserId,
};
}
await next();
} catch (error) {
ctx.logger.error(error);
await next();
}
};