import { Request, Response } from 'express' import pool from '../utils/db' import { RowDataPacket, ResultSetHeader } from 'mysql2' // GET /api/admin/categories export async function adminGetCategories(_req: Request, res: Response): Promise { try { const [rows] = await pool.execute( 'SELECT id, name, icon, parent_id, sort FROM categories ORDER BY sort ASC, id ASC' ) res.json({ code: 0, data: rows }) } catch (err) { console.error('adminGetCategories error:', err) res.status(500).json({ code: 500, message: '获取分类列表失败' }) } } // POST /api/admin/categories export async function adminCreateCategory(req: Request, res: Response): Promise { try { const { name, parentId, sort, icon } = req.body if (!name || !name.trim()) { res.status(400).json({ code: 400, message: '分类名称不能为空' }) return } const [result] = await pool.execute( 'INSERT INTO categories (name, icon, parent_id, sort) VALUES (?, ?, ?, ?)', [name.trim(), icon || null, parentId || null, sort ?? 0] ) res.json({ code: 0, data: { id: result.insertId } }) } catch (err) { console.error('adminCreateCategory error:', err) res.status(500).json({ code: 500, message: '创建分类失败' }) } } // DELETE /api/admin/categories/:id export async function adminDeleteCategory(req: Request, res: Response): Promise { try { const { id } = req.params // Check if any products use this category const [products] = await pool.execute( 'SELECT COUNT(*) as count FROM products WHERE category_id = ?', [id] ) if (products[0].count > 0) { res.status(400).json({ code: 400, message: '该分类下有商品,无法删除' }) return } await pool.execute('DELETE FROM categories WHERE id = ?', [id]) res.json({ code: 0, message: '删除成功' }) } catch (err) { console.error('adminDeleteCategory error:', err) res.status(500).json({ code: 500, message: '删除分类失败' }) } }