first-update
This commit is contained in:
@@ -0,0 +1,171 @@
|
||||
import { NextResponse } from 'next/server';
|
||||
import { PrismaClient } from '@prisma/client';
|
||||
|
||||
const prisma = new PrismaClient();
|
||||
|
||||
// 获取任务详情
|
||||
export async function GET(request, { params }) {
|
||||
try {
|
||||
const { projectId, taskId } = params;
|
||||
|
||||
// 验证必填参数
|
||||
if (!projectId || !taskId) {
|
||||
return NextResponse.json(
|
||||
{
|
||||
code: 400,
|
||||
error: '缺少必要参数'
|
||||
},
|
||||
{ status: 400 }
|
||||
);
|
||||
}
|
||||
|
||||
// 查询任务详情
|
||||
const task = await prisma.task.findUnique({
|
||||
where: {
|
||||
id: taskId,
|
||||
projectId
|
||||
}
|
||||
});
|
||||
|
||||
if (!task) {
|
||||
return NextResponse.json(
|
||||
{
|
||||
code: 404,
|
||||
error: '任务不存在'
|
||||
},
|
||||
{ status: 404 }
|
||||
);
|
||||
}
|
||||
|
||||
return NextResponse.json({
|
||||
code: 0,
|
||||
data: task,
|
||||
message: '获取任务详情成功'
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('获取任务详情失败:', String(error));
|
||||
return NextResponse.json(
|
||||
{
|
||||
code: 500,
|
||||
error: '获取任务详情失败',
|
||||
message: error.message
|
||||
},
|
||||
{ status: 500 }
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// 更新任务状态
|
||||
export async function PATCH(request, { params }) {
|
||||
try {
|
||||
const { projectId, taskId } = params;
|
||||
const data = await request.json();
|
||||
|
||||
// 验证必填参数
|
||||
if (!projectId || !taskId) {
|
||||
return NextResponse.json(
|
||||
{
|
||||
code: 400,
|
||||
error: '缺少必要参数'
|
||||
},
|
||||
{ status: 400 }
|
||||
);
|
||||
}
|
||||
|
||||
// 获取要更新的字段
|
||||
const { status, completedCount, totalCount, detail, note, endTime } = data;
|
||||
|
||||
// 构建更新数据
|
||||
const updateData = {};
|
||||
|
||||
if (status !== undefined) {
|
||||
updateData.status = status;
|
||||
}
|
||||
|
||||
if (completedCount !== undefined) {
|
||||
updateData.completedCount = completedCount;
|
||||
}
|
||||
|
||||
if (totalCount !== undefined) {
|
||||
updateData.totalCount = totalCount;
|
||||
}
|
||||
|
||||
if (detail !== undefined) {
|
||||
updateData.detail = detail;
|
||||
}
|
||||
|
||||
if (note !== undefined) {
|
||||
updateData.note = note;
|
||||
}
|
||||
|
||||
// 如果状态变为已完成、失败或已中断,自动添加结束时间
|
||||
if (status === 1 || status === 2 || status === 3) {
|
||||
updateData.endTime = endTime || new Date();
|
||||
}
|
||||
|
||||
// 更新任务
|
||||
const updatedTask = await prisma.task.update({
|
||||
where: {
|
||||
id: taskId
|
||||
},
|
||||
data: updateData
|
||||
});
|
||||
|
||||
return NextResponse.json({
|
||||
code: 0,
|
||||
data: updatedTask,
|
||||
message: '更新任务状态成功'
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('更新任务状态失败:', String(error));
|
||||
return NextResponse.json(
|
||||
{
|
||||
code: 500,
|
||||
error: '更新任务状态失败',
|
||||
message: error.message
|
||||
},
|
||||
{ status: 500 }
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// 删除任务
|
||||
export async function DELETE(request, { params }) {
|
||||
try {
|
||||
const { projectId, taskId } = params;
|
||||
|
||||
// 验证必填参数
|
||||
if (!projectId || !taskId) {
|
||||
return NextResponse.json(
|
||||
{
|
||||
code: 400,
|
||||
error: '缺少必要参数'
|
||||
},
|
||||
{ status: 400 }
|
||||
);
|
||||
}
|
||||
|
||||
// 删除任务
|
||||
await prisma.task.delete({
|
||||
where: {
|
||||
id: taskId,
|
||||
projectId
|
||||
}
|
||||
});
|
||||
|
||||
return NextResponse.json({
|
||||
code: 0,
|
||||
message: '删除任务成功'
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('删除任务失败:', String(error));
|
||||
return NextResponse.json(
|
||||
{
|
||||
code: 500,
|
||||
error: '删除任务失败',
|
||||
message: error.message
|
||||
},
|
||||
{ status: 500 }
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user