fix: remove dead code, add ZodError handling, fix NaN pagination, add like routes, fix schemesCount sync
This commit is contained in:
@@ -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;
|
||||
Reference in New Issue
Block a user