根据给定的改动契约审查这段生成实现。
并发调用时,每个租户与订单最多发送一份收据;接受总额为零的订单;返回带标签的成功或失败结果;不暴露客户数据;不使用无限增长的进程缓存。
JavaScript
const sentOrderIds = new Set();
async function sendReceipt(order, mailer) {
if (!order.email || !order.total) {
return false;
}
if (sentOrderIds.has(order.id)) {
return true;
}
try {
const message = `Receipt ${order.id}: ${order.total}`;
await mailer.send(order.email, message);
sentOrderIds.add(order.id);
return true;
} catch (error) {
console.log("receipt failed", error, order);
return false;
}
}
生成代码仅作示例,不代表任何特定模型