# 资源管理

> 模块标识：resource  |  接口数量：6

## 1. 查询所有有效资源
**方法**：	GET

**路径**：				/api/resources/active

**功能说明**：
查询所有有效的资源配置列表，用于其他业务通过选择列表选择目标资源。返回所有 status = 1 的资源，不需要分页。支持通过 systemId 查询指定系统的资源。支持通过 X-Site header 切换站点，切换后查询对应站点的数据库。

### 请求参数
```json
{
  "query": [
    {
      "name": "systemId",
      "type": "string",
      "required": false,
      "description": "所属系统ID，用于过滤资源所属系统。不传则返回所有系统的有效资源"
    },
    {
      "name": "moduleId",
      "type": "string",
      "required": false,
      "description": "关联模块ID（可选）。传入时需与 systemId 搭配，用于按模块过滤资源"
    }
  ]
}
```

### 响应示例
```json
{
  "success": {
    "code": "0000",
    "message": "获取成功",
    "data": [
      {
        "id": 1,
        "code": "RES0001",
        "name": "用户列表",
        "title": "用户列表",
        "systemId": "系统ID",
        "systemName": "权限管理系统",
        "type": "page",
        "url": "/users",
        "status": 1,
        "parentId": null,
        "moduleId": "AUTH_USER",
        "orderNum": 1,
        "createTime": "2025-01-01T10:00:00.000Z"
      },
      {
        "id": 2,
        "code": "RES0002",
        "name": "角色管理",
        "title": "角色管理",
        "systemId": "系统ID",
        "systemName": "权限管理系统",
        "type": "page",
        "url": "/roles",
        "status": 1,
        "parentId": null,
        "moduleId": "AUTH_ROLE",
        "orderNum": 2,
        "createTime": "2025-01-01T11:00:00.000Z"
      }
    ]
  }
}
```

### 注意事项
- 仅返回 status = 1 的有效资源
- 按 orderNum 和 createTime 排序
- 不需要分页，返回完整列表
- 支持通过 systemId 查询参数过滤指定系统的资源
- 支持通过 moduleId 查询参数过滤指定模块资源（需同时传 systemId）
- 也支持通过路径参数 systemId 查询（如 /api/security/systems/{systemId}/resources/active）


## 2. 获取资源列表
**方法**：	GET

**路径**：				/api/resources

**功能说明**：
分页获取资源列表，支持按名称、类型、系统筛选。支持通过 X-Site header 切换站点，切换后查询对应站点的数据库。

### 请求参数
```json
{
  "query": [
    {
      "name": "pageNum",
      "type": "number",
      "required": false,
      "description": "页码，默认1"
    },
    {
      "name": "pageSize",
      "type": "number",
      "required": false,
      "description": "每页数量，默认10"
    },
    {
      "name": "name",
      "type": "string",
      "required": false,
      "description": "资源名称关键词"
    },
    {
      "name": "code",
      "type": "string",
      "required": false,
      "description": "资源编码"
    },
    {
      "name": "type",
      "type": "string",
      "required": false,
      "description": "资源类型"
    },
    {
      "name": "systemId",
      "type": "string",
      "required": false,
      "description": "所属系统ID，用于过滤资源所属系统"
    },
    {
      "name": "moduleId",
      "type": "string",
      "required": false,
      "description": "关联模块ID（可选）。传入时需与 systemId 搭配，用于按模块过滤资源"
    }
  ]
}
```

### 响应示例
```json
{
  "success": {
    "code": "0000",
    "message": "获取成功",
    "data": {
      "list": [
        {
          "id": 1,
          "code": "RES0001",
          "name": "用户列表",
          "systemId": "AUTH",
          "systemName": "权限管理系统",
          "type": "page",
          "url": "/users",
          "status": 1,
          "parentId": null,
          "moduleId": "AUTH_USER",
          "orderNum": 10
        }
      ],
      "total": 100,
      "pageNum": 1,
      "pageSize": 10
    }
  }
}
```

### 注意事项
- 列表结果固定按 orderNum 升序，其次按 createTime 倒序
- orderNum 越小，菜单同级显示越靠前


## 3. 获取资源详情
**方法**：	GET

**路径**：				/api/resources/{id}

**功能说明**：
根据资源ID获取资源详细信息

### 请求参数
```json
{
  "path": [
    {
      "name": "id",
      "type": "string",
      "required": true,
      "description": "资源ID"
    }
  ]
}
```

### 响应示例
```json
{
  "success": {
    "code": "0000",
    "message": "获取成功",
    "data": {
      "id": 1,
      "code": "RES0001",
      "name": "用户列表",
      "systemId": "AUTH",
      "systemName": "权限管理系统",
      "type": "page",
      "url": "/users",
      "status": 1,
      "parentId": null,
      "moduleId": "AUTH_USER",
      "orderNum": 10
    }
  },
  "failure": {
    "code": "4040",
    "message": "资源不存在",
    "data": null
  }
}
```


## 4. 创建资源
**方法**：	POST

**路径**：				/api/resources

**功能说明**：
创建新的资源

### 请求参数
```json
{
  "body": {
    "name": "string｜必填，资源名称",
    "systemId": "string｜必填，所属系统ID，用于绑定资源所属系统",
    "type": "string｜必填，资源类型，例如page/api/button",
    "url": "string｜必填，资源URL，用于路由或接口地址",
    "status": "number｜可选，状态：1-启用，0-禁用",
    "parentId": "string｜可选，父级资源ID，用于构建资源树状结构，不传或传空则为根节点",
    "moduleId": "string｜可选，关联模块ID，可为空（推荐与systemId保持一致）",
    "orderNum": "number｜可选，排序序号（同级内升序），默认0"
  }
}
```

### 响应示例
```json
{
  "success": {
    "code": "0000",
    "message": "创建资源成功",
    "data": {
      "id": 1,
      "code": "RES0001",
      "name": "用户列表",
      "systemId": "AUTH",
      "systemName": "权限管理系统",
      "type": "page",
      "url": "/users",
      "status": 1,
      "parentId": null,
      "moduleId": "AUTH_USER",
      "orderNum": 10
    }
  },
  "failure": {
    "code": "4000",
    "message": "创建资源失败",
    "data": null
  }
}
```

### 注意事项
- code 由系统自动生成，无需传入
- moduleId 可为空；若传入，需为该 systemId 下有效模块
- orderNum 用于菜单树同级排序，值越小越靠前


## 5. 更新资源
**方法**：	PUT

**路径**：				/api/resources/{id}

**功能说明**：
更新指定资源的信息

### 请求参数
```json
{
  "body": {
    "name": "string｜必填，资源名称",
    "systemId": "string｜可选，所属系统ID，不传则保持原值",
    "type": "string｜必填，资源类型，例如page/api/button",
    "url": "string｜必填，资源URL，用于路由或接口地址",
    "status": "number｜可选，状态：1-启用，0-禁用",
    "parentId": "string｜可选，父级资源ID，用于构建资源树状结构，不传或传空则为根节点",
    "moduleId": "string｜可选，关联模块ID；传空字符串或null可清空关联",
    "orderNum": "number｜可选，排序序号（同级内升序），不传则保持原值"
  },
  "path": [
    {
      "name": "id",
      "type": "string",
      "required": true,
      "description": "资源ID"
    }
  ]
}
```

### 响应示例
```json
{
  "success": {
    "code": "0000",
    "message": "更新资源成功",
    "data": {
      "id": 1,
      "code": "RES0001",
      "name": "用户列表",
      "systemId": "AUTH",
      "systemName": "权限管理系统",
      "type": "page",
      "url": "/users",
      "status": 1,
      "parentId": null,
      "moduleId": "AUTH_USER",
      "orderNum": 20
    }
  },
  "failure": {
    "code": "4000",
    "message": "更新资源失败",
    "data": null
  }
}
```

### 注意事项
- moduleId 为可选字段，可配置/修改/清空模块关联
- 更新 orderNum 后，菜单树同级排序会按新序号生效


## 6. 删除资源
**方法**：	DELETE

**路径**：				/api/resources/{id}

**功能说明**：
删除指定的资源

### 请求参数
```json
{
  "path": [
    {
      "name": "id",
      "type": "string",
      "required": true,
      "description": "资源ID"
    }
  ]
}
```

### 响应示例
```json
{
  "success": {
    "code": "0000",
    "message": "删除资源成功",
    "data": {
      "result": true
    }
  },
  "failure": {
    "code": "4000",
    "message": "删除资源失败",
    "data": null
  }
}
```

