# 会员功能模块关联

> 模块标识：memberFunctionModule  |  接口数量：5

## 1. 获取会员功能模块关联列表
**方法**：	GET

**路径**：				/api/members/functions/{id}/modules

**功能说明**：
分页获取指定会员功能下已关联的功能模块列表（memberFunctionModules）。用于配置某会员类型在某系统下可使用的模块，供 OpenAPI 有状态/无状态会员功能校验使用。

### 请求参数
```json
{
  "path": [
    {
      "name": "id",
      "type": "string",
      "required": true,
      "description": "会员功能ID（memberFunctions 的 _id 或 id）"
    }
  ],
  "query": [
    {
      "name": "pageNum",
      "type": "number",
      "required": false,
      "description": "页码，默认1"
    },
    {
      "name": "pageSize",
      "type": "number",
      "required": false,
      "description": "每页数量，默认10"
    },
    {
      "name": "moduleName",
      "type": "string",
      "required": false,
      "description": "模块名称模糊搜索"
    },
    {
      "name": "status",
      "type": "number",
      "required": false,
      "description": "状态：1-启用，0-禁用"
    }
  ]
}
```

### 响应示例
```json
{
  "success": {
    "code": "0000",
    "message": "获取成功",
    "data": {
      "list": [
        {
          "id": 1,
          "code": "MFM0001",
          "functionId": "mf001",
          "moduleId": "sm001",
          "moduleCode": "ORDER_MODULE",
          "moduleName": "订单管理",
          "status": 1
        }
      ],
      "total": 1,
      "pageNum": 1,
      "pageSize": 10
    }
  }
}
```

### 注意事项
- 路径参数 id 对应 memberFunctions 记录主键
- moduleId 为系统模块 securityModules 的主键（或 code），与 resources 表无关；资源在资源管理中通过 moduleId 字段关联到系统模块
- OpenAPI 校验使用 memberFunctionModules 的 moduleId（securityModules）与 moduleCode（自定义模块）


## 2. 创建会员功能模块关联
**方法**：	POST

**路径**：				/api/members/functions/{id}/modules

**功能说明**：
为指定会员功能新增模块关联

### 请求参数
```json
{
  "path": [
    {
      "name": "id",
      "type": "string",
      "required": true,
      "description": "会员功能ID"
    }
  ],
  "body": {
    "moduleId": "string｜可选，关联 securityModules 表记录 _id/id/code；提供时服务端自动填充 moduleCode/moduleName，并校验模块 systemId 与会员功能 systemId 一致",
    "moduleCode": "string｜未提供 moduleId 时必填（与 moduleName 成对），自定义模块编码",
    "moduleName": "string｜未提供 moduleId 时必填（与 moduleCode 成对），自定义模块名称",
    "status": "number｜可选，状态：1-启用，0-禁用，默认1",
    "description": "string｜可选，描述"
  }
}
```

### 响应示例
```json
{
  "success": {
    "code": "0000",
    "message": "创建成功",
    "data": {
      "id": 1,
      "code": "MFM0001",
      "functionId": "mf001",
      "moduleId": "sm001",
      "moduleCode": "ORDER_MODULE",
      "moduleName": "订单管理",
      "status": 1
    }
  },
  "failure": {
    "code": "4090",
    "message": "该模块已与会员功能关联",
    "data": null
  }
}
```

### 注意事项
- 二选一：传 moduleId 关联系统模块（securityModules），或传 moduleCode+moduleName 自定义模块
- 不与 resources 表发生关联；需限制某模块下资源时，在资源管理里为资源设置 moduleId 指向同一系统模块
- 同一 functionId 下相同 moduleId 或 moduleCode 不可重复关联


## 3. 更新会员功能模块关联
**方法**：	PUT

**路径**：				/api/members/functions/{id}/modules/{functionModuleId}

**功能说明**：
更新指定会员功能下的模块关联信息

### 请求参数
```json
{
  "path": [
    {
      "name": "id",
      "type": "string",
      "required": true,
      "description": "会员功能ID"
    },
    {
      "name": "functionModuleId",
      "type": "string",
      "required": true,
      "description": "会员功能模块关联ID（memberFunctionModules 的 _id 或 id）"
    }
  ],
  "body": {
    "moduleId": "string｜可选，更换关联的系统模块 ID 或 code",
    "moduleCode": "string｜可选，自定义模块编码（与 moduleName 配合使用）",
    "moduleName": "string｜可选，自定义模块名称（与 moduleCode 配合使用）",
    "status": "number｜可选，状态：1-启用，0-禁用",
    "description": "string｜可选，描述"
  }
}
```

### 响应示例
```json
{
  "success": {
    "code": "0000",
    "message": "更新成功",
    "data": {
      "id": 1,
      "code": "MFM0001",
      "moduleCode": "CUSTOM_FEATURE",
      "moduleName": "自定义功能",
      "status": 1
    }
  },
  "failure": {
    "code": "4040",
    "message": "会员功能模块关联不存在",
    "data": null
  }
}
```


## 4. 删除会员功能模块关联
**方法**：	DELETE

**路径**：				/api/members/functions/{id}/modules/{functionModuleId}

**功能说明**：
删除指定会员功能下的模块关联

### 请求参数
```json
{
  "path": [
    {
      "name": "id",
      "type": "string",
      "required": true,
      "description": "会员功能ID"
    },
    {
      "name": "functionModuleId",
      "type": "string",
      "required": true,
      "description": "会员功能模块关联ID"
    }
  ]
}
```

### 响应示例
```json
{
  "success": {
    "code": "0000",
    "message": "删除成功",
    "data": {
      "result": true
    }
  },
  "failure": {
    "code": "4040",
    "message": "会员功能模块关联不存在",
    "data": null
  }
}
```


## 5. 切换会员功能模块关联状态
**方法**：	PUT

**路径**：				/api/members/functions/{id}/modules/{functionModuleId}/status

**功能说明**：
启用或禁用指定会员功能下的模块关联

### 请求参数
```json
{
  "path": [
    {
      "name": "id",
      "type": "string",
      "required": true,
      "description": "会员功能ID"
    },
    {
      "name": "functionModuleId",
      "type": "string",
      "required": true,
      "description": "会员功能模块关联ID"
    }
  ],
  "body": {
    "status": "number｜必填，状态：1-启用，0-禁用"
  }
}
```

### 响应示例
```json
{
  "success": {
    "code": "0000",
    "message": "状态更新成功",
    "data": {
      "id": 1,
      "code": "MFM0001",
      "status": 0
    }
  }
}
```

