104 lines
2.2 KiB
TypeScript
104 lines
2.2 KiB
TypeScript
import { NextRequest, NextResponse } from 'next/server'
|
|
import { UserService } from '@/lib/services/database-service'
|
|
|
|
const userService = new UserService()
|
|
|
|
export async function GET(
|
|
request: NextRequest,
|
|
{ params }: { params: { id: string } }
|
|
) {
|
|
try {
|
|
const user = await userService.findById(params.id)
|
|
|
|
if (!user) {
|
|
return NextResponse.json(
|
|
{ error: '用戶不存在' },
|
|
{ status: 404 }
|
|
)
|
|
}
|
|
|
|
// 獲取用戶統計
|
|
const stats = await userService.getUserStatistics(params.id)
|
|
|
|
return NextResponse.json({
|
|
success: true,
|
|
data: {
|
|
user,
|
|
stats
|
|
}
|
|
})
|
|
|
|
} catch (error) {
|
|
console.error('獲取用戶詳情錯誤:', error)
|
|
return NextResponse.json(
|
|
{ error: '獲取用戶詳情時發生錯誤' },
|
|
{ status: 500 }
|
|
)
|
|
}
|
|
}
|
|
|
|
export async function PUT(
|
|
request: NextRequest,
|
|
{ params }: { params: { id: string } }
|
|
) {
|
|
try {
|
|
const updates = await request.json()
|
|
|
|
// 移除不允許更新的欄位
|
|
delete updates.id
|
|
delete updates.created_at
|
|
delete updates.password_hash
|
|
|
|
const updatedUser = await userService.update(params.id, updates)
|
|
|
|
if (!updatedUser) {
|
|
return NextResponse.json(
|
|
{ error: '用戶不存在或更新失敗' },
|
|
{ status: 404 }
|
|
)
|
|
}
|
|
|
|
return NextResponse.json({
|
|
success: true,
|
|
message: '用戶資料已更新',
|
|
data: updatedUser
|
|
})
|
|
|
|
} catch (error) {
|
|
console.error('更新用戶錯誤:', error)
|
|
return NextResponse.json(
|
|
{ error: '更新用戶時發生錯誤' },
|
|
{ status: 500 }
|
|
)
|
|
}
|
|
}
|
|
|
|
export async function DELETE(
|
|
request: NextRequest,
|
|
{ params }: { params: { id: string } }
|
|
) {
|
|
try {
|
|
// 軟刪除:將 is_active 設為 false
|
|
const result = await userService.update(params.id, { is_active: false })
|
|
|
|
if (!result) {
|
|
return NextResponse.json(
|
|
{ error: '用戶不存在或刪除失敗' },
|
|
{ status: 404 }
|
|
)
|
|
}
|
|
|
|
return NextResponse.json({
|
|
success: true,
|
|
message: '用戶已刪除'
|
|
})
|
|
|
|
} catch (error) {
|
|
console.error('刪除用戶錯誤:', error)
|
|
return NextResponse.json(
|
|
{ error: '刪除用戶時發生錯誤' },
|
|
{ status: 500 }
|
|
)
|
|
}
|
|
}
|