feat: 官网代码全量更新 (2026-04-18)

这个提交包含在:
wx
2026-04-18 15:13:28 +08:00
父节点 fcac8f88db
当前提交 f91ecbb093
共修改 135 个文件,包含 10307 行新增和 3349 行删除
@@ -0,0 +1,30 @@
import { eq } from 'drizzle-orm'
import { useDB, schema } from '../../../utils/db.js'
import { requireAdmin } from '../../../utils/auth.js'
export default defineEventHandler(async (event) => {
requireAdmin(event)
const id = Number(getRouterParam(event, 'id'))
if (!id || isNaN(id)) {
throw createError({ statusCode: 400, message: '无效的 id 参数' })
}
const db = useDB()
const [existing] = db
.select()
.from(schema.submissions)
.where(eq(schema.submissions.id, id))
.all()
if (!existing) {
throw createError({ statusCode: 404, message: '记录不存在' })
}
db.delete(schema.submissions)
.where(eq(schema.submissions.id, id))
.run()
return { success: true, id }
})
+21 -4
查看文件
@@ -10,9 +10,26 @@ export default defineEventHandler(async (event) => {
throw createError({ statusCode: 400, message: '无效的 id 参数' })
}
const body = await readBody(event)
if (typeof body.read !== 'boolean') {
throw createError({ statusCode: 400, message: 'read 字段必须是布尔值' })
const body = await readBody(event) || {}
const patch = {}
if (typeof body.read === 'boolean') {
patch.read = body.read
}
if (typeof body.replied === 'boolean') {
patch.replied = body.replied
patch.repliedAt = body.replied ? new Date().toISOString() : null
// 标记为已回复时自动视为已读
if (body.replied) patch.read = true
}
if (body.data && typeof body.data === 'object' && !Array.isArray(body.data)) {
patch.data = JSON.stringify(body.data)
}
if (Object.keys(patch).length === 0) {
throw createError({ statusCode: 400, message: '请求体必须包含 read/replied/data 中的至少一个字段' })
}
const db = useDB()
@@ -28,7 +45,7 @@ export default defineEventHandler(async (event) => {
}
db.update(schema.submissions)
.set({ read: body.read })
.set(patch)
.where(eq(schema.submissions.id, id))
.run()