Files
services/controllers/orders.js
T
2026-05-23 14:15:45 +08:00

97 lines
2.3 KiB
JavaScript

const { query } = require('../config/database')
async function getOrders(ctx) {
const orders = await query('SELECT * FROM orders ORDER BY created_at DESC')
ctx.body = {
code: 200,
data: orders
}
}
async function getOrderById(ctx) {
const orderId = ctx.params.id
const orders = await query('SELECT * FROM orders WHERE id = ?', [orderId])
if (orders.length > 0) {
ctx.body = {
code: 200,
data: orders[0]
}
} else {
ctx.body = {
code: 404,
message: '订单不存在'
}
}
}
async function createOrder(ctx) {
const { totalPrice, cart, userInfo } = ctx.request.body
const newOrder = {
id: `order_${Date.now()}_${Math.floor(Math.random() * 1000)}`,
status: 'pending',
total_price: totalPrice,
cart: typeof cart === 'string' ? cart : JSON.stringify(cart),
user_info: typeof userInfo === 'string' ? userInfo : JSON.stringify(userInfo || {})
}
await query(
'INSERT INTO orders (id, status, total_price, cart, user_info) VALUES (?, ?, ?, ?, ?)',
[newOrder.id, newOrder.status, newOrder.total_price, newOrder.cart, newOrder.user_info]
)
ctx.body = {
code: 200,
data: newOrder
}
}
async function updateOrder(ctx) {
const orderId = ctx.params.id
const updates = ctx.request.body
const orders = await query('SELECT * FROM orders WHERE id = ?', [orderId])
if (orders.length > 0) {
const updateFields = []
const updateParams = []
if (updates.status !== undefined) {
updateFields.push('status = ?')
updateParams.push(updates.status)
}
if (updates.total_price !== undefined) {
updateFields.push('total_price = ?')
updateParams.push(updates.total_price)
}
if (updates.cart !== undefined) {
updateFields.push('cart = ?')
updateParams.push(typeof updates.cart === 'string' ? updates.cart : JSON.stringify(updates.cart))
}
updateParams.push(orderId)
await query(`UPDATE orders SET ${updateFields.join(', ')} WHERE id = ?`, updateParams)
const updatedOrders = await query('SELECT * FROM orders WHERE id = ?', [orderId])
ctx.body = {
code: 200,
data: updatedOrders[0]
}
} else {
ctx.body = {
code: 404,
message: '订单不存在'
}
}
}
module.exports = {
getOrders,
getOrderById,
createOrder,
updateOrder
}