# 权限模块接口文档

基础路径：`POST /mgt/pmn/*`，需 JWT 认证。

---

## 1. 新增权限

**路径**：`POST /mgt/pmn/create`

**请求体**（PermissionRequest）：

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| workspace | string | 是 | 应用编码，权限归属应用 |
| title | string | 否 | 权限名称，1-100 位 |
| title_en | string | 否 | 权限名称英文，最长 100 |
| code | string | 是 | 权限标识，1-100 位，同应用下唯一 |
| description | string | 否 | 权限描述，最长 1000 |
| parent_id | number | 否 | 父级权限 ID，0 表示顶级 |
| menu_path | string | 否 | 菜单路径，最长 500 |
| menu_icon | string | 否 | 菜单图标，最长 100 |
| type | number | 否 | 1=菜单 2=按钮 |
| component | string | 否 | 组件路径，最长 255 |
| sort_key | number | 否 | 排序键，≥0 |
| is_web_page | bool | 否 | 是否网页 |
| is_new_tab | bool | 否 | 是否新标签页打开 |
| is_full | bool | 否 | 是否单独页面不包含菜单 |
| hide_menu | bool | 否 | 是否隐藏菜单栏 |
| web_url | string | 否 | 网页地址，最长 500 |

**请求示例**：

```json
{
  "workspace": "my_app",
  "title": "用户管理",
  "code": "user:manage",
  "description": "用户列表与编辑",
  "parent_id": 0,
  "menu_path": "/system/user",
  "type": 1,
  "sort_key": 10
}
```

**返回**（IdResp）：

```json
{
  "code": 0,
  "data": {
    "id": 1,
    "identity": "01ARZ3NDEKTSV4RRFFQ69G5FAV"
  }
}
```

---

## 2. 删除权限

**路径**：`POST /mgt/pmn/del`

**请求体**：

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| id | number | 是 | 权限 ID |

**请求示例**：

```json
{
  "id": 1
}
```

**返回示例**：

```json
{
  "code": 0,
  "data": {
    "id": 1,
    "identity": "01ARZ3NDEKTSV4RRFFQ69G5FAV"
  }
}
```

---

## 3. 权限详情

**路径**：`POST /mgt/pmn/detail`

**请求体**：

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| id | number | 是 | 权限 ID |

**请求示例**：

```json
{
  "id": 1
}
```

**返回**（PermissionRsp）：

| 参数 | 类型 | 说明 |
|------|------|------|
| id | number | 权限 ID |
| identity | string | 唯一标识 |
| title | string | 权限名称 |
| title_en | string | 英文名称 |
| code | string | 权限标识 |
| description | string | 描述 |
| app_id | number | 应用 ID |
| parent_id | number | 父级 ID |
| menu_path | string | 菜单路径 |
| menu_icon | string | 菜单图标 |
| type | number | 1=菜单 2=按钮 |
| component | string | 组件路径 |
| sort_key | number | 排序 |
| is_web_page | bool | 是否网页 |
| is_new_tab | bool | 是否新标签打开 |
| is_full | bool | 是否单独页 |
| hide_menu | bool | 是否隐藏菜单 |
| web_url | string | 网页地址 |
| created_at | string | 创建时间 |

**返回示例**：

```json
{
  "code": 0,
  "data": {
    "id": 1,
    "identity": "01ARZ3NDEKTSV4RRFFQ69G5FAV",
    "title": "用户管理",
    "title_en": "User Manage",
    "code": "user:manage",
    "description": "用户列表与编辑",
    "app_id": 1,
    "parent_id": 0,
    "menu_path": "/system/user",
    "menu_icon": "user",
    "type": 1,
    "component": "/system/user/index",
    "sort_key": 10,
    "is_web_page": false,
    "is_new_tab": false,
    "is_full": false,
    "hide_menu": false,
    "web_url": "",
    "created_at": "2025-03-16 10:00:00"
  }
}
```

---

## 4. 修改权限

**路径**：`POST /mgt/pmn/modify`

**请求体**：与创建字段一致，id 必填，其余为要更新的字段。

**请求示例**：

```json
{
  "id": 1,
  "title": "用户与角色管理",
  "sort_key": 5
}
```

**返回示例**：

```json
{
  "code": 0,
  "data": {
    "id": 1,
    "identity": "01ARZ3NDEKTSV4RRFFQ69G5FAV"
  }
}
```

---

## 5. 获取权限列表（分页）

**路径**：`POST /mgt/pmn/fetch`

**请求体**：

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| page | number | 否 | 页码 |
| size | number | 否 | 每页条数 |
| keyword | string | 否 | 关键字，模糊匹配 title/code |
| workspace | string | 否 | 应用编码，只查该应用下权限 |
| status | number | 否 | 状态 |
| id | number | 否 | 指定权限 ID |
| sort_key | number | 否 | 非 0 时按 sort_key 降序 |

**请求示例**：

```json
{
  "page": 1,
  "size": 20,
  "workspace": "my_app",
  "keyword": "用户",
  "status": 1
}
```

**返回**（FetchResp，data 为 PermissionRsp 数组）：

```json
{
  "code": 0,
  "data": {
    "total": 1,
    "page": 1,
    "size": 20,
    "data": [
      {
        "id": 1,
        "identity": "01ARZ3NDEKTSV4RRFFQ69G5FAV",
        "title": "用户管理",
        "code": "user:manage",
        "app_id": 1,
        "parent_id": 0,
        "sort_key": 10,
        "type": 1,
        "created_at": "2025-03-16 10:00:00"
      }
    ]
  }
}
```

---

## 6. 权限排序

**路径**：`POST /mgt/pmn/sort`

**请求体**：数组，每项为 SortPmnRequest。

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| pmn_id | number | 是 | 权限 ID，大于 0 |
| sort_key | number | 否 | 新排序序号，≥0 |

**请求示例**：

```json
[
  { "pmn_id": 1, "sort_key": 0 },
  { "pmn_id": 2, "sort_key": 1 },
  { "pmn_id": 3, "sort_key": 2 }
]
```

**返回示例**：

```json
{
  "code": 0,
  "data": ""
}
```

---

## 7. 获取权限关联用户列表

**路径**：`POST /mgt/pmn/user`

**请求体**：FetchBase，id 为权限 ID。

**请求示例**：

```json
{
  "id": 1
}
```

**返回**：data 为拥有该权限的用户列表。

---

## 8. 获取权限关联角色列表

**路径**：`POST /mgt/pmn/role`

**请求体**：同上，id 为权限 ID。

**返回**：data 为拥有该权限的角色列表。
