# 系统配置管理功能说明 ## 功能概述 系统配置管理功能允许管理员通过管理后台动态配置系统参数,这些配置会实时生效并缓存以提高性能。 ## 功能特性 ### 1. 配置分类 系统配置按功能分为三大类: - **外观配置 (appearance)**: 应用Logo、关于我们图片等视觉元素 - **基本信息 (general)**: 应用名称等基础信息 - **联系方式 (contact)**: 联系电话、联系邮箱等客服信息 ### 2. 配置类型 支持多种数据类型: - `string`: 字符串类型 - `number`: 数字类型 - `boolean`: 布尔类型 - `json`: JSON对象类型 - `image`: 图片URL类型 ### 3. 缓存机制 - 配置数据会自动缓存到Redis,有效期1小时 - 更新配置时自动清除缓存 - 首次访问从数据库读取,后续访问从缓存读取 ## API接口 ### 公开接口 (供小程序使用) #### 获取公开配置 ``` GET /api/v1/config ``` **响应示例:** ```json { "code": 0, "message": "Configuration retrieved successfully", "data": { "app_logo": "https://example.com/logo.png", "about_us_image": "https://example.com/about.jpg", "app_name": "Overseas Appointment System", "contact_phone": "+1234567890", "contact_email": "contact@example.com" } } ``` ### 管理后台接口 #### 1. 获取所有配置 ``` GET /api/v1/admin/config Authorization: Bearer ``` **查询参数:** - `category` (可选): 按分类筛选 (appearance/general/contact) **响应示例:** ```json { "code": 0, "message": "Configurations retrieved successfully", "data": [ { "id": "uuid", "key": "app_logo", "value": "https://example.com/logo.png", "type": "image", "category": "appearance", "description": "Application logo image URL", "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" } ] } ``` #### 2. 获取单个配置 ``` GET /api/v1/admin/config/:key Authorization: Bearer ``` #### 3. 更新配置 ``` PUT /api/v1/admin/config/:key Authorization: Bearer Content-Type: application/json { "value": "new value", "type": "string", "category": "general", "description": "Configuration description" } ``` #### 4. 删除配置 ``` DELETE /api/v1/admin/config/:key Authorization: Bearer ``` ## 管理后台使用 ### 访问路径 登录管理后台后,点击侧边栏的"系统配置"菜单进入配置管理页面。 ### 外观配置 1. **应用Logo** - 点击上传区域选择图片 - 建议尺寸: 200x200px - 支持格式: PNG, JPG - 文件大小: 最大5MB - 可点击"清除Logo"按钮删除当前Logo 2. **关于我们图片** - 点击上传区域选择图片 - 建议尺寸: 750x400px - 支持格式: PNG, JPG - 文件大小: 最大5MB - 可点击"清除图片"按钮删除当前图片 3. 点击"保存外观配置"按钮保存更改 ### 基本信息 1. **应用名称** - 输入应用名称 (2-50个字符) - 此名称将显示在小程序标题栏和关于页面 2. 点击"保存基本信息"按钮保存更改 ### 联系方式 1. **联系电话** - 输入客服联系电话 - 格式示例: +86 13800138000 2. **联系邮箱** - 输入客服联系邮箱 - 必须是有效的邮箱格式 3. 点击"保存联系方式"按钮保存更改 ### 其他功能 - **刷新**: 点击右上角"刷新"按钮重新加载配置 - **重置**: 点击"重置"按钮恢复到上次保存的状态 - **表单验证**: 系统会自动验证输入格式,不符合要求会提示错误 ## 数据库结构 ### config表 | 字段 | 类型 | 说明 | |------|------|------| | id | UUID | 主键 | | key | VARCHAR(100) | 配置键名 (唯一) | | value | TEXT | 配置值 | | type | ENUM | 值类型 (string/number/boolean/json/image) | | category | VARCHAR(50) | 配置分类 | | description | VARCHAR(500) | 配置描述 | | created_at | TIMESTAMP | 创建时间 | | updated_at | TIMESTAMP | 更新时间 | ### 索引 - `key`: 唯一索引 - `category`: 普通索引 ## 默认配置 系统初始化时会自动创建以下默认配置: ```javascript { app_logo: '', about_us_image: '', app_name: 'Overseas Appointment System', contact_phone: '', contact_email: '' } ``` ## 小程序前端集成 ### 获取配置 在小程序中使用Config模块获取配置: ```javascript import Config from '@/modules/Config' // 获取所有公开配置 const configs = await Config.getPublicConfig() // 使用配置 console.log(configs.app_name) console.log(configs.app_logo) console.log(configs.contact_phone) ``` ### 配置缓存 Config模块会自动缓存配置到本地存储,减少网络请求: - 首次访问从服务器获取 - 后续访问从本地缓存读取 - 可手动刷新配置 ## 权限要求 - 查看配置: 需要管理员权限 (admin) - 修改配置: 需要管理员权限 (admin) - 删除配置: 需要管理员权限 (admin) - 公开配置: 无需认证 ## 注意事项 1. **图片上传**: 图片会上传到服务器的uploads目录,确保该目录有写入权限 2. **缓存更新**: 修改配置后,缓存会自动清除,小程序端需要重新获取 3. **配置验证**: 修改配置前会进行格式验证,确保数据有效性 4. **备份建议**: 重要配置修改前建议先备份当前值 5. **权限控制**: 只有管理员角色可以修改配置 ## API文档 完整的API文档可以通过以下方式访问: - Swagger UI: http://localhost:3000/api-docs - OpenAPI JSON: http://localhost:3000/api-docs.json - OpenAPI YAML: http://localhost:3000/api-docs.yaml 在Swagger UI中搜索"Config"或"系统配置"查看相关接口文档。 ## 故障排查 ### 配置不生效 1. 检查Redis是否正常运行 2. 清除Redis缓存: `redis-cli FLUSHDB` 3. 重启后端服务 ### 图片上传失败 1. 检查uploads目录权限 2. 检查文件大小是否超过5MB 3. 检查文件格式是否为PNG或JPG ### 配置丢失 1. 检查数据库连接 2. 查看config表数据 3. 运行初始化脚本恢复默认配置 ## 扩展配置 如需添加新的配置项: 1. 在`configService.js`的`initializeDefaults`方法中添加默认值 2. 在管理后台页面添加对应的表单字段 3. 更新API文档 4. 如需公开给小程序,在`getPublicConfigs`方法中添加配置键名 ## 相关文件 ### 后端 - 模型: `backend/src/models/Config.js` - 服务: `backend/src/services/configService.js` - 控制器: `backend/src/controllers/adminConfigController.js` - 路由: `backend/src/routes/adminConfigRoutes.js` - 文档: `backend/src/docs/admin-config.docs.js` ### 前端 - 页面: `admin/src/views/config/index.vue` - 路由: `admin/src/router/index.js` ### 小程序 - 模块: `modules/Config.js` - API: `modules/api/AppServer.js`