Files
easyimg/server/api/images/batch.delete.js
T

74 lines
1.7 KiB
JavaScript

import db from '../../utils/db.js'
import { verifyToken, extractToken } from '../../utils/jwt.js'
export default defineEventHandler(async (event) => {
try {
// 验证登录
const token = extractToken(event)
if (!token) {
throw createError({
statusCode: 401,
message: '请先登录'
})
}
const user = await verifyToken(token)
if (!user) {
throw createError({
statusCode: 401,
message: 'Token 无效或已过期'
})
}
// 获取要删除的图片 ID 列表
const body = await readBody(event)
const { ids } = body
if (!ids || !Array.isArray(ids) || ids.length === 0) {
throw createError({
statusCode: 400,
message: '请选择要删除的图片'
})
}
// 批量软删除
let deletedCount = 0
for (const id of ids) {
// 先查找图片是否存在且未被删除
const image = await db.images.findOne({ _id: id })
if (image && !image.isDeleted) {
await db.images.update(
{ _id: id },
{
$set: {
isDeleted: true,
deletedAt: new Date().toISOString(),
deletedBy: user.username
}
}
)
// 更新成功,增加计数
deletedCount++
}
}
return {
success: true,
message: `成功删除 ${deletedCount} 张图片`,
data: {
deletedCount
}
}
} catch (error) {
if (error.statusCode) {
throw error
}
console.error('[Images] 批量删除图片失败:', error)
throw createError({
statusCode: 500,
message: '批量删除图片失败'
})
}
})