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用户名
ipstringIP地址
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.