Files
2025-04-02 11:28:49 +08:00

100 lines
2.4 KiB
TypeScript

import { NextRequest, NextResponse } from "next/server";
import {
markAllEmailsAsRead,
markEmailAsRead,
markEmailsAsRead,
} from "@/lib/dto/email";
import { checkUserStatus } from "@/lib/dto/user";
import { getCurrentUser } from "@/lib/session";
// 处理单封邮件标记为已读 (POST)
export async function POST(request: NextRequest) {
try {
const user = checkUserStatus(await getCurrentUser());
if (user instanceof Response) return user;
const body = await request.json();
const { emailId } = body;
if (!emailId) {
return NextResponse.json(
{ error: "缺少必要的参数: emailId" },
{ status: 400 },
);
}
await markEmailAsRead(emailId, user.id);
return NextResponse.json({
success: true,
});
} catch (error) {
return NextResponse.json(
{
success: false,
error: error instanceof Error ? error.message : "服务器错误",
},
{ status: 500 },
);
}
}
// 处理批量标记为已读 (PUT)
export async function PUT(request: NextRequest) {
try {
const user = checkUserStatus(await getCurrentUser());
if (user instanceof Response) return user;
const body = await request.json();
const { emailIds } = body;
if (!emailIds || !Array.isArray(emailIds)) {
return NextResponse.json(
{ error: "缺少必要的参数: emailIds 必须是数组" },
{ status: 400 },
);
}
await markEmailsAsRead(emailIds, user.id);
return NextResponse.json({
success: true,
});
} catch (error) {
return NextResponse.json(
{
success: false,
error: error instanceof Error ? error.message : "服务器错误",
},
{ status: 500 },
);
}
}
// 处理将所有邮件标记为已读 (PATCH)
export async function PATCH(request: NextRequest) {
try {
const body = await request.json();
const { userEmailId, userId } = body;
if (!userEmailId || !userId) {
return NextResponse.json(
{ error: "缺少必要的参数: userEmailId 和 userId" },
{ status: 400 },
);
}
await markAllEmailsAsRead(userEmailId, userId);
return NextResponse.json({
success: true,
});
} catch (error) {
return NextResponse.json(
{
success: false,
error: error instanceof Error ? error.message : "服务器错误",
},
{ status: 500 },
);
}
}