feat: migrate app routes and business modules
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
// 当前两个产品选项同时决定 OpenAPI GenealogyCreate/UpdateBody 的
|
||||
// visibility 与 joinMode,因此它们是“访问预设”,不是单一可见范围。
|
||||
export const GENEALOGY_ACCESS_PRESET = Object.freeze({
|
||||
MEMBER_ONLY: "MEMBER_ONLY",
|
||||
PUBLIC_APPLY: "PUBLIC_APPLY",
|
||||
});
|
||||
|
||||
export const GENEALOGY_VISIBILITY = Object.freeze({
|
||||
PRIVATE: "0",
|
||||
PUBLIC: "1",
|
||||
MEMBER_ONLY: "2",
|
||||
});
|
||||
|
||||
export const GENEALOGY_JOIN_MODE = Object.freeze({
|
||||
CLOSED: "0",
|
||||
REVIEW: "1",
|
||||
INVITATION: "2",
|
||||
});
|
||||
|
||||
export const GENEALOGY_ACCESS_PRESET_OPTIONS = Object.freeze([
|
||||
Object.freeze({
|
||||
value: GENEALOGY_ACCESS_PRESET.MEMBER_ONLY,
|
||||
label: "仅成员可见",
|
||||
}),
|
||||
Object.freeze({
|
||||
value: GENEALOGY_ACCESS_PRESET.PUBLIC_APPLY,
|
||||
label: "公开可申请",
|
||||
}),
|
||||
]);
|
||||
|
||||
export const isGenealogyAccessPreset = (preset) =>
|
||||
Object.values(GENEALOGY_ACCESS_PRESET).includes(preset);
|
||||
|
||||
export const isGenealogyVisibility = (value) =>
|
||||
Object.values(GENEALOGY_VISIBILITY).includes(value);
|
||||
|
||||
export const isGenealogyJoinMode = (value) =>
|
||||
Object.values(GENEALOGY_JOIN_MODE).includes(value);
|
||||
|
||||
// OpenAPI 为两个字段分别声明了 0/1/2,但当前产品只提供以下两个完整预设。
|
||||
// 其他合法组合不能被悄悄改写成相近选项,页面应明确显示“访问规则待确认”。
|
||||
const apiAccessByPreset = Object.freeze({
|
||||
[GENEALOGY_ACCESS_PRESET.MEMBER_ONLY]: Object.freeze({
|
||||
visibility: GENEALOGY_VISIBILITY.MEMBER_ONLY,
|
||||
joinMode: GENEALOGY_JOIN_MODE.CLOSED,
|
||||
}),
|
||||
[GENEALOGY_ACCESS_PRESET.PUBLIC_APPLY]: Object.freeze({
|
||||
visibility: GENEALOGY_VISIBILITY.PUBLIC,
|
||||
joinMode: GENEALOGY_JOIN_MODE.REVIEW,
|
||||
}),
|
||||
});
|
||||
|
||||
export const getGenealogyAccessPresetLabel = (preset) =>
|
||||
GENEALOGY_ACCESS_PRESET_OPTIONS.find((item) => item.value === preset)
|
||||
?.label || "访问规则待确认";
|
||||
|
||||
export const toApiGenealogyAccess = (preset) => {
|
||||
const access = apiAccessByPreset[preset];
|
||||
return access ? { ...access } : null;
|
||||
};
|
||||
|
||||
export const fromApiGenealogyAccess = ({ visibility, joinMode } = {}) => {
|
||||
const match = Object.entries(apiAccessByPreset).find(
|
||||
([, access]) =>
|
||||
access.visibility === visibility && access.joinMode === joinMode,
|
||||
);
|
||||
return match?.[0] || null;
|
||||
};
|
||||
Reference in New Issue
Block a user