// 获取walletPass可用最大金额
export var getAvailableMaxAmount = function getAvailableMaxAmount(data) {
  if (typeof data._available_max_amount === 'number') {
    return data._available_max_amount;
  }
  return data.tag !== 'point_card' ? data.available_max_amount : data === null || data === void 0 ? void 0 : data.recommended_usage_amount;
};

/**
 * 将walletPass列表数据转换为prepare_payments需要的数据格式
 * @param list
 */
export var formatWalletPassList2PreparePayments = function formatWalletPassList2PreparePayments(list) {
  var formatted = (list || []).map(function (item) {
    return {
      voucher_id: item.id || 0,
      amount: Number(item.edit_current_amount || getAvailableMaxAmount(item)) || 0,
      tag: item.tag || '',
      wallet_pass_usage_unit: item.wallet_pass_usage_unit || {},
      wallet_pass_use_value: item.wallet_pass_use_value || undefined
    };
  });
  return formatted;
};

/**
 * 对用户识别码列表进行排序
 * 排序规则：正常数据 -> unified_available_status===1 -> 500601/500602 -> unified_available_status===0
 * @param list 用户识别码列表
 * @returns 排序后的列表
 */
export var sortUserIdentificationCodeList = function sortUserIdentificationCodeList(list) {
  if (!Array.isArray(list) || list.length === 0) {
    return list;
  }

  // 定义中等优先级错误码
  var middlePriorityErrorCodes = ['500601', '500602'];
  return list.sort(function (a, b) {
    // 确定每个项目的优先级
    // 0: 正常数据（没有特定错误码且available_status不是1或0）
    // 1: unified_available_status === 1
    // 2: 中等优先级错误码（500601、500602） 此订单内不可用 订单没有剩余金额
    // 3: unified_available_status === 0（最后）
    var getPriority = function getPriority(item) {
      var _item$unified_error_c;
      var errorCode = (_item$unified_error_c = item.unified_error_code) === null || _item$unified_error_c === void 0 ? void 0 : _item$unified_error_c.toString();
      var availableStatus = item.unified_available_status;

      // 中等优先级错误码
      if (errorCode && middlePriorityErrorCodes.includes(errorCode)) return 2;

      // unified_available_status === 0 最后
      if (availableStatus === 0) return 3;

      // unified_available_status === 1
      if (availableStatus === 1) return 1;

      // 正常数据
      return 0;
    };
    var aPriority = getPriority(a);
    var bPriority = getPriority(b);

    // 按优先级排序，优先级相同则保持原有顺序
    return aPriority - bPriority;
  });
};