* perf: full text collection and search code * perf: rename function * perf: notify modal * remove invalid code * perf: sso login * perf: pay process
91 lines
2.1 KiB
TypeScript
91 lines
2.1 KiB
TypeScript
import { TeamErrEnum } from '@fastgpt/global/common/error/code/team';
|
|
import type { OrgSchemaType } from '@fastgpt/global/support/user/team/org/type';
|
|
import type { ClientSession } from 'mongoose';
|
|
import { MongoOrgModel } from './orgSchema';
|
|
import { MongoOrgMemberModel } from './orgMemberSchema';
|
|
import { getOrgChildrenPath } from '@fastgpt/global/support/user/team/org/constant';
|
|
import { getNanoid } from '@fastgpt/global/common/string/tools';
|
|
|
|
export const getOrgsByTmbId = async ({ teamId, tmbId }: { teamId: string; tmbId: string }) =>
|
|
MongoOrgMemberModel.find({ teamId, tmbId }, 'orgId').lean();
|
|
|
|
export const getOrgIdSetWithParentByTmbId = async ({
|
|
teamId,
|
|
tmbId
|
|
}: {
|
|
teamId: string;
|
|
tmbId: string;
|
|
}) => {
|
|
const orgMembers = await MongoOrgMemberModel.find({ teamId, tmbId }, 'orgId')
|
|
.populate<{ org: { path: string } }>('org', 'path')
|
|
.lean();
|
|
|
|
const orgIds = new Set<string>();
|
|
|
|
for (const orgMember of orgMembers) {
|
|
orgIds.add(String(orgMember.orgId));
|
|
|
|
// Add parent org
|
|
const parentIds = orgMember.org.path.split('/').filter(Boolean);
|
|
for (const parentId of parentIds) {
|
|
orgIds.add(parentId);
|
|
}
|
|
}
|
|
|
|
return orgIds;
|
|
};
|
|
|
|
export const getChildrenByOrg = async ({
|
|
org,
|
|
teamId,
|
|
session
|
|
}: {
|
|
org: OrgSchemaType;
|
|
teamId: string;
|
|
session?: ClientSession;
|
|
}) => {
|
|
return MongoOrgModel.find(
|
|
{ teamId, path: { $regex: `^${getOrgChildrenPath(org)}` } },
|
|
undefined,
|
|
{
|
|
session
|
|
}
|
|
).lean();
|
|
};
|
|
|
|
export const getOrgAndChildren = async ({
|
|
orgId,
|
|
teamId,
|
|
session
|
|
}: {
|
|
orgId: string;
|
|
teamId: string;
|
|
session?: ClientSession;
|
|
}) => {
|
|
const org = await MongoOrgModel.findOne({ _id: orgId, teamId }, undefined, { session }).lean();
|
|
if (!org) {
|
|
return Promise.reject(TeamErrEnum.orgNotExist);
|
|
}
|
|
const children = await getChildrenByOrg({ org, teamId, session });
|
|
return { org, children };
|
|
};
|
|
|
|
export async function createRootOrg({
|
|
teamId,
|
|
session
|
|
}: {
|
|
teamId: string;
|
|
session?: ClientSession;
|
|
}) {
|
|
return MongoOrgModel.create(
|
|
[
|
|
{
|
|
teamId,
|
|
name: 'ROOT',
|
|
path: ''
|
|
}
|
|
],
|
|
{ session }
|
|
);
|
|
}
|