fix: remove dead code, add ZodError handling, fix NaN pagination, add like routes, fix schemesCount sync

This commit is contained in:
2026-05-14 11:45:19 +08:00
parent 68f74bbc8c
commit ea4e0f6e07
7 changed files with 224 additions and 175 deletions

View File

@@ -12,7 +12,9 @@ router.get('/', optionalAuth, async (req: Request, res: Response) => {
try {
const { page = 1, limit = 20, weapon, category, sort = 'newest' } = req.query;
const skip = (Number(page) - 1) * Number(limit);
const pageNum = Math.max(1, parseInt(String(page)) || 1);
const limitNum = Math.min(100, Math.max(1, parseInt(String(limit)) || 20));
const skip = (pageNum - 1) * limitNum;
const where: any = { status: 'PUBLISHED' };
if (weapon) where.weaponName = { contains: String(weapon) };
@@ -111,6 +113,11 @@ router.post('/', authMiddleware, async (req: Request, res: Response) => {
},
});
await prisma.user.update({
where: { id: req.user!.userId },
data: { schemesCount: { increment: 1 } },
});
res.json({ success: true, message: '方案创建成功', data: scheme });
} catch (error) {
console.error('Create scheme_aob error:', error);
@@ -118,4 +125,41 @@ router.post('/', authMiddleware, async (req: Request, res: Response) => {
}
});
// ============================================
// 删除方案
// ============================================
router.delete('/:id', authMiddleware, async (req: Request, res: Response) => {
try {
const { id } = req.params;
const scheme = await prisma.schemeAob.findUnique({
where: { id },
select: { userId: true },
});
if (!scheme) {
return res.status(404).json({ success: false, message: '方案不存在' });
}
if (scheme.userId !== req.user!.userId) {
return res.status(403).json({ success: false, message: '无权删除此方案' });
}
await prisma.schemeAob.update({
where: { id },
data: { status: 'DELETED' },
});
await prisma.user.update({
where: { id: req.user!.userId },
data: { schemesCount: { decrement: 1 } },
});
res.json({ success: true, message: '方案已删除' });
} catch (error) {
console.error('Delete scheme_aob error:', error);
res.status(500).json({ success: false, message: '删除失败' });
}
});
export default router;