233 lines
7.2 KiB
JavaScript
233 lines
7.2 KiB
JavaScript
/**
|
||
* 通用API接口模块
|
||
* 提供文件上传、系统配置、地区数据等通用功能的API接口
|
||
*/
|
||
|
||
import BaseRequest from '../utils/request-helper.js'
|
||
import { LOADING_TEXTS } from '../config/constants.js'
|
||
|
||
|
||
|
||
// ==================== API方法 ====================
|
||
|
||
// ==================== 文件上传相关API ====================
|
||
|
||
/**
|
||
* 上传单张图片
|
||
* @param {Object} imageData 图片上传数据对象
|
||
* @param {Object} config 自定义请求配置
|
||
* @returns {Promise} 返回上传结果
|
||
*/
|
||
export const uploadImage = (imageData, config = {}) => {
|
||
return BaseRequest.upload('/upload/image', imageData, LOADING_TEXTS.UPLOAD_IMAGE, config)
|
||
}
|
||
|
||
/**
|
||
* 批量上传多张图片
|
||
* @param {Array} imageList 图片列表数组
|
||
* @param {Object} config 自定义请求配置
|
||
* @returns {Promise} 返回所有图片的上传结果数组
|
||
*/
|
||
export const uploadImages = async (imageList, config = {}) => {
|
||
const { maxConcurrent = 3, showProgress = true } = config
|
||
|
||
// 显示整体进度loading
|
||
if (showProgress) {
|
||
uni.showLoading({
|
||
title: config.custom?.loadingText || COMMON_LOADING_TEXTS.UPLOAD_IMAGES
|
||
})
|
||
}
|
||
|
||
try {
|
||
// 分批并发上传
|
||
const results = []
|
||
for (let i = 0; i < imageList.length; i += maxConcurrent) {
|
||
const batch = imageList.slice(i, i + maxConcurrent)
|
||
const batchPromises = batch.map(imageData => {
|
||
return uploadImage(imageData, {
|
||
...config,
|
||
custom: {
|
||
loading: false, // 批量上传时不显示单个loading
|
||
...config.custom
|
||
}
|
||
})
|
||
})
|
||
|
||
const batchResults = await Promise.all(batchPromises)
|
||
results.push(...batchResults)
|
||
}
|
||
|
||
return results
|
||
} finally {
|
||
if (showProgress) {
|
||
uni.hideLoading()
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 上传通用文件
|
||
* @param {Object} fileData 文件上传数据对象
|
||
* @param {Object} config 自定义请求配置
|
||
* @returns {Promise} 返回上传结果
|
||
*/
|
||
export const uploadFile = (fileData, config = {}) => {
|
||
return BaseRequest.upload('/upload/file', fileData, LOADING_TEXTS.UPLOAD_FILE, config)
|
||
}
|
||
|
||
/**
|
||
* 下载文件到本地
|
||
* @param {string} url 文件下载URL
|
||
* @param {Object} config 自定义请求配置
|
||
* @returns {Promise} 返回下载结果
|
||
*/
|
||
export const downloadFile = (url, config = {}) => {
|
||
return BaseRequest.download(url, config.savePath, LOADING_TEXTS.DOWNLOAD_FILE, config)
|
||
}
|
||
|
||
// ==================== 云存储相关API ====================
|
||
|
||
/**
|
||
* 获取七牛云上传凭证
|
||
* @param {Object} params 请求参数
|
||
* @param {Object} config 自定义请求配置
|
||
* @returns {Promise} 返回七牛云上传配置信息
|
||
*/
|
||
export const getQiniuToken = (params = {}, config = {}) => {
|
||
return BaseRequest.get('/upload/qiniu-token', params, 'SILENT_REQUEST', config)
|
||
}
|
||
|
||
/**
|
||
* 获取阿里云OSS上传签名
|
||
* @param {Object} params 请求参数
|
||
* @param {Object} config 自定义请求配置
|
||
* @returns {Promise} 返回OSS上传配置信息
|
||
*/
|
||
export const getOSSSignature = (params = {}, config = {}) => {
|
||
return BaseRequest.get('/upload/oss-signature', params, 'SILENT_REQUEST', config)
|
||
}
|
||
|
||
// ==================== 系统信息相关API ====================
|
||
|
||
/**
|
||
* 获取系统配置信息
|
||
* @param {Object} params 查询参数
|
||
* @param {Object} config 自定义请求配置
|
||
* @returns {Promise} 返回系统配置对象
|
||
*/
|
||
export const getSystemConfig = (params = {}, config = {}) => {
|
||
return BaseRequest.get('/system/config', params, 'SILENT_REQUEST', config)
|
||
}
|
||
|
||
/**
|
||
* 获取应用版本信息
|
||
* @description 获取当前应用的版本信息和更新历史
|
||
* @param {Object} [config={}] 自定义请求配置
|
||
* @returns {Promise<Object>} 返回版本信息对象
|
||
* @example
|
||
* // 获取版本信息
|
||
* const versionInfo = await getVersionInfo()
|
||
* // 返回格式:
|
||
* // {
|
||
* // currentVersion: '1.0.0',
|
||
* // latestVersion: '1.1.0',
|
||
* // updateAvailable: true,
|
||
* // updateLog: ['修复bug', '新增功能']
|
||
* // }
|
||
*/
|
||
export const getVersionInfo = (config = {}) => {
|
||
return BaseRequest.get('/system/version', {}, 'SILENT_REQUEST', config)
|
||
}
|
||
|
||
/**
|
||
* 检查应用更新
|
||
* @description 检查是否有新版本可用,并获取更新信息
|
||
* @param {Object} versionData 当前版本数据
|
||
* @param {string} versionData.currentVersion 当前版本号
|
||
* @param {string} versionData.platform 平台:'android' | 'ios' | 'h5' | 'mp-weixin'
|
||
* @param {string} [versionData.channel] 更新渠道
|
||
* @param {Object} [config={}] 自定义请求配置
|
||
* @returns {Promise<Object>} 返回更新检查结果
|
||
* @example
|
||
* // 检查更新
|
||
* const updateInfo = await checkUpdate({
|
||
* currentVersion: '1.0.0',
|
||
* platform: 'android'
|
||
* })
|
||
*
|
||
* // 指定更新渠道
|
||
* const updateInfo = await checkUpdate({
|
||
* currentVersion: '1.0.0',
|
||
* platform: 'android',
|
||
* channel: 'beta'
|
||
* })
|
||
*/
|
||
export const checkUpdate = (versionData, config = {}) => {
|
||
return BaseRequest.post('/system/check-update', versionData, 'PUBLIC_REQUEST', LOADING_TEXTS.CHECK_UPDATE, config)
|
||
}
|
||
|
||
// 短信验证码相关API已移至 http/api/auth.js 文件中
|
||
|
||
// ==================== 基础数据相关API ====================
|
||
|
||
/**
|
||
* 获取地区数据
|
||
* @description 获取省市区三级联动的地区数据
|
||
* @param {Object} [params={}] 查询参数
|
||
* @param {string} [params.level] 数据层级:'province' | 'city' | 'district' | 'all'
|
||
* @param {string} [params.parentCode] 父级地区代码
|
||
* @param {boolean} [params.includeCoordinates] 是否包含经纬度信息
|
||
* @param {Object} [config={}] 自定义请求配置
|
||
* @returns {Promise<Object[]>} 返回地区数据数组
|
||
* @example
|
||
* // 获取所有省份
|
||
* const provinces = await getRegionData({ level: 'province' })
|
||
*
|
||
* // 获取指定省份下的城市
|
||
* const cities = await getRegionData({
|
||
* level: 'city',
|
||
* parentCode: '110000'
|
||
* })
|
||
*
|
||
* // 获取完整的三级数据
|
||
* const allRegions = await getRegionData({ level: 'all' })
|
||
*/
|
||
export const getRegionData = (params = {}, config = {}) => {
|
||
return BaseRequest.get('/common/regions', params, 'SILENT_REQUEST', config)
|
||
}
|
||
|
||
/**
|
||
* 提交用户反馈
|
||
* @description 提交用户的意见反馈或问题报告
|
||
* @param {Object} feedbackData 反馈数据对象
|
||
* @param {string} feedbackData.type 反馈类型:'bug' | 'suggestion' | 'complaint' | 'other'
|
||
* @param {string} feedbackData.title 反馈标题
|
||
* @param {string} feedbackData.content 反馈内容
|
||
* @param {string} [feedbackData.contact] 联系方式
|
||
* @param {string[]} [feedbackData.images] 相关图片URL数组
|
||
* @param {Object} [feedbackData.deviceInfo] 设备信息
|
||
* @param {Object} [config={}] 自定义请求配置
|
||
* @returns {Promise<Object>} 返回提交结果,包含反馈ID
|
||
* @example
|
||
* // 提交bug反馈
|
||
* const result = await submitFeedback({
|
||
* type: 'bug',
|
||
* title: '登录页面异常',
|
||
* content: '点击登录按钮后页面卡死',
|
||
* contact: 'user@example.com',
|
||
* images: ['https://example.com/screenshot.jpg']
|
||
* })
|
||
*
|
||
* // 提交功能建议
|
||
* const result = await submitFeedback({
|
||
* type: 'suggestion',
|
||
* title: '希望增加夜间模式',
|
||
* content: '建议应用支持夜间模式,保护用户视力'
|
||
* })
|
||
*/
|
||
export const submitFeedback = (feedbackData, config = {}) => {
|
||
return BaseRequest.post('/feedback', feedbackData, 'AUTHENTICATED_UPDATE', LOADING_TEXTS.SUBMIT_FEEDBACK, config)
|
||
}
|
||
|
||
|