ykt-wxapp/utils/subscribe-message-config.js

64 lines
1.7 KiB
JavaScript

const env = __VITE_ENV__;
export const SUBSCRIBE_MESSAGE_ROLE = {
PATIENT: "patient",
DOCTOR: "doctor",
};
export const SUBSCRIBE_MESSAGE_SCENE = {
DEFAULT: "default",
LIST: "list",
CHAT: "chat",
};
export const SUBSCRIBE_MESSAGE_EVENT = {
PATIENT_CONSULT_APPLY: "patient_consult_apply",
PATIENT_CHAT_MESSAGE: "patient_chat_message",
DOCTOR_ACCEPT: "doctor_accept",
DOCTOR_REJECT: "doctor_reject",
DOCTOR_CHAT_MESSAGE: "doctor_chat_message",
};
export const SUBSCRIBE_MESSAGE_TEMPLATES = {
consultationReply: {
code: "consultationReply",
role: SUBSCRIBE_MESSAGE_ROLE.DOCTOR,
id:
env.MP_SUBSCRIBE_TEMPLATE_CONSULT_REPLY ||
"1etY1Mdfz9c0xJlI8kx79do3DlZdcG9f4-3SujG-jHs",
name: "咨询回复通知",
events: [
SUBSCRIBE_MESSAGE_EVENT.PATIENT_CONSULT_APPLY,
SUBSCRIBE_MESSAGE_EVENT.PATIENT_CHAT_MESSAGE,
],
fields: ["咨询人", "患者姓名", "回复时间", "回复内容"],
},
};
export const SUBSCRIBE_MESSAGE_SCENE_TEMPLATE_MAP = {
[SUBSCRIBE_MESSAGE_ROLE.DOCTOR]: {
[SUBSCRIBE_MESSAGE_SCENE.DEFAULT]: ["consultationReply"],
[SUBSCRIBE_MESSAGE_SCENE.LIST]: ["consultationReply"],
[SUBSCRIBE_MESSAGE_SCENE.CHAT]: ["consultationReply"],
},
};
export function resolveSubscribeTemplates({
role,
scene = SUBSCRIBE_MESSAGE_SCENE.DEFAULT,
} = {}) {
const roleMap = SUBSCRIBE_MESSAGE_SCENE_TEMPLATE_MAP[role] || {};
const keys =
roleMap[scene] || roleMap[SUBSCRIBE_MESSAGE_SCENE.DEFAULT] || [];
const seen = new Set();
return keys
.map((key) => SUBSCRIBE_MESSAGE_TEMPLATES[key])
.filter((item) => item && item.id)
.filter((item) => {
if (seen.has(item.id)) return false;
seen.add(item.id);
return true;
});
}