Files
services/controllers/addresses.js
T
董海洋 0c7ed3498d Ai config
2026-05-26 13:37:55 +08:00

110 lines
2.9 KiB
JavaScript

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
}