init
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
import { NextRequest, NextResponse } from 'next/server';
|
||||
import { prisma } from '@/lib/prisma';
|
||||
import { sendMsg } from '@/lib/qqbot';
|
||||
|
||||
export async function POST(request: NextRequest) {
|
||||
try {
|
||||
const body = await request.json();
|
||||
const { name, phone, email, description } = body;
|
||||
|
||||
// 验证必填字段
|
||||
if (!name || !phone || !email || !description) {
|
||||
return NextResponse.json(
|
||||
{ error: '所有字段都是必填的' },
|
||||
{ status: 400 }
|
||||
);
|
||||
}
|
||||
|
||||
// 验证邮箱格式
|
||||
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
||||
if (!emailRegex.test(email)) {
|
||||
return NextResponse.json(
|
||||
{ error: '邮箱格式不正确' },
|
||||
{ status: 400 }
|
||||
);
|
||||
}
|
||||
|
||||
// 验证手机号格式(中国手机号)
|
||||
const phoneRegex = /^1[3-9]\d{9}$/;
|
||||
if (!phoneRegex.test(phone)) {
|
||||
return NextResponse.json(
|
||||
{ error: '手机号格式不正确' },
|
||||
{ status: 400 }
|
||||
);
|
||||
}
|
||||
|
||||
// 保存到数据库
|
||||
const message = await prisma.message.create({
|
||||
data: {
|
||||
name,
|
||||
phone,
|
||||
email,
|
||||
description,
|
||||
},
|
||||
});
|
||||
|
||||
// 发送 QQ 消息通知管理员
|
||||
const qqBotUrl = process.env.QQ_BOT_URL;
|
||||
const qqBotTargetId = process.env.QQ_BOT_TARGET_ID;
|
||||
|
||||
if (qqBotUrl && qqBotTargetId) {
|
||||
const notificationMsg = `【新留言通知】\n姓名:${name}\n电话:${phone}\n邮箱:${email}\n需求描述:${description}\n时间:${new Date().toLocaleString('zh-CN', { timeZone: 'Asia/Shanghai' })}`;
|
||||
|
||||
try {
|
||||
await sendMsg(notificationMsg, qqBotTargetId, qqBotUrl);
|
||||
} catch (qqError) {
|
||||
console.error('QQ消息发送失败:', qqError);
|
||||
// QQ消息发送失败不影响留言保存
|
||||
}
|
||||
}
|
||||
|
||||
return NextResponse.json(
|
||||
{
|
||||
success: true,
|
||||
message: '留言提交成功,我们会尽快与您联系!',
|
||||
data: { id: message.id }
|
||||
},
|
||||
{ status: 201 }
|
||||
);
|
||||
|
||||
} catch (error) {
|
||||
console.error('留言提交失败:', error);
|
||||
return NextResponse.json(
|
||||
{ error: '服务器错误,请稍后再试' },
|
||||
{ status: 500 }
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user