const { query, transaction } = require('../config/database') async function getSpecs(ctx) { const goodsId = ctx.query.goods_id if (!goodsId) { ctx.body = { code: 400, message: '缺少 goods_id 参数' } return } const rows = await query('SELECT * FROM goods_specs WHERE goods_id = ? ORDER BY price ASC', [goodsId]) ctx.body = { code: 200, data: rows } } async function createSpec(ctx) { const { goods_id, spec_name, price, stock = 0 } = ctx.request.body if (!goods_id || !spec_name || price === undefined) { ctx.body = { code: 400, message: '缺少必填参数' } return } const result = await query( 'INSERT INTO goods_specs (goods_id, spec_name, price, stock) VALUES (?, ?, ?, ?)', [goods_id, spec_name, price, stock] ) ctx.body = { code: 200, data: { id: result.insertId } } } async function updateSpec(ctx) { const id = ctx.params.id const { spec_name, price, stock } = ctx.request.body const fields = [] const params = [] if (spec_name !== undefined) { fields.push('spec_name = ?'); params.push(spec_name) } if (price !== undefined) { fields.push('price = ?'); params.push(price) } if (stock !== undefined) { fields.push('stock = ?'); params.push(stock) } if (fields.length > 0) { params.push(id) await query(`UPDATE goods_specs SET ${fields.join(', ')} WHERE id = ?`, params) } ctx.body = { code: 200, message: '更新成功' } } async function deleteSpec(ctx) { const id = ctx.params.id await query('DELETE FROM goods_specs WHERE id = ?', [id]) ctx.body = { code: 200, message: '删除成功' } } async function batchSave(ctx) { const { goods_id, specs } = ctx.request.body if (!goods_id || !Array.isArray(specs)) { ctx.body = { code: 400, message: '参数错误' } return } await transaction(async (conn) => { await conn.execute('DELETE FROM goods_specs WHERE goods_id = ?', [goods_id]) for (const spec of specs) { if (spec.spec_name && spec.price !== undefined) { await conn.execute( 'INSERT INTO goods_specs (goods_id, spec_name, price, stock) VALUES (?, ?, ?, ?)', [goods_id, spec.spec_name, spec.price, spec.stock || 0] ) } } }) ctx.body = { code: 200, message: '保存成功' } } module.exports = { getSpecs, createSpec, updateSpec, deleteSpec, batchSave }