Update index.js

This commit is contained in:
huxuejian 2026-08-03 18:37:08 +08:00
parent 428b2cc050
commit 8a4eedeffd

View File

@ -716,7 +716,24 @@ async function acceptConsultOrder(item) {
return { success: false, message: "订单已失效,请刷新" }; return { success: false, message: "订单已失效,请刷新" };
} }
const { consultationDuration } = await getConfig(corpId); const { consultationDuration } = await getConfig(corpId);
if (
!Number.isFinite(consultationDuration) ||
!Number.isInteger(consultationDuration) ||
consultationDuration < 10 ||
consultationDuration > 60 * 8
) {
return {
success: false,
message: "问诊持续时长配置无效,请联系管理员检查配置",
};
}
const expireTime = dayjs().add(consultationDuration, "minute").valueOf(); const expireTime = dayjs().add(consultationDuration, "minute").valueOf();
if (!Number.isFinite(expireTime) || expireTime <= Date.now()) {
return {
success: false,
message: "问诊结束时间生成失败,请稍后重试",
};
}
const serverPrescriptionStartTime = Date.now(); const serverPrescriptionStartTime = Date.now();
const acceptResult = await db.collection("consult-order").updateOne( const acceptResult = await db.collection("consult-order").updateOne(
{ orderId, corpId, orderStatus: "pending" }, { orderId, corpId, orderStatus: "pending" },
@ -815,17 +832,69 @@ async function acceptConsultOrder(item) {
} }
// 结束问诊 // 结束问诊
async function finishConsultOrder(item) { async function finishConsultOrder(item) {
let countdownExpired = false;
if (item.triggerSource === "COUNTDOWN") {
const order = await db.collection("consult-order").findOne(
{ orderId: item.orderId },
{
projection: {
corpId: 1,
expireTime: 1,
prescriptionStartTime: 1,
},
}
);
if (!order) {
return { success: false, message: "订单不存在" };
}
let expireTime = Number(order.expireTime);
if (!Number.isFinite(expireTime) || expireTime <= 0) {
const { consultationDuration } = await getConfig(order.corpId);
const prescriptionStartTime = Number(order.prescriptionStartTime);
if (
!Number.isFinite(consultationDuration) ||
!Number.isInteger(consultationDuration) ||
consultationDuration < 10 ||
consultationDuration > 60 * 8 ||
!Number.isFinite(prescriptionStartTime) ||
prescriptionStartTime <= 0
) {
return {
success: false,
message: "问诊结束时间无效,请联系管理员检查配置",
};
}
expireTime = prescriptionStartTime + consultationDuration * 60 * 1000;
await db.collection("consult-order").updateOne(
{ _id: order._id },
{ $set: { expireTime, updateTime: Date.now() } }
);
}
if (expireTime > Date.now()) {
return {
success: false,
expired: false,
expireTime,
message: "问诊尚未到结束时间",
};
}
countdownExpired = true;
}
// 判断是否有正在审核的单子 // 判断是否有正在审核的单子
const count = await db.collection("diagnostic-record").countDocuments({ const count = await db.collection("diagnostic-record").countDocuments({
orderId: item.orderId, orderId: item.orderId,
status: "INIT", status: "INIT",
}); });
if (count > 0) { if (count > 0 && !countdownExpired) {
return { return {
success: false, success: false,
message: "存在正在审核的诊断单,不能结束咨询", message: "存在正在审核的诊断单,不能结束咨询",
}; };
} }
console.log('疑问点01: ')
return await serviceFinishConsultOrder(item); return await serviceFinishConsultOrder(item);
} }
async function serviceFinishConsultOrder(item) { async function serviceFinishConsultOrder(item) {
@ -847,6 +916,7 @@ async function serviceFinishConsultOrder(item) {
} }
} }
// 更新订单状态 // 更新订单状态
console.log('疑问点03: ')
await closeConsultOrder({ orderId, corpId, doctorCode }); await closeConsultOrder({ orderId, corpId, doctorCode });
await setDiagnosticExpired({ orderId }); await setDiagnosticExpired({ orderId });
return { return {
@ -1374,6 +1444,7 @@ async function refundFeeAndOrder(item) {
status: "PASS", status: "PASS",
}); });
if (count > 0) { if (count > 0) {
console.log('疑问点02: ')
return await serviceFinishConsultOrder({ orderId, doctorCode, corpId }); return await serviceFinishConsultOrder({ orderId, doctorCode, corpId });
} }
} }