This commit is contained in:
yml
2026-04-08 16:30:42 +08:00
commit 313c036845
131 changed files with 22393 additions and 0 deletions
@@ -0,0 +1,80 @@
import { getDb } from '../db/client.js'
export function listOrderItemsByOrderId(orderId) {
return getDb().prepare(`
SELECT *
FROM order_items
WHERE order_id = ?
ORDER BY id ASC
`).all(orderId)
}
export function replaceOrderItems(orderId, items) {
const db = getDb()
const existingItems = listOrderItemsByOrderId(orderId)
const updateStatement = db.prepare(`
UPDATE order_items
SET
sku_code = ?,
sku_name = ?,
quantity = ?,
spec_json = ?,
delivery_mode = ?,
updated_at = ?
WHERE id = ?
`)
const insertStatement = db.prepare(`
INSERT INTO order_items (
order_id,
sku_code,
sku_name,
quantity,
spec_json,
delivery_mode,
created_at,
updated_at
) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
`)
for (let index = 0; index < items.length; index += 1) {
const item = items[index]
const existingItem = existingItems[index] || null
if (existingItem) {
updateStatement.run(
item.skuCode,
item.skuName,
item.quantity,
item.specJson,
item.deliveryMode,
item.updatedAt,
existingItem.id,
)
continue
}
insertStatement.run(
orderId,
item.skuCode,
item.skuName,
item.quantity,
item.specJson,
item.deliveryMode,
item.createdAt,
item.updatedAt,
)
}
if (existingItems.length > items.length) {
const redundantIds = existingItems.slice(items.length).map((item) => item.id)
const placeholders = redundantIds.map(() => '?').join(', ')
db.prepare(`DELETE FROM order_items WHERE order_id = ? AND id IN (${placeholders})`).run(orderId, ...redundantIds)
}
return listOrderItemsByOrderId(orderId)
}
export function getOrderItemById(orderItemId) {
return getDb().prepare('SELECT * FROM order_items WHERE id = ? LIMIT 1').get(orderItemId) || null
}