新增功能: - 素材类型系统:支持3DMAX/PSD/AI/CAD/C4D/其他等多种类型 - 智能表单:渲染器选项仅在3DMAX类型时显示 - 类型标签:首页卡片显示素材类型标签(橙色) - 系统外观设置:自定义导航栏颜色、LOGO和网站名称 数据库变更: - 新增materialType字段到materials表 - 新增materialType索引优化查询 - 新增SystemSettings表存储系统设置 技术改进: - 完整的TypeScript类型支持 - 前后端完整适配 - 修复Next.js配置弃用警告 - 添加完整的部署文档 文件变更: - 修改: 上传/编辑组件支持素材类型 - 修改: API接口处理新字段 - 新增: 系统设置管理页面 - 新增: 系统设置API路由 - 新增: 数据库迁移文件 - 更新: 项目文档和部署指南
79 lines
2.0 KiB
TypeScript
79 lines
2.0 KiB
TypeScript
import { NextRequest, NextResponse } from 'next/server'
|
|
import { getServerSession } from 'next-auth'
|
|
import { authOptions } from '@/lib/auth'
|
|
import { prisma } from '@/lib/prisma'
|
|
|
|
// GET - 获取系统设置
|
|
export async function GET() {
|
|
try {
|
|
// 获取或创建系统设置
|
|
let settings = await prisma.systemSettings.findFirst()
|
|
|
|
if (!settings) {
|
|
// 如果不存在,创建默认设置
|
|
settings = await prisma.systemSettings.create({
|
|
data: {
|
|
headerBgColor: '#1f2937',
|
|
logoUrl: 'http://s3.1080p.hk/shuzhou/2025/05/18/8ebadf0a7cc34eaea00e8619b8efb827.png',
|
|
siteName: '由壹点3D素材'
|
|
}
|
|
})
|
|
}
|
|
|
|
return NextResponse.json(settings)
|
|
} catch (error) {
|
|
console.error('Get system settings error:', error)
|
|
return NextResponse.json(
|
|
{ error: '获取系统设置失败' },
|
|
{ status: 500 }
|
|
)
|
|
}
|
|
}
|
|
|
|
// PUT - 更新系统设置(仅管理员)
|
|
export async function PUT(request: NextRequest) {
|
|
try {
|
|
const session = await getServerSession(authOptions)
|
|
|
|
if (!session || session.user.role !== 'ADMIN') {
|
|
return NextResponse.json(
|
|
{ error: '无权限' },
|
|
{ status: 403 }
|
|
)
|
|
}
|
|
|
|
const body = await request.json()
|
|
const { headerBgColor, siteName } = body
|
|
|
|
// 获取或创建系统设置
|
|
let settings = await prisma.systemSettings.findFirst()
|
|
|
|
if (!settings) {
|
|
// 创建
|
|
settings = await prisma.systemSettings.create({
|
|
data: {
|
|
headerBgColor: headerBgColor || '#1f2937',
|
|
siteName: siteName || '由壹点3D素材'
|
|
}
|
|
})
|
|
} else {
|
|
// 更新
|
|
settings = await prisma.systemSettings.update({
|
|
where: { id: settings.id },
|
|
data: {
|
|
headerBgColor,
|
|
siteName
|
|
}
|
|
})
|
|
}
|
|
|
|
return NextResponse.json(settings)
|
|
} catch (error) {
|
|
console.error('Update system settings error:', error)
|
|
return NextResponse.json(
|
|
{ error: '更新系统设置失败' },
|
|
{ status: 500 }
|
|
)
|
|
}
|
|
}
|