Skip to content

Latest commit

 

History

History
717 lines (607 loc) · 16.9 KB

File metadata and controls

717 lines (607 loc) · 16.9 KB

系统设置API文档

概述

系统设置API模块负责处理系统配置参数、公告管理、系统信息等功能。

文件位置: src/api/setting.js

API接口

1. 获取系统配置 - getSystemConfig

功能: 获取系统配置参数

请求方式: GET

接口地址: /setting/config

参数:

{
  category: string,    // 配置分类(可选)
  key: string         // 配置键名(可选)
}

返回数据:

{
  status: boolean,
  msg: string,
  data: {
    basic: {                    // 基础配置
      siteName: string,         // 站点名称
      siteTitle: string,        // 站点标题
      siteLogo: string,         // 站点Logo
      siteDescription: string,  // 站点描述
      siteKeywords: string,     // 站点关键词
      copyright: string,        // 版权信息
      icp: string              // ICP备案号
    },
    system: {                   // 系统配置
      timezone: string,         // 时区
      dateFormat: string,       // 日期格式
      timeFormat: string,       // 时间格式
      language: string,         // 默认语言
      theme: string,           // 默认主题
      pageSize: number,        // 默认分页大小
      maxUploadSize: number,   // 最大上传文件大小(MB)
      allowedFileTypes: Array  // 允许上传的文件类型
    },
    security: {                 // 安全配置
      passwordMinLength: number,    // 密码最小长度
      passwordComplexity: boolean,  // 是否启用密码复杂度
      loginAttempts: number,        // 登录尝试次数限制
      lockoutDuration: number,      // 锁定时长(分钟)
      sessionTimeout: number,       // 会话超时时间(分钟)
      enableCaptcha: boolean,       // 是否启用验证码
      enableTwoFactor: boolean      // 是否启用双因子认证
    },
    email: {                    // 邮件配置
      smtpHost: string,         // SMTP服务器
      smtpPort: number,         // SMTP端口
      smtpUser: string,         // SMTP用户名
      smtpPassword: string,     // SMTP密码(加密)
      smtpEncryption: string,   // 加密方式
      fromEmail: string,        // 发件人邮箱
      fromName: string          // 发件人姓名
    },
    storage: {                  // 存储配置
      driver: string,           // 存储驱动 'local'|'oss'|'cos'
      localPath: string,        // 本地存储路径
      ossConfig: Object,        // OSS配置
      cosConfig: Object         // COS配置
    }
  }
}

使用示例:

import { getSystemConfig } from '@/api/setting'

const loadSystemConfig = async () => {
  try {
    const result = await getSystemConfig()
    if (result.status) {
      console.log('系统配置:', result.data)
      // 应用配置到系统
      applySystemConfig(result.data)
    }
  } catch (error) {
    console.error('获取系统配置失败:', error)
  }
}

2. 更新系统配置 - updateSystemConfig

功能: 更新系统配置参数

请求方式: PUT

接口地址: /setting/config

参数:

{
  category: string,    // 配置分类(必填)
  configs: {           // 配置项(必填)
    key1: value1,
    key2: value2,
    // ...
  }
}

返回数据:

{
  status: boolean,
  msg: string
}

3. 获取公告列表 - getNoticeList

功能: 获取系统公告列表

请求方式: GET

接口地址: /setting/notice/list

参数:

{
  page: number,        // 页码,默认1
  pageSize: number,    // 每页数量,默认20
  keyword: string,     // 搜索关键词(可选)
  status: number,      // 状态筛选(可选)1-发布 0-草稿
  type: string,        // 公告类型筛选(可选)
  startDate: string,   // 开始日期(可选)
  endDate: string      // 结束日期(可选)
}

返回数据:

{
  status: boolean,
  data: {
    list: [
      {
        id: number,           // 公告ID
        title: string,        // 公告标题
        content: string,      // 公告内容
        type: string,         // 公告类型 'system'-系统 'notice'-通知 'urgent'-紧急
        status: number,       // 状态 1-发布 0-草稿
        priority: number,     // 优先级 1-低 2-中 3-高
        isTop: number,        // 是否置顶 1-是 0-否
        isPopup: number,      // 是否弹窗 1-是 0-否
        startTime: string,    // 开始时间
        endTime: string,      // 结束时间
        readCount: number,    // 阅读次数
        author: string,       // 发布人
        createTime: string,   // 创建时间
        updateTime: string,   // 更新时间
        attachments: Array    // 附件列表
      }
    ],
    total: number
  }
}

4. 获取公告详情 - getNoticeDetail

功能: 获取公告详细信息

请求方式: GET

接口地址: /setting/notice/detail/{id}

参数:

{
  id: number  // 公告ID
}

返回数据:

{
  status: boolean,
  data: {
    // 公告详细信息,格式同列表接口
    // 额外包含:
    readUsers: Array,     // 已读用户列表
    unreadUsers: Array    // 未读用户列表
  }
}

5. 创建公告 - createNotice

功能: 创建新公告

请求方式: POST

接口地址: /setting/notice/create

参数:

{
  title: string,        // 公告标题(必填)
  content: string,      // 公告内容(必填)
  type: string,         // 公告类型(必填)
  status: number,       // 状态(可选,默认0)
  priority: number,     // 优先级(可选,默认1)
  isTop: number,        // 是否置顶(可选,默认0)
  isPopup: number,      // 是否弹窗(可选,默认0)
  startTime: string,    // 开始时间(可选)
  endTime: string,      // 结束时间(可选)
  attachments: Array    // 附件列表(可选)
}

返回数据:

{
  status: boolean,
  msg: string,
  data: {
    id: number  // 新创建的公告ID
  }
}

6. 更新公告 - updateNotice

功能: 更新公告信息

请求方式: PUT

接口地址: /setting/notice/update/{id}

参数:

{
  id: number,           // 公告ID(必填)
  title: string,        // 公告标题
  content: string,      // 公告内容
  type: string,         // 公告类型
  status: number,       // 状态
  priority: number,     // 优先级
  isTop: number,        // 是否置顶
  isPopup: number,      // 是否弹窗
  startTime: string,    // 开始时间
  endTime: string,      // 结束时间
  attachments: Array    // 附件列表
}

7. 删除公告 - deleteNotice

功能: 删除公告

请求方式: DELETE

接口地址: /setting/notice/delete/{id}

参数:

{
  id: number  // 公告ID
}

8. 发布公告 - publishNotice

功能: 发布公告(将草稿状态改为发布状态)

请求方式: PUT

接口地址: /setting/notice/publish/{id}

参数:

{
  id: number  // 公告ID
}

9. 标记公告已读 - markNoticeRead

功能: 标记用户已读公告

请求方式: POST

接口地址: /setting/notice/mark-read

参数:

{
  noticeId: number,    // 公告ID
  userId: number       // 用户ID(可选,默认当前用户)
}

10. 获取系统信息 - getSystemInfo

功能: 获取系统运行信息

请求方式: GET

接口地址: /setting/system-info

参数: 无

返回数据:

{
  status: boolean,
  data: {
    server: {                 // 服务器信息
      os: string,             // 操作系统
      arch: string,           // 系统架构
      nodeVersion: string,    // Node.js版本
      memory: {               // 内存信息
        total: number,        // 总内存(MB)
        used: number,         // 已用内存(MB)
        free: number          // 空闲内存(MB)
      },
      cpu: {                  // CPU信息
        model: string,        // CPU型号
        cores: number,        // 核心数
        usage: number         // 使用率(%)
      },
      disk: {                 // 磁盘信息
        total: number,        // 总空间(GB)
        used: number,         // 已用空间(GB)
        free: number          // 空闲空间(GB)
      }
    },
    database: {               // 数据库信息
      type: string,           // 数据库类型
      version: string,        // 数据库版本
      size: number,           // 数据库大小(MB)
      tables: number,         // 表数量
      connections: number     // 连接数
    },
    application: {            // 应用信息
      name: string,           // 应用名称
      version: string,        // 应用版本
      environment: string,    // 运行环境
      uptime: number,         // 运行时间(秒)
      startTime: string,      // 启动时间
      lastDeployTime: string  // 最后部署时间
    },
    statistics: {             // 统计信息
      totalUsers: number,     // 总用户数
      activeUsers: number,    // 活跃用户数
      todayLogins: number,    // 今日登录数
      totalRequests: number,  // 总请求数
      errorRate: number       // 错误率(%)
    }
  }
}

11. 清理系统缓存 - clearSystemCache

功能: 清理系统缓存

请求方式: POST

接口地址: /setting/clear-cache

参数:

{
  type: string  // 缓存类型 'all'-全部 'config'-配置 'user'-用户 'menu'-菜单
}

12. 备份系统数据 - backupSystem

功能: 备份系统数据

请求方式: POST

接口地址: /setting/backup

参数:

{
  type: string,        // 备份类型 'full'-完整 'data'-仅数据 'config'-仅配置
  description: string  // 备份描述
}

返回数据:

{
  status: boolean,
  msg: string,
  data: {
    backupId: string,    // 备份ID
    fileName: string,    // 备份文件名
    fileSize: number,    // 文件大小(MB)
    downloadUrl: string  // 下载链接
  }
}

数据结构

SystemConfig - 系统配置

{
  id: number,           // 配置ID
  category: string,     // 配置分类
  key: string,          // 配置键名
  value: string,        // 配置值
  type: string,         // 数据类型 'string'|'number'|'boolean'|'json'
  description: string,  // 配置描述
  isSystem: number,     // 是否系统配置 1-是 0-否
  sort: number,         // 排序
  createTime: string,   // 创建时间
  updateTime: string    // 更新时间
}

Notice - 公告信息

{
  id: number,           // 公告ID
  title: string,        // 公告标题
  content: string,      // 公告内容(HTML格式)
  type: string,         // 公告类型
  status: number,       // 状态 1-发布 0-草稿
  priority: number,     // 优先级 1-低 2-中 3-高
  isTop: number,        // 是否置顶 1-是 0-否
  isPopup: number,      // 是否弹窗 1-是 0-否
  startTime: string,    // 开始时间
  endTime: string,      // 结束时间
  readCount: number,    // 阅读次数
  author: string,       // 发布人
  authorId: number,     // 发布人ID
  createTime: string,   // 创建时间
  updateTime: string,   // 更新时间
  attachments: [        // 附件列表
    {
      id: number,
      name: string,
      url: string,
      size: number,
      type: string
    }
  ]
}

业务规则

配置管理

  • 系统配置分类管理
  • 配置项支持多种数据类型
  • 系统核心配置不可删除
  • 配置变更需要记录日志

公告管理

  • 公告支持富文本编辑
  • 支持定时发布和过期
  • 重要公告可设置弹窗提醒
  • 公告阅读状态跟踪

权限控制

  • 只有管理员可以修改系统配置
  • 公告发布需要相应权限
  • 系统信息查看需要权限验证

使用示例

更新系统配置

import { updateSystemConfig } from '@/api/setting'

const updateBasicConfig = async () => {
  const configData = {
    category: 'basic',
    configs: {
      siteName: '我的管理系统',
      siteTitle: '管理后台',
      siteDescription: '基于Vue3的管理系统',
      copyright: '© 2024 我的公司'
    }
  }
  
  try {
    const result = await updateSystemConfig(configData)
    if (result.status) {
      ElMessage.success('配置更新成功')
      // 重新加载配置
      loadSystemConfig()
    }
  } catch (error) {
    ElMessage.error('配置更新失败')
  }
}

发布公告

import { createNotice, publishNotice } from '@/api/setting'

const publishSystemNotice = async () => {
  // 1. 创建公告
  const noticeData = {
    title: '系统维护通知',
    content: '<p>系统将于今晚22:00-24:00进行维护升级...</p>',
    type: 'system',
    priority: 3,
    isTop: 1,
    isPopup: 1,
    startTime: '2024-01-15 00:00:00',
    endTime: '2024-01-20 23:59:59'
  }
  
  try {
    const createResult = await createNotice(noticeData)
    if (createResult.status) {
      const noticeId = createResult.data.id
      
      // 2. 发布公告
      const publishResult = await publishNotice(noticeId)
      if (publishResult.status) {
        ElMessage.success('公告发布成功')
      }
    }
  } catch (error) {
    ElMessage.error('公告发布失败')
  }
}

系统信息监控

import { getSystemInfo } from '@/api/setting'

const monitorSystem = {
  data: ref({}),
  timer: null,
  
  // 开始监控
  start() {
    this.loadSystemInfo()
    this.timer = setInterval(() => {
      this.loadSystemInfo()
    }, 30000) // 30秒刷新一次
  },
  
  // 停止监控
  stop() {
    if (this.timer) {
      clearInterval(this.timer)
      this.timer = null
    }
  },
  
  // 加载系统信息
  async loadSystemInfo() {
    try {
      const result = await getSystemInfo()
      if (result.status) {
        this.data.value = result.data
        
        // 检查系统状态
        this.checkSystemHealth(result.data)
      }
    } catch (error) {
      console.error('获取系统信息失败:', error)
    }
  },
  
  // 检查系统健康状态
  checkSystemHealth(data) {
    const { server, statistics } = data
    
    // 内存使用率检查
    const memoryUsage = (server.memory.used / server.memory.total) * 100
    if (memoryUsage > 80) {
      console.warn('内存使用率过高:', memoryUsage + '%')
    }
    
    // CPU使用率检查
    if (server.cpu.usage > 80) {
      console.warn('CPU使用率过高:', server.cpu.usage + '%')
    }
    
    // 错误率检查
    if (statistics.errorRate > 5) {
      console.warn('系统错误率过高:', statistics.errorRate + '%')
    }
  }
}

// 使用示例
onMounted(() => {
  monitorSystem.start()
})

onUnmounted(() => {
  monitorSystem.stop()
})

错误处理

常见错误码

  • 60001: 配置项不存在
  • 60002: 配置值格式错误
  • 60003: 系统配置不可修改
  • 60004: 公告不存在
  • 60005: 公告已发布,不可修改
  • 60006: 权限不足

错误处理示例

try {
  const result = await updateSystemConfig(configData)
  if (!result.status) {
    switch (result.code) {
      case 60001:
        ElMessage.error('配置项不存在')
        break
      case 60003:
        ElMessage.error('系统配置不可修改')
        break
      default:
        ElMessage.error(result.msg || '操作失败')
    }
    return
  }
  // 处理成功逻辑
} catch (error) {
  console.error('系统设置操作失败:', error)
  ElMessage.error('网络请求失败')
}

Mock数据

// src/mock/api.js
export const mockSystemConfig = {
  url: '/setting/config',
  method: 'get',
  response: {
    status: true,
    data: {
      basic: {
        siteName: 'Candy Sample',
        siteTitle: '管理系统',
        siteLogo: '/logo.png',
        siteDescription: '基于Vue3的管理系统',
        copyright: '© 2024 Candy Sample'
      },
      system: {
        timezone: 'Asia/Shanghai',
        dateFormat: 'YYYY-MM-DD',
        timeFormat: 'HH:mm:ss',
        language: 'zh-CN',
        theme: 'default',
        pageSize: 20
      }
    }
  }
}

export const mockNoticeList = {
  url: '/setting/notice/list',
  method: 'get',
  response: {
    status: true,
    data: {
      list: [
        {
          id: 1,
          title: '系统升级通知',
          content: '系统将进行升级维护...',
          type: 'system',
          status: 1,
          priority: 2,
          isTop: 1,
          readCount: 150,
          author: '管理员',
          createTime: '2024-01-15 10:00:00'
        }
      ],
      total: 1
    }
  }
}

注意事项

  1. 配置安全: 敏感配置信息需要加密存储
  2. 缓存管理: 配置变更后及时清理相关缓存
  3. 权限控制: 严格控制系统配置的修改权限
  4. 备份策略: 定期备份系统配置和数据
  5. 监控告警: 关键系统指标异常时及时告警

最后更新时间:2025-09-19