Skip to content

系统管理模块接口规范 ​

文档编号: SYS-INT-API-SYS-001
模块: 系统管理 (SYS)
基础路径: /api/v1/sys
版本: v1
日期: 2026-03-09
作者: 系统架构师
状态: ✅ 已评审


一、模块概述 ​

1.1 功能说明 ​

系统管理模块提供系统级功能,包括用户认证、字典管理、参数配置、文件管理、日志查询等基础服务。

1.2 接口列表 ​

序号接口名称方法路径权限要求
1用户登录POST/auth/login公开
2用户登出POST/auth/logout需要认证
3刷新TokenPOST/auth/refresh需要认证
4查询字典列表GET/dictsdict:read
5查询字典项GET/dicts/{code}/itemsdict:read
6文件上传POST/files/uploadfile:upload
7查询登录日志GET/logs/loginlog:read

二、接口详细定义 ​

1. 用户登录 ​

基本信息 ​

项目内容
接口名称用户登录
请求方法POST
接口路径/api/v1/sys/auth/login
权限要求公开(无需认证)

请求参数 ​

Body参数 (application/json):

参数名类型必填说明示例
usernamestring是用户名zhangsan
passwordstring是密码******
captchastring条件验证码(启用时必填)abc123
captchaKeystring条件验证码标识uuid-key

请求示例 ​

http
POST /api/v1/sys/auth/login
Content-Type: application/json

{
  "username": "zhangsan",
  "password": "123456",
  "captcha": "abc123",
  "captchaKey": "captcha-uuid-123"
}

响应数据 ​

成功响应:

json
{
  "code": 0,
  "data": {
    "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "expiresIn": 7200,
    "tokenType": "Bearer",
    "user": {
      "id": 1,
      "username": "zhangsan",
      "nickname": "张三",
      "avatar": "https://cdn.example.com/avatar/1.jpg",
      "roles": ["admin", "user"],
      "permissions": ["user:create", "user:update"]
    }
  },
  "error": null,
  "message": "ok"
}

字段说明:

字段类型说明
accessTokenstring访问令牌,有效期2小时
refreshTokenstring刷新令牌,有效期7天
expiresIninteger访问令牌有效期(秒)
tokenTypestring令牌类型,固定Bearer
userobject用户信息
user.rolesarray用户角色列表
user.permissionsarray用户权限列表

错误响应:

json
{
  "code": -1,
  "data": null,
  "error": "用户名或密码错误",
  "message": "用户名或密码错误"
}

2. 用户登出 ​

基本信息 ​

项目内容
接口名称用户登出
请求方法POST
接口路径/api/v1/sys/auth/logout
权限要求需要认证

请求头 ​

http
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...

响应数据 ​

json
{
  "code": 0,
  "data": null,
  "error": null,
  "message": "ok"
}

3. 刷新Token ​

基本信息 ​

项目内容
接口名称刷新Token
请求方法POST
接口路径/api/v1/sys/auth/refresh
权限要求需要认证

请求参数 ​

Body参数:

参数名类型必填说明示例
refreshTokenstring是刷新令牌eyJhbGciOiJIUzI1NiIs...

响应数据 ​

json
{
  "code": 0,
  "data": {
    "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "expiresIn": 7200
  },
  "error": null,
  "message": "ok"
}

4. 查询字典列表 ​

基本信息 ​

项目内容
接口名称查询字典列表
请求方法GET
接口路径/api/v1/sys/dicts
权限要求dict:read

请求参数 ​

Query参数:

参数名类型必填说明示例
pageinteger否当前页码,默认11
sizeinteger否每页大小,默认1010
keywordstring否搜索关键词user_status
statusinteger否状态:0-禁用,1-启用1

响应数据 ​

json
{
  "code": 0,
  "data": {
    "items": [
      {
        "id": 1,
        "code": "user_status",
        "name": "用户状态",
        "description": "用户账号状态字典",
        "status": 1,
        "statusName": "启用",
        "itemCount": 2,
        "createTime": "2024-01-01T10:00:00Z"
      }
    ],
    "total": 20
  },
  "error": null,
  "message": "ok"
}

5. 查询字典项 ​

基本信息 ​

项目内容
接口名称查询字典项
请求方法GET
接口路径/api/v1/sys/dicts/{code}/items
权限要求dict:read

请求参数 ​

Path参数:

参数名类型必填说明示例
codestring是字典编码user_status

响应数据 ​

json
{
  "code": 0,
  "data": [
    {
      "id": 1,
      "dictCode": "user_status",
      "itemCode": "0",
      "itemName": "禁用",
      "sort": 1,
      "status": 1,
      "remark": "账号已禁用"
    },
    {
      "id": 2,
      "dictCode": "user_status",
      "itemCode": "1",
      "itemName": "启用",
      "sort": 2,
      "status": 1,
      "remark": "账号正常使用"
    }
  ],
  "error": null,
  "message": "ok"
}

使用场景: 前端下拉框、状态显示等需要枚举值的地方。


6. 文件上传 ​

基本信息 ​

项目内容
接口名称文件上传
请求方法POST
接口路径/api/v1/sys/files/upload
权限要求file:upload

请求参数 ​

Body参数 (multipart/form-data):

参数名类型必填说明示例
fileFile是文件-
typestring否文件类型:image/doc/otherimage
modulestring否业务模块:user/avatar/attachmentavatar

请求示例 ​

http
POST /api/v1/sys/files/upload
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...

------WebKitFormBoundary
Content-Disposition: form-data; name="file"; filename="avatar.jpg"
Content-Type: image/jpeg

[文件内容]
------WebKitFormBoundary
Content-Disposition: form-data; name="type"

image
------WebKitFormBoundary
Content-Disposition: form-data; name="module"

avatar
------WebKitFormBoundary--

响应数据 ​

json
{
  "code": 0,
  "data": {
    "fileId": "f-123456789",
    "fileName": "avatar.jpg",
    "originalName": "my-avatar.jpg",
    "fileUrl": "https://cdn.example.com/files/2024/03/09/avatar-123456.jpg",
    "fileSize": 102400,
    "fileType": "image/jpeg",
    "uploadTime": "2024-03-09T10:00:00Z"
  },
  "error": null,
  "message": "ok"
}

字段说明:

字段类型说明
fileIdstring文件唯一标识
fileNamestring存储文件名
originalNamestring原始文件名
fileUrlstring文件访问URL
fileSizeinteger文件大小(字节)
fileTypestring文件MIME类型

7. 查询登录日志 ​

基本信息 ​

项目内容
接口名称查询登录日志
请求方法GET
接口路径/api/v1/sys/logs/login
权限要求log:read

请求参数 ​

Query参数:

参数名类型必填说明示例
pageinteger否当前页码,默认11
sizeinteger否每页大小,默认1010
usernamestring否用户名zhangsan
statusinteger否登录状态:0-失败,1-成功1
startTimestring否开始时间2024-03-01T00:00:00Z
endTimestring否结束时间2024-03-09T23:59:59Z

响应数据 ​

json
{
  "code": 0,
  "data": {
    "items": [
      {
        "id": 1,
        "username": "zhangsan",
        "ip": "192.168.1.100",
        "location": "北京市",
        "browser": "Chrome 120.0",
        "os": "Windows 10",
        "status": 1,
        "statusName": "成功",
        "message": "登录成功",
        "loginTime": "2024-03-09T10:00:00Z"
      },
      {
        "id": 2,
        "username": "zhangsan",
        "ip": "192.168.1.100",
        "location": "北京市",
        "browser": "Chrome 120.0",
        "os": "Windows 10",
        "status": 0,
        "statusName": "失败",
        "message": "密码错误",
        "loginTime": "2024-03-09T09:55:00Z"
      }
    ],
    "total": 100
  },
  "error": null,
  "message": "ok"
}

三、租户服务接口 ​

模块代码: TENANT
基础路径: /api/v1/tenant-service
服务归属: 租户服务(独立微服务)

说明: 租户服务为独立微服务,前端直接调用。登录页面和配置模块都通过调用租户服务接口实现租户信息管理。

8. 获取租户基础信息 ​

基本信息 ​

项目内容
接口名称获取租户基础信息
请求方法GET
接口路径/api/v1/tenant-service/base
权限要求tenant:read

响应数据 ​

json
{
  "code": 0,
  "data": {
    "id": 106,
    "tenantCode": "ZHBM-106",
    "name": "凌越科技",
    "tel": "400-888-8888",
    "phone": "13800138002",
    "fax": "400-888-8889",
    "address": "北京市海淀区中关村软件园",
    "enable": 0,
    "timeExpiration": "2029-12-31 23:59:59",
    "isDeleted": 0,
    "description": "专注于企业级软件开发与技术服务。",
    "createdBy": "admin",
    "createdTime": "2025-03-02T10:00:00Z",
    "updatedBy": "admin",
    "updatedTime": "2025-03-02T10:00:00Z"
  },
  "error": null,
  "message": "ok"
}

9. 更新租户基础信息 ​

基本信息 ​

项目内容
接口名称更新租户基础信息
请求方法PUT
接口路径/api/v1/tenant-service/base
权限要求tenant:update

请求参数 ​

Body参数:

参数名类型必填说明
namestring是租户名称
telstring否固定电话
phonestring否手机号码
faxstring否传真
addressstring否地址
descriptionstring否描述

请求示例 ​

http
PUT /api/v1/tenant-service/base
Content-Type: application/json

{
  "name": "凌越科技有限公司",
  "tel": "400-888-8888",
  "phone": "13800138002",
  "fax": "400-888-8889",
  "address": "北京市海淀区中关村软件园",
  "description": "专注于企业级软件开发与技术服务。"
}

响应数据 ​

json
{
  "code": 0,
  "data": null,
  "error": null,
  "message": "ok"
}

10. 获取Web扩展配置 ​

基本信息 ​

项目内容
接口名称获取Web扩展配置
请求方法GET
接口路径/api/v1/tenant-service/web-ext
权限要求tenant:read

响应数据 ​

json
{
  "code": 0,
  "data": {
    "id": 204,
    "title": "凌越科技",
    "slogan": "科技创新,引领未来",
    "logo": "http://ygde.oss-cn-zhangjiakou.aliyuncs.com/l/linsir.png",
    "inset": "",
    "loginBackground": "https://via.placeholder.com/1920x1080/722ed1/ffffff?text=登录背景",
    "domainName": "localhost",
    "enableGuidePage": 0,
    "guidePageBackground": "https://via.placeholder.com/1920x1080/722ed1/ffffff?text=引导页"
  },
  "error": null,
  "message": "ok"
}

11. 更新Web扩展配置 ​

基本信息 ​

项目内容
接口名称更新Web扩展配置
请求方法PUT
接口路径/api/v1/tenant-config/web-ext
权限要求tenant:update

请求参数 ​

Body参数:

参数名类型必填说明
titlestring否系统标题
sloganstring否系统标语
logostring否系统Logo URL
insetstring否插画 URL
loginBackgroundstring否登录背景 URL
domainNamestring否绑定域名
enableGuidePagenumber否启用引导页:0-否,1-是
guidePageBackgroundstring否引导页背景 URL

请求示例 ​

http
PUT /api/v1/tenant-service/web-ext
Content-Type: application/json

{
  "title": "凌越科技",
  "slogan": "科技创新,引领未来",
  "logo": "http://ygde.oss-cn-zhangjiakou.aliyuncs.com/l/linsir.png",
  "loginBackground": "https://via.placeholder.com/1920x1080/722ed1/ffffff?text=登录背景",
  "domainName": "localhost",
  "enableGuidePage": 0
}

响应数据 ​

json
{
  "code": 0,
  "data": null,
  "error": null,
  "message": "ok"
}

12. 获取商务扩展配置 ​

基本信息 ​

项目内容
接口名称获取商务扩展配置
请求方法GET
接口路径/api/v1/tenant-service/business-ext
权限要求tenant:read

响应数据 ​

json
{
  "code": 0,
  "data": {
    "id": 301,
    "firmName": "宜昌公交集团有限责任公司",
    "creditCode": "9142050017916088XJ",
    "legalPerson": "王杰",
    "administrativeDivision": "湖北省宜昌市",
    "businessArea": "公共交通服务",
    "businessHead": "张经理",
    "openBankAccount": "4220012345678901234",
    "bankAccountPerson": "宜昌公交集团有限责任公司",
    "openBank": "中国工商银行宜昌分行"
  },
  "error": null,
  "message": "ok"
}

13. 更新商务扩展配置 ​

基本信息 ​

项目内容
接口名称更新商务扩展配置
请求方法PUT
接口路径/api/v1/tenant-config/business-ext
权限要求tenant:update

请求参数 ​

Body参数:

参数名类型必填说明
firmNamestring否企业名称
creditCodestring否统一社会信用代码
legalPersonstring否法人代表
administrativeDivisionstring否行政区划
businessAreastring否经营范围
businessHeadstring否业务负责人
openBankAccountstring否开户银行账号
bankAccountPersonstring否账户持有人
openBankstring否开户银行

请求示例 ​

http
PUT /api/v1/tenant-service/business-ext
Content-Type: application/json

{
  "firmName": "宜昌公交集团有限责任公司",
  "creditCode": "9142050017916088XJ",
  "legalPerson": "王杰",
  "administrativeDivision": "湖北省宜昌市",
  "businessArea": "公共交通服务",
  "businessHead": "张经理",
  "openBankAccount": "4220012345678901234",
  "bankAccountPerson": "宜昌公交集团有限责任公司",
  "openBank": "中国工商银行宜昌分行"
}

响应数据 ​

json
{
  "code": 0,
  "data": null,
  "error": null,
  "message": "ok"
}

四、数据模型 ​

4.1 字典对象 (Dict) ​

字段类型必填说明
idinteger是字典ID
codestring是字典编码,唯一
namestring是字典名称
descriptionstring否字典描述
statusinteger是状态:0-禁用,1-启用
createTimedatetime是创建时间

4.2 字典项对象 (DictItem) ​

字段类型必填说明
idinteger是字典项ID
dictCodestring是所属字典编码
itemCodestring是字典项编码
itemNamestring是字典项名称
sortinteger否排序号
statusinteger是状态
remarkstring否备注

4.3 文件对象 (File) ​

字段类型必填说明
fileIdstring是文件唯一标识
fileNamestring是存储文件名
originalNamestring是原始文件名
fileUrlstring是文件访问URL
fileSizeinteger是文件大小
fileTypestring是文件类型
modulestring否业务模块
uploadTimedatetime是上传时间

4.4 登录日志对象 (LoginLog) ​

字段类型必填说明
idinteger是日志ID
usernamestring是用户名
ipstring是IP地址
locationstring否登录地点
browserstring否浏览器信息
osstring否操作系统
statusinteger是登录状态
messagestring否登录消息
loginTimedatetime是登录时间

五、错误码 ​

错误码错误信息说明
400请求参数错误参数校验失败
401未认证/认证失败Token无效、过期或用户名密码错误
403无权限用户无此操作权限
404字典/配置不存在指定的编码不存在
413文件过大上传文件超过大小限制
415不支持的文件类型文件类型不允许上传
500服务器内部错误系统异常

六、相关文档 ​


七、评审记录 ​

6.1 评审意见 ​

序号评审项评审结果评审意见
1接口完整性✓ 通过覆盖系统管理所有基础功能
2接口规范性✓ 通过符合RESTful API设计规范
3认证设计✓ 通过JWT认证设计合理,Token刷新机制完善
4字典设计✓ 通过字典管理设计灵活,便于扩展
5文件上传✓ 通过文件上传接口设计完整,限制规则明确

6.2 评审结论 ​

评审结论: 通过

评审意见: 系统管理模块接口规范完整,认证机制设计合理,基础功能覆盖全面,可作为开发依据。

6.3 签字确认 ​

角色姓名签字日期意见
技术总监张总_______________2026-03-09同意
系统架构师李工_______________2026-03-09同意
后端架构师王工_______________2026-03-09同意
前端负责人陈工_______________2026-03-09同意

八、修订记录 ​

版本日期作者变更内容
1.02026-03-09系统架构师初始版本,定义系统管理模块8个接口
1.12026-03-11系统架构师统一响应格式,与Mock服务保持一致
1.22026-03-11系统架构师新增租户配置模块,删除参数配置接口,调整配置结构为三部分
1.32026-03-11系统架构师租户配置接口归属租户服务,前端直接调用租户服务

Released under the MIT License.