const { query } = require('../config/database') async function getAddresses(ctx) { const userId = ctx.query.user_id if (!userId) { ctx.body = { code: 400, message: '缺少 user_id 参数' } return } const rows = await query( 'SELECT * FROM addresses WHERE user_id = ? ORDER BY is_default DESC, created_at DESC', [userId] ) ctx.body = { code: 200, data: rows } } async function getAddressById(ctx) { const id = ctx.params.id const rows = await query('SELECT * FROM addresses WHERE id = ?', [id]) if (rows.length > 0) { ctx.body = { code: 200, data: rows[0] } } else { ctx.body = { code: 404, message: '地址不存在' } } } async function createAddress(ctx) { const { user_id, name, phone, region, detail, is_default = 0 } = ctx.request.body if (!user_id || !name || !phone || !detail) { ctx.body = { code: 400, message: '缺少必填参数' } return } if (is_default) { await query('UPDATE addresses SET is_default = 0 WHERE user_id = ?', [user_id]) } const result = await query( 'INSERT INTO addresses (user_id, name, phone, region, detail, is_default) VALUES (?, ?, ?, ?, ?, ?)', [user_id, name, phone, region || '', detail, is_default ? 1 : 0] ) ctx.body = { code: 200, data: { id: result.insertId } } } async function updateAddress(ctx) { const id = ctx.params.id const updates = ctx.request.body const current = await query('SELECT * FROM addresses WHERE id = ?', [id]) if (!current.length) { ctx.body = { code: 404, message: '地址不存在' } return } if (updates.is_default) { await query('UPDATE addresses SET is_default = 0 WHERE user_id = ?', [current[0].user_id]) } const fields = [] const params = [] for (const key of ['name', 'phone', 'region', 'detail', 'is_default']) { if (updates[key] !== undefined) { fields.push(`${key} = ?`) params.push(key === 'is_default' ? (updates[key] ? 1 : 0) : updates[key]) } } if (fields.length > 0) { params.push(id) await query(`UPDATE addresses SET ${fields.join(', ')} WHERE id = ?`, params) } const updated = await query('SELECT * FROM addresses WHERE id = ?', [id]) ctx.body = { code: 200, data: updated[0] } } async function deleteAddress(ctx) { const id = ctx.params.id await query('DELETE FROM addresses WHERE id = ?', [id]) ctx.body = { code: 200, message: '删除成功' } } async function setDefault(ctx) { const id = ctx.params.id const rows = await query('SELECT * FROM addresses WHERE id = ?', [id]) if (!rows.length) { ctx.body = { code: 404, message: '地址不存在' } return } await query('UPDATE addresses SET is_default = 0 WHERE user_id = ?', [rows[0].user_id]) await query('UPDATE addresses SET is_default = 1 WHERE id = ?', [id]) ctx.body = { code: 200, message: '设置成功' } } module.exports = { getAddresses, getAddressById, createAddress, updateAddress, deleteAddress, setDefault }