{
  "openapi": "3.0.3",
  "info": {
    "title": "会员功能模块关联",
    "version": "1.0.0",
    "description": "会员功能模块关联相关接口文档"
  },
  "paths": {
    "/api/members/functions/{id}/modules": {
      "get": {
        "summary": "获取会员功能模块关联列表",
        "description": "分页获取指定会员功能下已关联的功能模块列表（memberFunctionModules）。用于配置某会员类型在某系统下可使用的模块，供 OpenAPI 有状态/无状态会员功能校验使用。",
        "parameters": [
          {
            "name": "pageNum",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number"
            },
            "description": "页码，默认1"
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number"
            },
            "description": "每页数量，默认10"
          },
          {
            "name": "moduleName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "模块名称模糊搜索"
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number"
            },
            "description": "状态：1-启用，0-禁用"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "会员功能ID（memberFunctions 的 _id 或 id）"
          }
        ],
        "responses": {
          "200": {
            "description": "成功响应",
            "content": {
              "application/json": {
                "example": {
                  "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
                    }
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "创建会员功能模块关联",
        "description": "为指定会员功能新增模块关联",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "会员功能ID"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "moduleId": {
                    "type": "string",
                    "description": "string｜可选，关联 securityModules 表记录 _id/id/code；提供时服务端自动填充 moduleCode/moduleName，并校验模块 systemId 与会员功能 systemId 一致"
                  },
                  "moduleCode": {
                    "type": "string",
                    "description": "string｜未提供 moduleId 时必填（与 moduleName 成对），自定义模块编码"
                  },
                  "moduleName": {
                    "type": "string",
                    "description": "string｜未提供 moduleId 时必填（与 moduleCode 成对），自定义模块名称"
                  },
                  "status": {
                    "type": "number",
                    "description": "number｜可选，状态：1-启用，0-禁用，默认1"
                  },
                  "description": {
                    "type": "string",
                    "description": "string｜可选，描述"
                  }
                },
                "required": [
                  "moduleCode",
                  "moduleName"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功响应",
            "content": {
              "application/json": {
                "example": {
                  "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
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/members/functions/{id}/modules/{functionModuleId}": {
      "put": {
        "summary": "更新会员功能模块关联",
        "description": "更新指定会员功能下的模块关联信息",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "会员功能ID"
          },
          {
            "name": "functionModuleId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "会员功能模块关联ID（memberFunctionModules 的 _id 或 id）"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "moduleId": {
                    "type": "string",
                    "description": "string｜可选，更换关联的系统模块 ID 或 code"
                  },
                  "moduleCode": {
                    "type": "string",
                    "description": "string｜可选，自定义模块编码（与 moduleName 配合使用）"
                  },
                  "moduleName": {
                    "type": "string",
                    "description": "string｜可选，自定义模块名称（与 moduleCode 配合使用）"
                  },
                  "status": {
                    "type": "number",
                    "description": "number｜可选，状态：1-启用，0-禁用"
                  },
                  "description": {
                    "type": "string",
                    "description": "string｜可选，描述"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功响应",
            "content": {
              "application/json": {
                "example": {
                  "success": {
                    "code": "0000",
                    "message": "更新成功",
                    "data": {
                      "id": 1,
                      "code": "MFM0001",
                      "moduleCode": "CUSTOM_FEATURE",
                      "moduleName": "自定义功能",
                      "status": 1
                    }
                  },
                  "failure": {
                    "code": "4040",
                    "message": "会员功能模块关联不存在",
                    "data": null
                  }
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "删除会员功能模块关联",
        "description": "删除指定会员功能下的模块关联",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "会员功能ID"
          },
          {
            "name": "functionModuleId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "会员功能模块关联ID"
          }
        ],
        "responses": {
          "200": {
            "description": "成功响应",
            "content": {
              "application/json": {
                "example": {
                  "success": {
                    "code": "0000",
                    "message": "删除成功",
                    "data": {
                      "result": true
                    }
                  },
                  "failure": {
                    "code": "4040",
                    "message": "会员功能模块关联不存在",
                    "data": null
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/members/functions/{id}/modules/{functionModuleId}/status": {
      "put": {
        "summary": "切换会员功能模块关联状态",
        "description": "启用或禁用指定会员功能下的模块关联",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "会员功能ID"
          },
          {
            "name": "functionModuleId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "会员功能模块关联ID"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "number",
                    "description": "number｜必填，状态：1-启用，0-禁用"
                  }
                },
                "required": [
                  "status"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功响应",
            "content": {
              "application/json": {
                "example": {
                  "success": {
                    "code": "0000",
                    "message": "状态更新成功",
                    "data": {
                      "id": 1,
                      "code": "MFM0001",
                      "status": 0
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}