审查生成式取消处理器

来自 陌生代码阅读
Node 24 高级 12分钟 找出 4处问题

请从入口、数据传递、副作用和不变量证据出发,审查这段生成式代码。

取消已认证租户的一笔已付款订单,且最多取消一次;按持久化的已付款金额退款,先保存取消状态再发布事件,并且只让该订单的缓存项失效。

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 };
}

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误