Move item to another order
This commit is contained in:
@@ -594,7 +594,7 @@ export default class DBAdapter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const item = await connection.query(
|
const item = await connection.query(
|
||||||
'SELECT id, order_id FROM order_items WHERE id = ? FOR UPDATE',
|
'SELECT id, order_id, product_id, quantity FROM order_items WHERE id = ? FOR UPDATE',
|
||||||
[itemId]
|
[itemId]
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -608,11 +608,35 @@ export default class DBAdapter {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
await connection.query(
|
if (itemRow.order_id === targetOrderId) {
|
||||||
'UPDATE order_items SET order_id = ? WHERE id = ?',
|
await connection.rollback();
|
||||||
[targetOrderId, itemId]
|
connection.release();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const targetItem = await connection.query(
|
||||||
|
'SELECT id, quantity FROM order_items WHERE order_id = ? AND product_id = ? FOR UPDATE',
|
||||||
|
[targetOrderId, itemRow.product_id]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const targetItemRow = targetItem?.[0];
|
||||||
|
|
||||||
|
if (targetItemRow) {
|
||||||
|
await connection.query(
|
||||||
|
'UPDATE order_items SET quantity = ? WHERE id = ?',
|
||||||
|
[targetItemRow.quantity + itemRow.quantity, targetItemRow.id]
|
||||||
|
);
|
||||||
|
await connection.query(
|
||||||
|
'DELETE FROM order_items WHERE id = ?',
|
||||||
|
[itemId]
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
await connection.query(
|
||||||
|
'UPDATE order_items SET order_id = ? WHERE id = ?',
|
||||||
|
[targetOrderId, itemId]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
await connection.commit();
|
await connection.commit();
|
||||||
connection.release();
|
connection.release();
|
||||||
|
|
||||||
@@ -633,4 +657,4 @@ export default class DBAdapter {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user