2026-05-25: 等级体系升级(20级)+论坛二级分类+会员空间

This commit is contained in:
ZhuiGuangAI Dev
2026-05-24 23:05:38 +08:00
parent 6c78c32157
commit 9bf3e7574a
118 changed files with 11842 additions and 3262 deletions
+24 -17
View File
@@ -39,6 +39,10 @@ export async function POST(
return NextResponse.json({ error: "待审核工具不存在" }, { status: 404 });
}
if (pending.status !== "pending") {
return NextResponse.json({ error: "该记录已被处理" }, { status: 409 });
}
let slug = pinyinSlug(pending.name);
const existing = await prisma.tool.findUnique({ where: { slug } });
if (existing) {
@@ -49,27 +53,30 @@ export async function POST(
await prisma.category.findFirst({ orderBy: { sortOrder: "asc" } })
)?.id ?? 1);
const tool = await prisma.tool.create({
data: {
name: pending.name,
slug,
categoryId,
description: pending.description ?? "",
logoUrl: pending.logoUrl,
websiteUrl: pending.websiteUrl ?? "",
pricingModel: pending.pricingModel ?? "freemium",
pricingDetail: pending.pricingDetail,
features: pending.features as any,
tags: pending.tags as any,
status: "published",
},
let toolId = 0;
await prisma.$transaction(async (tx) => {
const tool = await tx.tool.create({
data: {
name: pending.name,
slug,
categoryId,
description: pending.description ?? "",
logoUrl: pending.logoUrl,
websiteUrl: pending.websiteUrl ?? "",
pricingModel: pending.pricingModel ?? "freemium",
pricingDetail: pending.pricingDetail,
features: pending.features as any,
tags: pending.tags as any,
status: "published",
},
});
toolId = tool.id;
await tx.pendingTool.delete({ where: { id } });
});
await prisma.pendingTool.delete({ where: { id } });
return NextResponse.json({
success: true,
toolId: tool.id,
toolId,
message: "发布成功",
});
} catch (error: unknown) {