管理系统-接口信息

1.用户查询接口

1.1 查询所有用户

请求路径:GET /users
接口描述:查询所有用户的基本信息及关联的角色、应用数据。
请求参数:无
响应数据:
{
  "code": 1,
  "msg": "success",
  "data": [
    {
      "userId": "u001",
      "account": "zhangwuji",
      "userName": "张无忌",
      "phone": "13812345678",
      "organization": "明教",
      "district": "光明顶",
      "roles": [
        {"roleId": "r001", "roleName": "管理员"}
      ],
      "applications": [
        {"appId": "a001", "appName": "无数据管理系统"}
      ],
      "createdAt": "2023-10-01T10:00:00",
      "updatedAt": "2023-10-01T10:00:00"
    }
  ]
}

1.2 分页查询用户

请求路径:GET /users
接口描述:支持按姓名、账号分页查询用户。
请求参数:

参数名类型是否必须示例备注
namestring用户姓名模糊查询
accountstringzhang账号模糊查询
pagenumber1页码,默认1
pageSizenumber10每页条数,默认10

响应数据:

{
  "code": 1,
  "msg": "success",
  "data": {
    "total": 100,
    "rows": [
      {
        "userId": "u001",
        "account": "zhangwuji",
        "userName": "张无忌",
        "phone": "13812345678",
        "createdAt": "2023-10-01T10:00:00"
      }
    ]
  }
}

1.3 根据ID查询用户详情

请求路径:GET /users/{userId}

接口描述:根据用户ID查询详细信息及关联的角色、应用。

请求参数:路径参数 userId

响应数据:

{
  "code": 1,
  "msg": "success",
  "data": {
    "userId": "u001",
    "account": "zhangwuji",
    "userName": "张无忌",
    "phone": "13812345678",
    "organization": "明教",
    "district": "光明顶",
    "roles": [
      {"roleId": "r001", "roleName": "管理员"}
    ],
    "applications": [
      {"appId": "a001", "appName": "无数据管理系统"}
    ],
    "createdAt": "2023-10-01T10:00:00",
    "updatedAt": "2023-10-01T10:00:00"
  }
}

2. 用户操作接口

2.1 新增用户

请求路径:POST /users

接口描述:新增用户并绑定角色和应用(需满足“绑定用户或角色必须且只能一个”的约束)。

请求参数(Body/JSON):

{
  "account": "zhouzhiruo",
  "password": "123456",
  "userName": "周芷若",
  "phone": "13987654321",
  "organization": "峨眉派",
  "district": "峨眉山",
  "roleIds": ["r002"],
  "appIds": []
}

字段名 类型 是否必须 备注
roleIds string[] 是 角色ID列表,与appIds二选一绑定
appIds string[] 是 应用ID列表,与roleIds二选一绑定
响应数据:

{
  "code": 1,
  "msg": "用户创建成功",
  "data": null
}

2.2 修改用户信息

请求路径:PUT /users/{userId}

接口描述:修改用户基本信息及重新绑定角色/应用。

请求参数(Body/JSON):

{
  "userName": "小昭",
  "phone": "13512345678",
  "organization": "波斯明教",
  "roleIds": ["r003"],
  "appIds": []
}

响应数据:

{
  "code": 1,
  "msg": "用户信息更新成功",
  "data": null
}

2.3 删除用户

请求路径:DELETE /users/{userId}

接口描述:根据用户ID删除用户及关联的角色、应用绑定关系。

请求参数:路径参数 userId

响应数据:

{
  "code": 1,
  "msg": "用户删除成功",
  "data": null
}

3. 角色查询接口

3.1 查询所有角色

请求路径:GET /roles

接口描述:查询所有角色及其关联的菜单权限信息。

请求参数:无

响应数据:

{
  "code": 1,
  "msg": "success",
  "data": [
    {
      "roleId": "r001",
      "roleName": "管理员",
      "dataScope": "all",
      "menus": [
        {"menuId": "m001", "menuName": "用户管理", "children": [
          {"menuId": "m00101", "menuName": "新增用户"},
          {"menuId": "m00102", "menuName": "删除用户"}
        ]}
      ],
      "remark": "系统最高权限角色",
      "createTime": "2023-10-01T10:00:00"
    }
  ]
}

3.2 分页查询角色

请求路径:GET /roles

接口描述:支持按角色名称分页查询角色列表。

请求参数:

参数名 类型 是否必须 示例 备注
roleName string 否 管理 角色名称模糊查询
page number 是 1 页码,默认1
pageSize number 是 10 每页条数,默认10
响应数据:

{
  "code": 1,
  "msg": "success",
  "data": {
    "total": 5,
    "rows": [
      {
        "roleId": "r001",
        "roleName": "管理员",
        "dataScope": "all",
        "createTime": "2023-10-01T10:00:00"
      }
    ]
  }
}

3.3 根据ID查询角色详情

请求路径:GET /roles/{roleId}

接口描述:根据角色ID查询角色详情及关联的菜单权限树。

请求参数:路径参数 roleId

响应数据:

{
  "code": 1,
  "msg": "success",
  "data": {
    "roleId": "r001",
    "roleName": "管理员",
    "dataScope": "all",
    "menus": [
      {"menuId": "m001", "menuName": "用户管理", "children": [
        {"menuId": "m00101", "menuName": "新增用户"},
        {"menuId": "m00102", "menuName": "删除用户"}
      ]}
    ],
    "remark": "系统最高权限角色",
    "createTime": "2023-10-01T10:00:00"
  }
}
  1. 角色操作接口
    4.1 新增角色
    请求路径:POST /roles

接口描述:新增角色并绑定菜单权限(需校验角色名称唯一性)。

请求参数(Body/JSON):

{
  "roleName": "数据管理员",
  "dataScope": "all",
  "remark": "负责数据治理",
  "menuIds": ["m001", "m00101", "m00102"]
}
字段名类型是否必须备注
menuIdsstring[]必须绑定的菜单ID列表(支持多级)

响应数据:

{
  "code": 1,
  "msg": "角色创建成功",
  "data": null
}

3.4 修改角色

请求路径:PUT /roles/{roleId}

接口描述:修改角色信息并重新绑定菜单权限。

请求参数(Body/JSON):

{
  "roleName": "数据管理员(更新)",
  "dataScope": "all",
  "remark": "更新后的角色描述",
  "menuIds": ["m001", "m00101", "m00103"]
}

响应数据:

{
  "code": 1,
  "msg": "角色信息更新成功",
  "data": null
}

3.5 删除角色

请求路径:DELETE /roles/{roleId}

接口描述:根据角色ID删除角色及关联的权限绑定。

请求参数:路径参数 roleId

响应数据:

{
  "code": 1,
  "msg": "角色删除成功",
  "data": null
}

接口设计说明
菜单权限绑定逻辑:

新增/修改角色时,通过 menuIds 传递完整的菜单ID列表(包括父菜单和子菜单),后端需覆盖原有权限。

菜单层级关系通过 sys_menu 表的 parent_id 字段维护,接口响应中自动构建树形结构。

数据权限扩展性:

dataScope 字段当前仅支持 all,未来可扩展为 partial 或其他类型,需同步更新枚举值。

参数校验规则:

角色名称 (roleName) 需全局唯一,提交时后端需校验。

菜单ID (menuIds) 必须存在于 sys_menu 表中,否则返回错误提示。

级联删除:

删除角色时,级联删除 sys_role_menu 表中的关联记录,确保数据一致性。

4. 应用查询接口

4.1 查询所有应用

请求路径:GET /applications

接口描述:查询所有应用的基本信息列表。

请求参数:无

响应数据:

{
  "code": 1,
  "msg": "success",
  "data": [
    {
      "appId": "a001",
      "appType": "平台应用",
      "appName": "无数据管理系统",
      "appIcon": "/icons/app001.png",
      "appVersion": "1.0.0",
      "appUrl": "https://app.example.com",
      "appDescription": "数据治理核心平台",
      "createdAt": "2023-10-01T10:00:00",
      "updatedAt": "2023-10-01T10:00:00",
      "appStatus": "01"
    }
  ]
}

4.2 分页查询应用

请求路径:GET /applications

接口描述:支持按应用名称分页查询应用列表。

请求参数:

参数名类型是否必须示例备注
appNamestring数据应用名称模糊查询
pagenumber1页码,默认1
pageSizenumber10每页条数,默认10

响应数据:

{
  "code": 1,
  "msg": "success",
  "data": {
    "total": 5,
    "rows": [
      {
        "appId": "a001",
        "appName": "无数据管理系统",
        "appType": "平台应用",
        "appVersion": "1.0.0",
        "createdAt": "2023-10-01T10:00:00",
        "appStatus": "01"
      }
    ]
  }
}

4.3 根据ID查询应用详情

请求路径:GET /applications/{appId}

接口描述:根据应用ID查询应用的详细信息。

请求参数:路径参数 appId

响应数据:

{
  "code": 1,
  "msg": "success",
  "data": {
    "appId": "a001",
    "appType": "平台应用",
    "appName": "无数据管理系统",
    "appIcon": "/icons/app001.png",
    "appVersion": "1.0.0",
    "appUrl": "https://app.example.com",
    "appDescription": "数据治理核心平台",
    "createdAt": "2023-10-01T10:00:00",
    "updatedAt": "2023-10-01T10:00:00",
    "appStatus": "01"
  }
}

4.4 新增应用

请求路径:POST /applications

接口描述:创建新应用,需校验应用名称唯一性。

请求参数(Body/JSON):

{
  "appType": "平台应用",
  "appName": "数据监控系统",
  "appIcon": "/icons/app002.png",
  "appVersion": "2.0.0",
  "appUrl": "https://monitor.example.com",
  "appDescription": "实时数据监控平台",
  "appStatus": "01"
}
字段名类型是否必须备注
appTypestring必须枚举值:平台应用/三方应用
appNamestring必须全局唯一
appIconstring图标路径或URL
appVersionstring必须版本号(如1.0.0)
appUrlstring必须应用访问地址
appDescriptionstring应用简介

响应数据:

{
  "code": 1,
  "msg": "应用创建成功",
  "data": null
}

4.5 修改应用信息

请求路径:PUT /applications/{appId}

接口描述:根据应用ID更新应用信息。

请求参数(Body/JSON):

{
  "appType": "三方应用",
  "appName": "数据监控系统(更新)",
  "appIcon": "/icons/app002_new.png",
  "appVersion": "2.1.0",
  "appUrl": "https://monitor-v2.example.com",
  "appDescription": "优化后的监控平台",
  "appStatus": "01"
}

响应数据:

{
  "code": 1,
  "msg": "应用信息更新成功",
  "data": null
}

4.6 删除应用

请求路径:DELETE /applications/{appId}

接口描述:根据应用ID删除应用。

请求参数:路径参数 appId

响应数据:

{
  "code": 1,
  "msg": "应用删除成功",
  "data": null
}

接口设计说明
唯一性校验:

appName 字段需全局唯一,新增和修改时后端需校验,若重复返回错误码 0 及提示信息。

枚举值约束:

appType 仅接受 平台应用 或 三方应用,其他值视为无效。

时间字段:

createdAt 和 updatedAt 由数据库自动生成,格式为 yyyy-MM-ddTHH:mm:ss。

扩展性:

若需支持更多应用类型,可扩展 appType 的枚举值,并同步更新接口文档。

安全性:

删除应用时需级联删除关联的 用户-应用绑定 记录(通过外键约束实现)。

5. 菜单查询接口

5.1 查询所有菜单(平铺结构)

请求路径:GET /menus

接口描述:获取所有菜单的平铺列表(非树形)。

请求参数:无

响应数据:

{
  "code": 1,
  "msg": "success",
  "data": [
    {
      "menuId": "m001",
      "menuName": "用户管理",
      "parentId": "0",
      "menuType": "1"
    },
    {
      "menuId": "m00101",
      "menuName": "新增用户",
      "parentId": "m001",
      "menuType": "2"
    }
  ]
}

5.2 分页查询菜单

请求路径:GET /menus

接口描述:支持按菜单名称分页查询。

请求参数:

参数名类型是否必须示例备注
menuNamestring用户菜单名称模糊查询
pagenumber1页码,默认1
pageSizenumber10每页条数,默认10

响应数据:

{
  "code": 1,
  "msg": "success",
  "data": {
    "total": 20,
    "rows": [
      {
        "menuId": "m001",
        "menuName": "用户管理",
        "parentId": "0",
        "menuType": "1"
      }
    ]
  }
}

5.3 根据ID查询菜单详情

请求路径:GET /menus/{menuId}

接口描述:根据菜单ID查询菜单详细信息。

请求参数:路径参数 menuId

响应数据:

{
  "code": 1,
  "msg": "success",
  "data": {
    "menuId": "m001",
    "menuName": "用户管理",
    "parentId": "0",
    "menuType": "1"
  }
}

5.4 查询菜单树形结构

请求路径:GET /menus/tree

接口描述:以树形层级结构返回所有菜单。

请求参数:无

响应数据:

{
  "code": 1,
  "msg": "success",
  "data": [
    {
      "menuId": "m001",
      "menuName": "用户管理",
      "menuType": "1",
      "children": [
        {
          "menuId": "m00101",
          "menuName": "新增用户",
          "menuType": "2"
        }
      ]
    }
  ]
}

5.5 新增菜单

请求路径:POST /menus

接口描述:创建新菜单,需校验菜单名称唯一性及父菜单合法性。

请求参数(Body/JSON):

{
  "menuName": "删除用户",
  "parentId": "m001",
  "menuType": "2"
}
字段名类型是否必须备注
parentIdstring父菜单ID(0表示根节点)
menuNamestring菜单名称(唯一)
menuTypestring类型:1(菜单)或 2(按钮)

响应数据:

{
  "code": 1,
  "msg": "菜单创建成功",
  "data": null
}

5.6 修改菜单信息

请求路径:PUT /menus/{menuId}

接口描述:根据菜单ID更新菜单信息。

请求参数(Body/JSON):

{
  "menuName": "删除用户(更新)",
  "parentId": "m001",
  "menuType": "2"
}

响应数据:

{
  "code": 1,
  "msg": "菜单信息更新成功",
  "data": null
}

5.7 删除菜单

请求路径:DELETE /menus/{menuId}

接口描述:根据菜单ID删除菜单(若存在子菜单则禁止删除)。

请求参数:路径参数 menuId

响应数据:

{
  "code": 1,
  "msg": "菜单删除成功",
  "data": null
}

接口设计说明
树形结构生成:

树形接口通过递归查询 parentId 构建层级结构,确保前端可直接渲染树形组件。

参数校验规则:

menuType 必须为 1 或 2,按钮类型(2)不允许有子菜单。

parentId 必须存在且类型为菜单(1),根节点 parentId 设为 0。

级联删除限制:

若菜单包含子菜单,删除时返回错误码 0 及提示信息:“存在子菜单,禁止删除”。

唯一性约束:

menuName 全局唯一,新增/修改时校验重复性。

扩展性:

支持通过 menuType 扩展更多类型(如“接口”类型)。

6. 用户登录

6.1 用户登录

请求路径:POST /auth/login

接口描述:用户通过账号和密码登录系统,返回用户基本信息和访问令牌(Token)。

请求参数(Body/JSON):

{
  "account": "zhangwuji",
  "password": "123456"
}
字段名类型是否必须备注
accountstring必须用户账号
passwordstring必须 密码(明文传输)

响应数据:

{
  "code": 1,
  "msg": "登录成功",
  "data": {
    "userId": "u001",
    "userName": "张无忌",
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.xxxxx"
  }
}
字段名类型备注
tokenstringJWT令牌,用于后续接口鉴权

7. 文件上传

7.1 上传文件

请求路径:POST /files/upload

接口描述:上传文件到服务器,返回文件访问路径(需携带Token鉴权)。

请求头:

字段名类型是否必须示例值
Authorizationstring必须Bearer eyJhbGciOiJIUzI1Ni…

请求参数(Body/form-data):

字段名 类型 是否必须 备注
file file 必须 上传的文件
响应数据:

{
  "code": 1,
  "msg": "文件上传成功",
  "data": {
    "fileUrl": "https://example.com/files/20231001/xxxxx.png"
  }
}

接口设计说明
登录接口
密码加密:

前端传输密码时需加密(如使用RSA公钥加密),后端解密后与数据库中的BCrypt哈希值匹配。

Token生成:

使用JWT生成令牌,包含用户ID和有效期(如24小时)。

密钥需存储在服务端安全配置中。

错误码示例:

code=0, msg=“账号或密码错误”

code=0, msg=“账号不存在”

文件上传接口
文件存储规则:

文件保存路径格式:/存储目录/日期/唯一文件名.扩展名(如/files/20231001/uuid_image.png)。

文件名使用UUID重命名,避免冲突。

安全校验:

限制文件类型(如仅允许图片、文档)。

限制文件大小(如最大10MB)。

访问路径:

返回完整URL,例如结合CDN或静态资源服务器地址。

注意事项
HTTPS:所有接口需通过HTTPS调用,确保传输安全。

Token有效期:建议前端在Token过期时自动跳转登录页。

文件清理:定期清理无效或过期文件,避免存储空间浪费。

错误处理:

文件上传失败时返回具体原因(如code=0, msg=“文件大小超过限制”)。

Token无效时返回 code=401, msg=“未授权”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值