import { Request, Response } from 'express' import pool from '../utils/db' import { RowDataPacket, ResultSetHeader } from 'mysql2' // GET /api/admin/molds - 管理后台版房列表 export async function adminGetMolds(req: Request, res: Response): Promise { try { const page = Math.max(1, Number(req.query.page) || 1) const pageSize = Math.min(50, Math.max(1, Number(req.query.pageSize) || 10)) const keyword = req.query.keyword as string | undefined const offset = (page - 1) * pageSize let where = '' const params: any[] = [] if (keyword && keyword.trim()) { const kw = `%${keyword.trim()}%` where = 'WHERE name LIKE ? OR style_no LIKE ? OR barcode_no LIKE ? OR style LIKE ?' params.push(kw, kw, kw, kw) } const [countRows] = await pool.execute( `SELECT COUNT(*) as total FROM mold_infos ${where}`, params ) const total = countRows[0].total const [rows] = await pool.execute( `SELECT id, name, style_no, barcode_no, style, images, created_at, updated_at FROM mold_infos ${where} ORDER BY id DESC LIMIT ? OFFSET ?`, [...params, String(pageSize), String(offset)] ) res.json({ code: 0, data: { list: rows, total, page, pageSize } }) } catch (err) { console.error('adminGetMolds error:', err) res.status(500).json({ code: 500, message: '获取版房列表失败' }) } } // POST /api/admin/molds - 创建版房信息 export async function adminCreateMold(req: Request, res: Response): Promise { try { const { name, styleNo, barcodeNo, style, images } = req.body if (!name) { res.status(400).json({ code: 400, message: '版房名称不能为空' }) return } const [result] = await pool.execute( 'INSERT INTO mold_infos (name, style_no, barcode_no, style, images) VALUES (?, ?, ?, ?, ?)', [name, styleNo || null, barcodeNo || null, style || null, JSON.stringify(images || [])] ) res.json({ code: 0, data: { id: result.insertId } }) } catch (err) { console.error('adminCreateMold error:', err) res.status(500).json({ code: 500, message: '创建版房信息失败' }) } } // PUT /api/admin/molds/:id - 编辑版房信息 export async function adminUpdateMold(req: Request, res: Response): Promise { try { const { id } = req.params const { name, styleNo, barcodeNo, style, images } = req.body const [existing] = await pool.execute( 'SELECT id FROM mold_infos WHERE id = ?', [id] ) if (existing.length === 0) { res.status(404).json({ code: 404, message: '版房信息不存在' }) return } await pool.execute( 'UPDATE mold_infos SET name=?, style_no=?, barcode_no=?, style=?, images=? WHERE id=?', [name, styleNo || null, barcodeNo || null, style || null, JSON.stringify(images || []), id] ) res.json({ code: 0, message: '更新成功' }) } catch (err) { console.error('adminUpdateMold error:', err) res.status(500).json({ code: 500, message: '更新版房信息失败' }) } } // DELETE /api/admin/molds/:id - 删除版房信息 export async function adminDeleteMold(req: Request, res: Response): Promise { try { const { id } = req.params await pool.execute('DELETE FROM mold_infos WHERE id = ?', [id]) res.json({ code: 0, message: '删除成功' }) } catch (err) { console.error('adminDeleteMold error:', err) res.status(500).json({ code: 500, message: '删除版房信息失败' }) } }