/**
 * 通用字段兼容工具函数：处理驼峰/下划线命名的字段取值
 * @param obj 目标对象（如商品信息 BaseCartItem）
 * @param camelCaseKey 驼峰命名字段（如 'isTemporary'）
 * @param snakeCaseKey 下划线命名字段（如 'is_temporary'）
 * @param defaultValue 默认值（默认 false，适配布尔类型字段）
 * @returns 字段值（优先取存在的字段，无则返回默认值）
 */
export function getCompatibleFieldValue(
  obj: Record<string, any>,
  camelCaseKey: string,
  snakeCaseKey: string,
  defaultValue: boolean = false
): boolean {
  // 优先判断驼峰字段（如果存在且不是 undefined/null）
  if (
    obj.hasOwnProperty(camelCaseKey) &&
    obj[camelCaseKey] !== undefined &&
    obj[camelCaseKey] !== null
  ) {
    return Boolean(obj[camelCaseKey]);
  }
  // 再判断下划线字段
  if (
    obj.hasOwnProperty(snakeCaseKey) &&
    obj[snakeCaseKey] !== undefined &&
    obj[snakeCaseKey] !== null
  ) {
    return Boolean(obj[snakeCaseKey]);
  }
  // 都不存在时返回默认值（布尔类型字段默认 false）
  return defaultValue;
}