Files
SaaS2/src/pages/api/team/members.ts
RUI 27733bd91e
All checks were successful
Next.js CI/CD 流水线 / deploy (push) Successful in 4m44s
0610.1
2025-06-10 16:14:49 +08:00

81 lines
2.0 KiB
TypeScript

/**
* 团队成员API接口
* 作者: 阿瑞
* 功能: 获取团队成员列表,用于待办事项分配
* 版本: v1.0
*/
import type { NextApiRequest, NextApiResponse } from 'next';
import { User } from '@/models';
import connectDB from '@/lib/connectDB';
// API响应接口
interface ApiResponse<T = any> {
success: boolean;
data?: T;
message: string;
error?: string;
}
// API处理函数
const handler = async (req: NextApiRequest, res: NextApiResponse<ApiResponse>) => {
try {
switch (req.method) {
case 'GET':
await handleGet(req, res);
break;
default:
res.setHeader('Allow', ['GET']);
res.status(405).json({
success: false,
message: `不允许 ${req.method} 方法`
});
}
} catch (error) {
console.error('团队成员API错误:', error);
res.status(500).json({
success: false,
message: '服务器内部错误',
error: process.env.NODE_ENV === 'development' ? (error as Error).message : undefined
});
}
};
/**
* 获取团队成员列表
* GET /api/team/members?teamId=xxx
*/
async function handleGet(req: NextApiRequest, res: NextApiResponse<ApiResponse>) {
try {
const { teamId } = req.query;
// 验证必填参数
if (!teamId) {
return res.status(400).json({
success: false,
message: '缺少团队ID参数'
});
}
// 查询团队成员列表
const members = await User.find({
团队: teamId
})
.select('姓名 头像 角色 邮箱 手机号码 状态')
.populate('角色', '名称')
.sort({ createdAt: -1 });
res.status(200).json({
success: true,
data: members,
message: '获取团队成员列表成功'
});
} catch (error) {
console.error('获取团队成员列表失败:', error);
res.status(500).json({
success: false,
message: '获取团队成员列表失败'
});
}
}
export default connectDB(handler);