1
This commit is contained in:
102
app/api/config.js
Normal file
102
app/api/config.js
Normal file
@@ -0,0 +1,102 @@
|
||||
/**
|
||||
* 系统配置 API 服务
|
||||
* 封装配置相关的API调用
|
||||
*/
|
||||
|
||||
import apiClient from '../utils/api.js';
|
||||
|
||||
// API 基础 URL(用于拼接图片路径,去掉 /api 后缀)
|
||||
const getBaseURL = () => {
|
||||
const apiUrl = 'http://localhost:9097/api';
|
||||
// 如果包含 /api,去掉它
|
||||
return apiUrl.replace(/\/api$/, '');
|
||||
};
|
||||
|
||||
class ConfigAPI {
|
||||
/**
|
||||
* 获取配置
|
||||
* @param {String|Array} configKeys - 配置键(单个字符串或数组)
|
||||
* @returns {Promise}
|
||||
*/
|
||||
async getConfig(configKeys) {
|
||||
try {
|
||||
let params = {};
|
||||
|
||||
// 支持单个字符串或数组
|
||||
if (Array.isArray(configKeys)) {
|
||||
params.configKeys = configKeys.join(',');
|
||||
} else if (typeof configKeys === 'string') {
|
||||
params.configKey = configKeys;
|
||||
} else {
|
||||
throw new Error('配置键格式错误');
|
||||
}
|
||||
|
||||
const result = await apiClient.get('/config/get', params);
|
||||
return result;
|
||||
} catch (error) {
|
||||
console.error('获取配置失败:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取微信相关配置
|
||||
* @returns {Promise<Object>} { wechatNumber, wechatQRCode }
|
||||
*/
|
||||
async getWechatConfig() {
|
||||
try {
|
||||
const result = await this.getConfig(['wx_num', 'wx_img']);
|
||||
|
||||
if (result && result.code === 0) {
|
||||
let qrcodeUrl = result.data.wx_img || '';
|
||||
|
||||
// 如果二维码是相对路径,转换为完整URL
|
||||
if (qrcodeUrl && !qrcodeUrl.startsWith('http://') && !qrcodeUrl.startsWith('https://') && !qrcodeUrl.startsWith('data:')) {
|
||||
const baseURL = getBaseURL();
|
||||
// 如果以 / 开头,拼接服务器基础URL
|
||||
if (qrcodeUrl.startsWith('/')) {
|
||||
qrcodeUrl = baseURL + qrcodeUrl;
|
||||
} else {
|
||||
// 如果不是以 / 开头,可能是文件路径,需要拼接
|
||||
qrcodeUrl = baseURL + '/' + qrcodeUrl;
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
wechatNumber: result.data.wx_num || '',
|
||||
wechatQRCode: qrcodeUrl
|
||||
};
|
||||
}
|
||||
return {
|
||||
wechatNumber: '',
|
||||
wechatQRCode: ''
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('获取微信配置失败:', error);
|
||||
return {
|
||||
wechatNumber: '',
|
||||
wechatQRCode: ''
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取价格套餐列表
|
||||
* @returns {Promise<Array>} 价格套餐列表
|
||||
*/
|
||||
async getPricingPlans() {
|
||||
try {
|
||||
const result = await apiClient.get('/config/pricing-plans');
|
||||
if (result && result.code === 0) {
|
||||
return result.data || [];
|
||||
}
|
||||
return [];
|
||||
} catch (error) {
|
||||
console.error('获取价格套餐失败:', error);
|
||||
return [];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default new ConfigAPI();
|
||||
|
||||
Reference in New Issue
Block a user