fastGPT—nextjs—mongoose—团队管理之成员增删改查api接口实现

 成员有三种状态,正常、离开、禁止对应active、leave、forbidden三种类型的值

// 成员删除
import type { NextApiRequest, NextApiResponse } from 'next';
import { NextAPI } from '@/service/middleware/entry';
import { MongoTeamMember } from '@fastgpt/service/support/user/team/teamMemberSchema';
import { MongoOrgMemberModel } from '@fastgpt/service/support/permission/org/orgMemberSchema';

async function handler(req: NextApiRequest, res: NextApiResponse) {
  const { tmbId } = req.query;
  // console.log('tmbId::================', tmbId)
  try {
    await MongoOrgMemberModel.deleteOne({ tmbId });
    await MongoTeamMember.findByIdAndUpdate(tmbId, { status: 'leave' });
    return res.status(200).json({ success: true });
  } catch (error: any) {
    console.error('删除失败:', error);
    return res.status(500).json({ message: '服务器内部错误' });
  }
}

export default NextAPI(handler);
// 成员查询
import type { NextApiRequest, NextApiResponse } from 'next';
import { NextAPI } from '@/service/middleware/entry';
import { MongoTeamMember } from '@fastgpt/service/support/user/team/teamMemberSchema';
import { parsePaginationRequest } from '@fastgpt/service/common/api/pagination';
import { authCert } from '@fastgpt/service/support/permission/auth/common';
import { Types } from 'mongoose';

async function handler(req: NextApiRequest, res: NextApiResponse) {
  let { offset, pageSize } = parsePaginationRequest(req);
  const userInfo = await authCert({ req, authToken: true });
  // console.log('userInfo======', userInfo)
  const memberList = await MongoTeamMember.aggregate([
    { $match: { teamId: new Types.ObjectId(userInfo.teamId) } },
    {
      $project: {
        memberName: '$name',// 这里的memberName做了映射,因为创建时把字段弄成了name,如果你本身就是memberName则不需要映射
        tmbId: '$_id',
        _id: 1,
        role: 1,
        name: 1,
        teamId: 1,
        userId: 1,
        status: 1,
        avatar: 1,
        createTime: 1,
        defaultTeam: 1
      }
    },
    { $sort: { time: -1 } },
    { $skip: offset }
  ]);

  return {
    list: memberList,
    total: memberList.length
  };
}

export default NextAPI(handler);
// 成员恢复
import type { NextApiRequest, NextApiResponse } from 'next';
import { NextAPI } from '@/service/middleware/entry';
import { MongoTeamMember } from '@fastgpt/service/support/user/team/teamMemberSchema';

async function handler(req: NextApiRequest, res: NextApiResponse) {
  const { tmbId } = req.body;
  try {
    await MongoTeamMember.findByIdAndUpdate(tmbId, { status: 'active' });
    return res.status(200).json({ success: true });
  } catch (error: any) {
    console.error('删除失败:', error);
    return res.status(500).json({ message: '服务器内部错误' });
  }
}

export default NextAPI(handler);

主要是这块的一些接口实现

fastGPT—nextjs—mongoose—团队管理之成员增删改查api接口实现_第1张图片

你可能感兴趣的:(前端,javascript,vue.js,nextjs,mongoose,fastgpt团队管理api)