{
  "module": "会员用户管理",
  "moduleKey": "memberUser",
  "apiCount": 5,
  "apis": [
    {
      "title": "获取会员用户列表",
      "method": "GET",
      "path": "/api/member-users",
      "description": "分页获取会员用户列表。会员用户用于将系统用户或客户端用户与会员（members）关联，供有状态会员 OpenAPI 校验使用。",
      "requestParams": {
        "query": [
          {
            "name": "pageNum",
            "type": "number",
            "required": false,
            "description": "页码，默认1"
          },
          {
            "name": "pageSize",
            "type": "number",
            "required": false,
            "description": "每页数量，默认10"
          },
          {
            "name": "status",
            "type": "number",
            "required": false,
            "description": "按状态筛选：1-有效，0-无效"
          },
          {
            "name": "memberId",
            "type": "string",
            "required": false,
            "description": "按会员ID筛选（会员管理记录的 _id 或 id）"
          }
        ]
      },
      "responseExample": {
        "success": {
          "code": "0000",
          "message": "获取成功",
          "data": {
            "list": [
              {
                "id": 1,
                "code": "MU0001",
                "userId": "abc123",
                "userType": "clientUser",
                "memberId": "member001",
                "status": 1
              }
            ],
            "total": 100,
            "pageNum": 1,
            "pageSize": 10
          }
        }
      },
      "notes": [
        "userId 为绑定的系统用户或客户端用户的主键（_id 或 id），统一存储在该字段",
        "userType 标识绑定用户类型：user（系统用户）或 clientUser（客户端用户）；OpenAPI 激活创建的记录可能未写入 userType，但有状态会员校验仍可通过 userId 匹配登录用户"
      ]
    },
    {
      "title": "获取会员用户详情",
      "method": "GET",
      "path": "/api/member-users/{id}",
      "description": "根据会员用户ID获取详细信息",
      "requestParams": {
        "path": [
          {
            "name": "id",
            "type": "string",
            "required": true,
            "description": "会员用户ID（_id 或 id）"
          }
        ]
      },
      "responseExample": {
        "success": {
          "code": "0000",
          "message": "获取成功",
          "data": {
            "id": 1,
            "code": "MU0001",
            "userId": "abc123",
            "userType": "user",
            "memberId": "member001",
            "status": 1
          }
        },
        "failure": {
          "code": "4040",
          "message": "会员用户不存在",
          "data": null
        }
      }
    },
    {
      "title": "创建会员用户",
      "method": "POST",
      "path": "/api/member-users",
      "description": "创建新的会员用户，手动绑定系统用户或客户端用户到会员记录",
      "requestParams": {
        "body": {
          "userId": "string｜可选，绑定的用户主键（users 或 clientUsers 的 _id/id）",
          "userType": "string｜可选，绑定用户类型：user（系统用户）、clientUser（客户端用户）。不传时按系统用户优先、客户端用户次之自动匹配",
          "memberId": "string｜可选，会员ID（会员管理记录的 _id/id），提供时会校验会员是否存在且有效",
          "status": "number｜可选，状态：1-有效，0-无效，默认1",
          "orderNum": "number｜可选，排序号，默认0"
        }
      },
      "responseExample": {
        "success": {
          "code": "0000",
          "message": "创建会员用户成功",
          "data": {
            "id": 1,
            "code": "MU0001",
            "userId": "abc123",
            "userType": "clientUser",
            "memberId": "member001",
            "status": 1
          }
        },
        "failure": {
          "code": "4000",
          "message": "关联的会员不存在",
          "data": null
        }
      },
      "notes": [
        "若提供 userId，会在当前站点数据范围内校验用户是否存在：userType=user 时仅查 users 表；userType=clientUser 时仅查 clientUsers 表；未传 userType 时先查 users 再查 clientUsers",
        "校验通过后服务端会写入 userType 字段，便于管理端区分绑定类型",
        "若提供 memberId，会校验会员是否存在且有效（status=1），不存在或已停用分别返回：关联的会员不存在 / 关联的会员已停用",
        "用户不存在或无权限访问时返回：用户不存在或无权限访问该用户；指定 clientUser 但未找到时返回：客户端用户不存在或无权限访问该客户端用户"
      ]
    },
    {
      "title": "更新会员用户",
      "method": "PUT",
      "path": "/api/member-users/{id}",
      "description": "更新指定会员用户的信息，支持更换绑定的系统用户或客户端用户",
      "requestParams": {
        "body": {
          "userId": "string｜可选，绑定的用户主键（users 或 clientUsers 的 _id/id）",
          "userType": "string｜可选，绑定用户类型：user、clientUser。更换 userId 或未传 userType 时按创建接口相同规则校验；仅更新 userType 时会用现有 userId 重新校验",
          "memberId": "string｜可选，会员ID（会员管理记录的 _id/id），提供时会校验会员是否存在且有效",
          "status": "number｜可选，状态：1-有效，0-无效",
          "orderNum": "number｜可选，排序号"
        },
        "path": [
          {
            "name": "id",
            "type": "string",
            "required": true,
            "description": "会员用户ID（_id 或 id）"
          }
        ]
      },
      "responseExample": {
        "success": {
          "code": "0000",
          "message": "更新会员用户成功",
          "data": {
            "id": 1,
            "code": "MU0001",
            "userId": "abc123",
            "userType": "clientUser",
            "memberId": "member001",
            "status": 1
          }
        },
        "failure": {
          "code": "4000",
          "message": "关联的会员不存在",
          "data": null
        }
      },
      "notes": [
        "userId / userType 校验规则与创建接口一致",
        "若提供 memberId，会校验会员是否存在且有效（status=1）",
        "organizationId、ownerId、ownerType 等归属字段不可通过本接口修改"
      ]
    },
    {
      "title": "删除会员用户",
      "method": "DELETE",
      "path": "/api/member-users/{id}",
      "description": "删除指定的会员用户",
      "requestParams": {
        "path": [
          {
            "name": "id",
            "type": "string",
            "required": true,
            "description": "会员用户ID"
          }
        ]
      },
      "responseExample": {
        "success": {
          "code": "0000",
          "message": "删除会员用户成功",
          "data": {
            "result": true
          }
        },
        "failure": {
          "code": "4000",
          "message": "删除会员用户失败",
          "data": null
        }
      }
    }
  ]
}