/**
 * 单条记录化函数
 */
export const formatItem = (data, formatFunc) => {
  let success = true
  let msg = ''
  let _data = {}
  try {
    _data = formatFunc(data)
  } catch (ex) {
    success = false
    msg = '，API数据结构错误！'
    console.log(data, '发生错误,', ex.message)
  }
  return { success, msg, data: _data }
}

export default (
  {
    success, msg, data, code, errorObj
  },
  itemFormat = () => ({}),
  resultFormat = () => ({})
) => {
  let items = data.data
  const { total } = data
  let _msg = ''
  if (items) {
    items = items.map((x) => {
      const { success, data, msg } = formatItem(x, itemFormat)
      if (success) {
        return data
      }
      _msg = msg
      return {}
    })
    data = {
      items,
      total,
      ...resultFormat(data)
    }
  }
  if (code === 401) {
    msg = ''
  }
  if (_msg) {
    msg = _msg
    success = false
  }
  return {
    success, msg, data, errorObj
  }
}
