{
  "module": "无状态会员管理",
  "moduleKey": "statelessMember",
  "apiCount": 7,
  "apis": [
    {
      "title": "获取无状态会员列表",
      "method": "GET",
      "path": "/api/stateless-members",
      "description": "分页获取无状态会员列表",
      "requestParams": {
        "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": "memberTypeId",
            "type": "string",
            "required": false,
            "description": "按会员类型ID筛选（会员类型管理记录的_id）"
          },
          {
            "name": "status",
            "type": "number",
            "required": false,
            "description": "启用状态过滤：1-有效，0-无效"
          },
          {
            "name": "saleStatus",
            "type": "number",
            "required": false,
            "description": "售卖状态过滤：0-未售（可购买），1-已售（占用）。筛选未售时会包含历史无 saleStatus 字段的记录"
          }
        ]
      },
      "responseExample": {
        "success": {
          "code": "0000",
          "message": "获取成功",
          "data": {
            "list": [
              {
                "id": 1,
                "code": "SM0001",
                "name": "开放平台会员",
                "secretKey": "sk-xxx",
                "memberTypeId": "xxx",
                "status": 1,
                "saleStatus": 0,
                "soldAt": null,
                "soldOrderNo": null
              }
            ],
            "total": 100,
            "pageNum": 1,
            "pageSize": 10
          }
        }
      }
    },
    {
      "title": "获取无状态会员详情",
      "method": "GET",
      "path": "/api/stateless-members/{id}",
      "description": "根据无状态会员ID获取详细信息",
      "requestParams": {
        "path": [
          {
            "name": "id",
            "type": "string",
            "required": true,
            "description": "无状态会员ID"
          }
        ]
      },
      "responseExample": {
        "success": {
          "code": "0000",
          "message": "获取成功",
          "data": {
            "id": 1,
            "code": "SM0001",
            "name": "开放平台会员",
            "secretKey": "sk-xxx",
            "memberTypeId": "xxx",
            "status": 1,
            "saleStatus": 0,
            "soldAt": null,
            "soldOrderNo": null
          }
        },
        "failure": {
          "code": "4040",
          "message": "无状态会员不存在",
          "data": null
        }
      }
    },
    {
      "title": "创建无状态会员",
      "method": "POST",
      "path": "/api/stateless-members",
      "description": "创建新的无状态会员",
      "requestParams": {
        "body": {
          "name": "string｜必填，会员名称",
          "memberTypeId": "string｜可选，会员类型ID（会员类型管理记录的_id），如果提供会校验会员类型是否存在",
          "effectiveDate": "string｜必填，生效日期",
          "validityDays": "number｜必填，有效期天数（最小7天）",
          "firstEffectiveDate": "string｜可选，首次生效日期",
          "status": "number｜可选，状态：1-有效，0-无效，默认0",
          "saleStatus": "number｜可选，售卖状态：0-未售，1-已售，默认0。创建时设为1会同时写入 soldAt"
        }
      },
      "responseExample": {
        "success": {
          "code": "0000",
          "message": "创建无状态会员成功",
          "data": {
            "id": 1,
            "code": "SM0001",
            "name": "开放平台会员",
            "secretKey": "sk-xxx",
            "memberTypeId": "xxx",
            "status": 1,
            "saleStatus": 0
          }
        },
        "failure": {
          "code": "4000",
          "message": "关联的会员类型不存在",
          "data": null
        }
      },
      "notes": [
        "secretKey会自动生成，无需手动提供",
        "如果提供了memberTypeId，会校验会员类型是否存在，不存在返回错误：关联的会员类型不存在",
        "saleStatus 表示售卖/占用状态，与 status（启用禁用）独立；不影响 OpenAPI 激活校验"
      ]
    },
    {
      "title": "更新无状态会员",
      "method": "PUT",
      "path": "/api/stateless-members/{id}",
      "description": "更新指定无状态会员的信息",
      "requestParams": {
        "body": {
          "name": "string｜可选，会员名称",
          "memberTypeId": "string｜可选，会员类型ID（会员类型管理记录的_id），如果提供会校验会员类型是否存在",
          "effectiveDate": "string｜可选，生效日期",
          "validityDays": "number｜可选，有效期天数（最小7天）",
          "firstEffectiveDate": "string｜可选，首次生效日期",
          "status": "number｜可选，状态：1-有效，0-无效"
        },
        "path": [
          {
            "name": "id",
            "type": "string",
            "required": true,
            "description": "无状态会员ID"
          }
        ]
      },
      "responseExample": {
        "success": {
          "code": "0000",
          "message": "更新无状态会员成功",
          "data": {
            "id": 1,
            "code": "SM0001",
            "name": "开放平台会员",
            "secretKey": "sk-xxx",
            "memberTypeId": "xxx",
            "status": 1
          }
        },
        "failure": {
          "code": "4000",
          "message": "关联的会员类型不存在",
          "data": null
        }
      },
      "notes": [
        "如果提供了memberTypeId，会校验会员类型是否存在，不存在返回错误：关联的会员类型不存在",
        "有效状态（status=1）的无状态会员不允许修改，会返回错误：有效状态的无状态会员不允许修改",
        "售卖状态（saleStatus）不可通过本接口修改，请使用 PUT /api/stateless-members/{id}/sale-status"
      ]
    },
    {
      "title": "删除无状态会员",
      "method": "DELETE",
      "path": "/api/stateless-members/{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
        }
      },
      "notes": [
        "有效状态（status=1）的无状态会员不允许删除，会返回错误：有效状态的无状态会员不允许删除"
      ]
    },
    {
      "title": "切换无状态会员状态",
      "method": "PUT",
      "path": "/api/stateless-members/{id}/status",
      "description": "切换无状态会员的启用/禁用状态",
      "requestParams": {
        "body": {
          "status": "number｜必填，状态：1-有效，0-无效"
        },
        "path": [
          {
            "name": "id",
            "type": "string",
            "required": true,
            "description": "无状态会员ID"
          }
        ]
      },
      "responseExample": {
        "success": {
          "code": "0000",
          "message": "状态更新成功",
          "data": {
            "id": 1,
            "code": "SM0001",
            "name": "开放平台会员",
            "secretKey": "sk-xxx",
            "memberTypeId": "xxx",
            "effectiveDate": "2025-01-01",
            "validityDays": 365,
            "firstEffectiveDate": "2025-01-01",
            "status": 1,
            "saleStatus": 0,
            "updateTime": "2025-01-01T10:00:00.000Z"
          }
        },
        "failure": {
          "code": "4040",
          "message": "无状态会员不存在",
          "data": null
        }
      },
      "notes": [
        "该接口用于切换无状态会员的启用/禁用状态（status）",
        "只有通过状态切换接口才能修改有效状态的无状态会员",
        "售卖状态（saleStatus）请使用售卖状态切换接口"
      ]
    },
    {
      "title": "切换无状态会员售卖状态",
      "method": "PUT",
      "path": "/api/stateless-members/{id}/sale-status",
      "description": "标记无状态会员为已售出（占用）或回库为未售。用于手动分发、渠道出库等；一卡一卖，已售不可重复标记为已售。",
      "requestParams": {
        "body": {
          "saleStatus": "number｜必填，售卖状态：0-未售（回库），1-已售（占用）",
          "orderNo": "string｜可选，关联订单号；标记为已售时可写入 soldOrderNo"
        },
        "path": [
          {
            "name": "id",
            "type": "string",
            "required": true,
            "description": "无状态会员ID（_id 或数字 id）"
          }
        ]
      },
      "responseExample": {
        "success": {
          "code": "0000",
          "message": "售卖状态更新成功",
          "data": {
            "id": 1,
            "code": "SM0001",
            "name": "开放平台会员",
            "saleStatus": 1,
            "soldAt": "2025-01-15T10:00:00.000Z",
            "soldOrderNo": "ORD-20250115-0010",
            "status": 1,
            "updateTime": "2025-01-15T10:00:00.000Z"
          }
        },
        "failure": {
          "code": "4000",
          "message": "该无状态会员已售出，不可重复售卖",
          "data": null
        },
        "failureNotFound": {
          "code": "4040",
          "message": "无状态会员不存在",
          "data": null
        }
      },
      "notes": [
        "saleStatus=1 时写入 soldAt；可选 orderNo 写入 soldOrderNo",
        "saleStatus=0 时清除 soldAt、soldOrderNo（回库）",
        "已为已售（saleStatus=1）时再次设为 1 会返回：该无状态会员已售出，不可重复售卖",
        "售卖状态不影响 OpenAPI 激活/校验；已售卡密在有效期内仍可无限次激活",
        "管理端订单（/api/orders）在状态变为 PAID 或 COMPLETED 且带有 statelessMemberId 时，也会自动标记为已售"
      ]
    }
  ]
}