97 lines
2.3 KiB
JavaScript
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
|
||
|
|
}
|