// ===================================================== // 團隊詳細操作 API // ===================================================== import { NextRequest, NextResponse } from 'next/server'; import { TeamService } from '@/lib/services/database-service'; // 獲取單一團隊 export async function GET(request: NextRequest, { params }: { params: { id: string } }) { try { const { id } = await params; const team = await TeamService.getTeamById(id); if (!team) { return NextResponse.json({ success: false, message: '團隊不存在', error: '找不到指定的團隊' }, { status: 404 }); } // 獲取團隊成員 const members = await TeamService.getTeamMembers(id); team.members = members; // 獲取團隊應用 const apps = await TeamService.getTeamApps(id); team.apps = apps; return NextResponse.json({ success: true, message: '團隊獲取成功', data: team }); } catch (error) { console.error('獲取團隊失敗:', error); return NextResponse.json({ success: false, message: '獲取團隊失敗', error: error instanceof Error ? error.message : '未知錯誤' }, { status: 500 }); } } // 更新團隊 export async function PUT(request: NextRequest, { params }: { params: { id: string } }) { try { const { id } = await params; const body = await request.json(); // 檢查團隊是否存在 const existingTeam = await TeamService.getTeamById(id); if (!existingTeam) { return NextResponse.json({ success: false, message: '團隊不存在', error: '找不到指定的團隊' }, { status: 404 }); } // 如果更新名稱,檢查是否重複 if (body.name && body.name !== existingTeam.name) { const nameExists = await TeamService.getTeamByName(body.name); if (nameExists) { return NextResponse.json({ success: false, message: '團隊名稱已存在', error: '團隊名稱重複' }, { status: 409 }); } } // 更新團隊 const success = await TeamService.updateTeam(id, body); if (!success) { return NextResponse.json({ success: false, message: '更新團隊失敗', error: '無法更新團隊' }, { status: 500 }); } // 獲取更新後的團隊信息 const updatedTeam = await TeamService.getTeamById(id); return NextResponse.json({ success: true, message: '團隊更新成功', data: updatedTeam }); } catch (error) { console.error('更新團隊失敗:', error); return NextResponse.json({ success: false, message: '更新團隊失敗', error: error instanceof Error ? error.message : '未知錯誤' }, { status: 500 }); } } // 刪除團隊 export async function DELETE(request: NextRequest, { params }: { params: { id: string } }) { try { const { id } = await params; const url = new URL(request.url); const hardDelete = url.searchParams.get('hard') === 'true'; // 檢查團隊是否存在 const existingTeam = await TeamService.getTeamById(id); if (!existingTeam) { return NextResponse.json({ success: false, message: '團隊不存在', error: '找不到指定的團隊' }, { status: 404 }); } let success: boolean; if (hardDelete) { // 硬刪除:從資料庫中完全移除 success = await TeamService.hardDeleteTeam(id); } else { // 軟刪除:將 is_active 設為 false success = await TeamService.deleteTeam(id); } if (!success) { return NextResponse.json({ success: false, message: '刪除團隊失敗', error: '無法刪除團隊' }, { status: 500 }); } return NextResponse.json({ success: true, message: hardDelete ? '團隊已永久刪除' : '團隊已停用', data: { hardDelete } }); } catch (error) { console.error('刪除團隊失敗:', error); return NextResponse.json({ success: false, message: '刪除團隊失敗', error: error instanceof Error ? error.message : '未知錯誤' }, { status: 500 }); } }