彻底重构-1

This commit is contained in:
yml
2026-04-09 09:06:08 +08:00
parent b509394b09
commit df2eb34478
92 changed files with 2226 additions and 1261 deletions
@@ -1,80 +1,53 @@
import { getDb } from '../db/client.js'
import { query } 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 async function listOrderItemsByOrderId(orderId) {
const result = await query(
`
SELECT *
FROM order_items
WHERE order_id = $1
ORDER BY id ASC
`,
[Number(orderId)],
)
return result.rows
}
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 (?, ?, ?, ?, ?, ?, ?, ?)
`)
export async function replaceOrderItems(orderId, items) {
await query('DELETE FROM order_items WHERE order_id = $1', [Number(orderId)])
for (let index = 0; index < items.length; index += 1) {
const item = items[index]
const existingItem = existingItems[index] || null
if (existingItem) {
updateStatement.run(
for (const item of items) {
await query(
`
INSERT INTO order_items (
order_id,
sku_code,
sku_name,
quantity,
spec_json,
item_snapshot_json,
created_at,
updated_at
) VALUES ($1, $2, $3, $4, $5::jsonb, $6::jsonb, $7, $8)
`,
[
Number(orderId),
item.skuCode,
item.skuName,
item.quantity,
item.specJson,
item.deliveryMode,
item.specJson || '{}',
item.itemSnapshotJson || item.specJson || '{}',
item.createdAt,
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
export async function getOrderItemById(orderItemId) {
const result = await query('SELECT * FROM order_items WHERE id = $1 LIMIT 1', [Number(orderItemId)])
return result.rows[0] || null
}