core: fix scoreboard_export PERM_VIEW_DISPLAYNAME (#793)

This commit is contained in:
panda authored and GitHub committed 2024-04-30 00:31:39 +08:00
1 parent a2ed84a4be
commit 87adfd288c
5 files changed
+16 -12

No files matched your search

+3 -3
View File
@@ -384,16 +384,16 @@ class UserModel {
return projection ? coll.find(params).project<Udoc>(buildProjection(projection)) : coll.find(params);
}
static async getListForRender(domainId: string, uids: number[]) {
static async getListForRender(domainId: string, uids: number[], showDisplayName = true) {
const [udocs, vudocs, dudocs] = await Promise.all([
UserModel.getMulti({ _id: { $in: uids } }, ['_id', 'uname', 'mail', 'avatar', 'school', 'studentId']).toArray(),
collV.find({ _id: { $in: uids } }).toArray(),
domain.getDomainUserMulti(domainId, uids).project({ uid: true, displayName: true }).toArray(),
domain.getDomainUserMulti(domainId, uids).project({ uid: true, displayName: showDisplayName }).toArray(),
]);
const udict = {};
for (const udoc of udocs) udict[udoc._id] = udoc;
for (const udoc of vudocs) udict[udoc._id] = udoc;
for (const dudoc of dudocs) udict[dudoc.uid].displayName = dudoc.displayName;
if (showDisplayName) for (const dudoc of dudocs) udict[dudoc.uid].displayName = dudoc.displayName;
for (const uid of uids) udict[uid] ||= { ...UserModel.defaultUser };
for (const key in udict) {
udict[key].school ||= '';