// utils/api.js - 全部动态调用现有保险端insurance_backend的API
import request from './request'

// 认证相关 API（扩展支持微信登录）
export const authAPI = {
  // 微信登录（新增）
  wxLogin: (data) => request({
    url: '/auth/wx-login',
    method: 'POST',
    data
  }),
  
  // 复用现有登录接口
  login: (data) => request({
    url: '/auth/login',
    method: 'POST',
    data
  }),
  
  // 获取用户信息（动态调用）
  getProfile: () => request({
    url: '/auth/profile'
  }),
  
  // 更新用户信息（动态调用）
  updateProfile: (data) => request({
    url: '/auth/profile',
    method: 'PUT',
    data
  }),
  
  // 退出登录
  logout: () => request({
    url: '/auth/logout',
    method: 'POST'
  })
}

// 保险产品相关 API（全部动态调用现有接口）
export const insuranceAPI = {
  // 获取保险产品列表（动态调用 /api/insurance-types）
  getTypes: (params) => request({
    url: '/insurance-types',
    data: params
  }),
  
  // 获取产品详情（动态调用）
  getTypeDetail: (id) => request({
    url: `/insurance-types/${id}`
  }),
  
  // 提交保险申请（动态调用 /api/insurance/applications）
  submitApplication: (data) => request({
    url: '/insurance/applications',
    method: 'POST',
    data
  }),
  
  // 获取我的申请列表（动态调用，需后端扩展）
  getMyApplications: (params) => request({
    url: '/miniprogram/my-applications',
    data: params
  }),
  
  // 获取申请详情（动态调用）
  getApplicationDetail: (id) => request({
    url: `/insurance/applications/${id}`
  }),
  
  // 获取申请统计（动态调用）
  getApplicationStats: () => request({
    url: '/insurance/applications/stats'
  })
}

// 保单相关 API（全部动态调用现有接口）
export const policyAPI = {
  // 获取我的保单列表（动态调用，需后端扩展）
  getMyPolicies: (params) => request({
    url: '/miniprogram/my-policies',
    data: params
  }),
  
  // 获取保单详情（动态调用 /api/policies/:id）
  getPolicyDetail: (id) => request({
    url: `/policies/${id}`
  }),
  
  // 获取保单列表（管理端接口）
  getList: (params) => request({
    url: '/policies',
    data: params
  })
}

// 理赔相关 API（全部动态调用现有接口）
export const claimAPI = {
  // 提交理赔申请（动态调用 /api/claims）
  submitClaim: (data) => request({
    url: '/claims',
    method: 'POST',
    data
  }),
  
  // 获取我的理赔列表（动态调用，需后端扩展）
  getMyClaims: (params) => request({
    url: '/miniprogram/my-claims',
    data: params
  }),
  
  // 获取理赔详情（动态调用 /api/claims/:id）
  getClaimDetail: (id) => request({
    url: `/claims/${id}`
  }),
  
  // 更新理赔状态（动态调用）
  updateClaimStatus: (id, data) => request({
    url: `/claims/${id}/status`,
    method: 'PUT',
    data
  }),
  
  // 上传理赔材料（动态调用）
  uploadClaimDocument: (filePath, claimId) => {
    return new Promise((resolve, reject) => {
      const token = uni.getStorageSync('token')
      
      uni.uploadFile({
        url: `${BASE_URL}/claims/upload-document`,
        filePath,
        name: 'file',
        formData: {
          claim_id: claimId
        },
        header: {
          'Authorization': token ? `Bearer ${token}` : ''
        },
        success: (res) => {
          try {
            const data = JSON.parse(res.data)
            if (data.status === 'success') {
              resolve(data)
            } else {
              reject(data)
            }
          } catch (error) {
            reject({ message: '响应解析失败' })
          }
        },
        fail: reject
      })
    })
  }
}

// 小程序专用API（动态调用后端扩展接口）
export const miniprogramAPI = {
  // 获取小程序首页数据
  getHomeData: () => request({
    url: '/miniprogram/home'
  }),
  
  // 获取产品列表（小程序版本）
  getProducts: (params) => request({
    url: '/miniprogram/products',
    data: params
  }),
  
  // 获取用户统计信息
  getUserStats: () => request({
    url: '/miniprogram/user-stats'
  })
}

// 统计数据 API（动态调用 /api/system）
export const dashboardAPI = {
  getStats: () => request({
    url: '/system/stats'
  }),
  getRecentActivities: () => request({
    url: '/system/logs',
    data: { limit: 10 }
  })
}

// 用户管理 API（动态调用现有接口）
export const userAPI = {
  getList: (params) => request({
    url: '/users',
    data: params
  }),
  create: (data) => request({
    url: '/users',
    method: 'POST',
    data
  }),
  update: (id, data) => request({
    url: `/users/${id}`,
    method: 'PUT',
    data
  }),
  delete: (id) => request({
    url: `/users/${id}`,
    method: 'DELETE'
  })
}

export default {
  authAPI,
  insuranceAPI,
  policyAPI,
  claimAPI,
  miniprogramAPI,
  dashboardAPI,
  userAPI
}