gongxiangp2/lib/material-validation.ts

70 lines
2.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 素材字段验证和处理的统一逻辑
*/
// 材质、音乐、种草视频、标准模型、品牌VI灵感不需要店铺和场景(自动填充为"通用")
export const AUTO_GENERAL_TYPES: string[] = ['材质', '音乐', '种草视频', '品牌VI灵感'];
/**
* 根据素材类型判断是否需要renderer字段
*/
export function requiresRenderer(materialType: string): boolean {
return materialType === '3D场景';
}
/**
* 根据素材类型判断是否需要categoryName和sceneName字段
*/
export function requiresCategoryAndScene(materialType: string): boolean {
return !AUTO_GENERAL_TYPES.includes(materialType) && materialType !== '标准模型';
}
/**
* 根据素材类型判断是否需要productCategoryName字段
*/
export function requiresProductCategoryName(materialType: string): boolean {
return materialType === '标准模型' || materialType === '品牌VI灵感';
}
/**
* 判断是否需要自动填充"通用"作为categoryName和sceneName
* 返回true表示应该自动填充为"通用"
*/
export function shouldAutoFillGeneral(materialType: string): boolean {
return AUTO_GENERAL_TYPES.includes(materialType) || materialType === '标准模型';
}
/**
* 根据素材类型获取renderer的默认值
*/
export function getDefaultRenderer(materialType: string): string {
return 'CR';
}
/**
* 根据素材类型判断renderer字段是否应该传递
* @returns { shouldPass: boolean, value: string | null } 是否应该传递renderer及其值
*/
export function shouldPassRenderer(materialType: string, renderer?: string | null): { shouldPass: boolean; value: string } {
if (requiresRenderer(materialType)) {
// 3D场景类型:必须传递,如果没有提供则使用默认值
return {
shouldPass: true,
value: renderer || getDefaultRenderer(materialType)
};
} else if (renderer) {
// 其他类型:如果有renderer值,则传递
return {
shouldPass: true,
value: renderer
};
} else {
// 其他类型:如果没有renderer值,则不传递
return {
shouldPass: false,
value: ''
};
}
}