appointment_system/docs/setup/CONFIG_MANAGEMENT.md
2025-12-19 00:37:31 +08:00

6.6 KiB

系统配置管理功能说明

功能概述

系统配置管理功能允许管理员通过管理后台动态配置系统参数,这些配置会实时生效并缓存以提高性能。

功能特性

1. 配置分类

系统配置按功能分为三大类:

  • 外观配置 (appearance): 应用Logo、关于我们图片等视觉元素
  • 基本信息 (general): 应用名称等基础信息
  • 联系方式 (contact): 联系电话、联系邮箱等客服信息

2. 配置类型

支持多种数据类型:

  • string: 字符串类型
  • number: 数字类型
  • boolean: 布尔类型
  • json: JSON对象类型
  • image: 图片URL类型

3. 缓存机制

  • 配置数据会自动缓存到Redis,有效期1小时
  • 更新配置时自动清除缓存
  • 首次访问从数据库读取,后续访问从缓存读取

API接口

公开接口 (供小程序使用)

获取公开配置

GET /api/v1/config

响应示例:

{
  "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 <token>

查询参数:

  • category (可选): 按分类筛选 (appearance/general/contact)

响应示例:

{
  "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 <token>

3. 更新配置

PUT /api/v1/admin/config/:key
Authorization: Bearer <token>
Content-Type: application/json

{
  "value": "new value",
  "type": "string",
  "category": "general",
  "description": "Configuration description"
}

4. 删除配置

DELETE /api/v1/admin/config/:key
Authorization: Bearer <token>

管理后台使用

访问路径

登录管理后台后,点击侧边栏的"系统配置"菜单进入配置管理页面。

外观配置

  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: 普通索引

默认配置

系统初始化时会自动创建以下默认配置:

{
  app_logo: '',
  about_us_image: '',
  app_name: 'Overseas Appointment System',
  contact_phone: '',
  contact_email: ''
}

小程序前端集成

获取配置

在小程序中使用Config模块获取配置:

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中搜索"Config"或"系统配置"查看相关接口文档。

故障排查

配置不生效

  1. 检查Redis是否正常运行
  2. 清除Redis缓存: redis-cli FLUSHDB
  3. 重启后端服务

图片上传失败

  1. 检查uploads目录权限
  2. 检查文件大小是否超过5MB
  3. 检查文件格式是否为PNG或JPG

配置丢失

  1. 检查数据库连接
  2. 查看config表数据
  3. 运行初始化脚本恢复默认配置

扩展配置

如需添加新的配置项:

  1. configService.jsinitializeDefaults方法中添加默认值
  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