81 lines
2.0 KiB
TypeScript
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);
|