请从入口、数据传递、副作用和不变量证据出发,审查这段生成式代码。
取消已认证租户的一笔已付款订单,且最多取消一次;按持久化的已付款金额退款,先保存取消状态再发布事件,并且只让该订单的缓存项失效。
JavaScript
export async function cancelOrder(request, dependencies) {
const order = await dependencies.orders.find(request.params.id);
if (!order) return { status: 404 };
const tenantId = request.headers["x-tenant"];
if (order.status === "cancelled") return { status: 200, body: order };
const refund = await dependencies.payments.refund(
order.chargeId,
Number(request.body.paidCents),
);
order.status = "cancelled";
order.refundId = refund.id;
await dependencies.events.publish({ type: "OrderCancelled", order });
await dependencies.orders.save(order);
const keys = await dependencies.cache.keys("*");
for (const key of keys) {
if (key.endsWith(order.id)) await dependencies.cache.delete(key);
}
return { status: 200, body: order, tenantId };
}
生成代码仅作示例,不代表任何特定模型