用户邀请功能接口文档

概述

用户邀请功能允许用户通过邀请码邀请新用户注册,并在满足条件时获得奖励。该功能包括生成邀请码、验证邀请码、处理注册奖励等。

功能模块

  1. 用户注册时使用邀请码
  2. 邀请码管理(列表、详情)
  3. 邀请关系管理(列表)

接口列表

1. 用户注册接口(包含邀请码功能)

接口地址: /api/signup

请求方法: POST

功能说明: 用户注册接口,支持通过邀请码注册。如果提供了有效的邀请码,系统将创建邀请关系并触发奖励。

请求参数:

参数名类型必填说明
emailstring用户邮箱
passwordstring用户密码
tokenstring邮箱验证码
language_idinteger语言ID
user_invite_codestring邀请码
rememberboolean是否记住登录

响应参数:

参数名类型说明
statusstring状态 (success/fail)
messagestring返回消息
codeinteger状态码
dataobject返回数据
data.tokenstring访问令牌
data.userobject用户信息

示例请求:

{
  "email": "user@example.com",
  "password": "password123",
  "token": "123456",
  "user_invite_code": "ABCDEF"
}

示例响应:

{
  "status": "success",
  "message": "Sign Up Success",
  "code": 200,
  "data": {
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...",
    "user": {
      "id": 1,
      "name": "User Name",
      "email": "user@example.com"
    }
  }
}

错误码:

  • ErrorCode::SystemUserInvateCodeNotFound (30010): 邀请码不存在或无效

2. 获取用户邀请码列表

接口地址: /api/invite_codes/list

请求方法: POST

功能说明: 获取当前用户创建的邀请码列表。

请求参数:

参数名类型必填说明
codestring邀请码筛选
statusstring状态筛选 (active,inactive,expired)
pageinteger页码
per_pageinteger每页数量

响应参数:

参数名类型说明
codeinteger状态码
messagestring返回消息
dataarray邀请码列表

邀请码对象:

参数名类型说明
idinteger邀请码ID
inviter_user_idinteger邀请者用户ID
codestring邀请码
invite_code_type_idinteger邀请码类型ID
statusstring状态 (active,inactive,expired)
reward_max_usageinteger最大奖励次数
expires_atstring过期时间
created_atstring创建时间
updated_atstring更新时间

示例请求:

{
  "page": 1,
  "per_page": 10
}

示例响应:

{
  "code": 200,
  "message": "success",
  "data": [
    {
      "id": 1,
      "inviter_user_id": 1,
      "code": "ABCDEF",
      "invite_code_type_id": 1,
      "status": "active",
      "reward_max_usage": 10,
      "expires_at": "2025-12-31 23:59:59",
      "created_at": "2025-08-11 10:00:00",
      "updated_at": "2025-08-11 10:00:00"
    }
  ]
}

3. 获取邀请码详情

接口地址: /api/invite_codes/info

请求方法: POST

功能说明: 获取指定邀请码的详细信息,包括邀请统计。

请求参数:

参数名类型必填说明
idinteger邀请码ID

响应参数:

参数名类型说明
codeinteger状态码
messagestring返回消息
dataobject邀请码详情

邀请码详情对象:

参数名类型说明
idinteger邀请码ID
inviter_user_idinteger邀请者用户ID
codestring邀请码
invite_code_type_idinteger邀请码类型ID
statusstring状态 (active,inactive,expired)
reward_max_usageinteger最大奖励次数
expires_atstring过期时间
created_atstring创建时间
updated_atstring更新时间
invited_countinteger已邀请人数
reward_received_countinteger已获得奖励次数

示例请求:

{
  "id": 1
}

示例响应:

{
  "code": 200,
  "message": "success",
  "data": {
    "id": 1,
    "inviter_user_id": 1,
    "code": "ABCDEF",
    "invite_code_type_id": 1,
    "status": "active",
    "reward_max_usage": 10,
    "expires_at": "2025-12-31 23:59:59",
    "created_at": "2025-08-11 10:00:00",
    "updated_at": "2025-08-11 10:00:00",
    "invited_count": 2,
    "reward_received_count": 2
  }
}

4. 获取邀请关系列表

接口地址: /api/user_invite_relations/list

请求方法: POST

功能说明: 获取指定邀请码的邀请关系列表。

请求参数:

参数名类型必填说明
invite_code_idinteger邀请码ID
is_rewardedboolean是否已获得奖励筛选
pageinteger页码
sizeinteger每页数量

响应参数:

参数名类型说明
dataarray邀请关系列表
totalinteger总记录数

邀请关系对象:

参数名类型说明
idinteger邀请关系ID
invite_code_idinteger邀请码ID
inviter_user_idinteger邀请者用户ID
invitee_user_idinteger被邀请者用户ID
is_rewardedboolean是否已获得奖励
created_atstring创建时间
updated_atstring更新时间
inviteeobject被邀请者信息
invitee.idinteger被邀请者ID
invitee.namestring被邀请者名称
invitee.avatar_idinteger头像ID
invitee.avatarobject头像信息

示例请求:

{
  "invite_code_id": 1,
  "is_rewarded": true
}

示例响应:

{
  "data": [
    {
      "id": 1,
      "invite_code_id": 1,
      "inviter_user_id": 1,
      "invitee_user_id": 2,
      "is_rewarded": true,
      "created_at": "2025-08-11 10:30:00",
      "updated_at": "2025-08-11 10:30:00",
      "invitee": {
        "id": 2,
        "name": "Invited User",
        "avatar_id": 1,
        "avatar": {
          "id": 1,
          "path": "/avatars/1.jpg"
        }
      }
    }
  ],
  "total": 1
}

数据模型

邀请码状态枚举

说明
active活跃可用
inactive非活跃
expired已过期

奖励日志状态枚举

说明
pending待发放
processing发放中
completed已发放
failed发放失败
cancelled已取消

奖励接收者类型枚举

说明
inviter邀请者
invitee被邀请者

奖励触发条件枚举

说明
register_success注册成功
complete_first_order完成首单
complete_first_payment完成首次支付

奖励类型枚举

说明
invitee_credit给被邀请者积分
inviter_credit给邀请者积分

业务流程

  1. 用户注册时可选择使用邀请码
  2. 系统验证邀请码有效性
  3. 如果邀请码有效,创建邀请关系
  4. 根据配置触发相应的奖励
  5. 用户可查看自己的邀请码及邀请统计
  6. 用户可查看邀请关系列表

实现细节

  • 邀请码的使用次数是实时计算的,通过统计关联的邀请关系数量得出
  • 邀请码的最大使用次数由 reward_max_usage 字段控制,-1 表示无限制

错误处理

  • 邀请码不存在或无效时,返回统一的错误码
  • 数据库操作失败时,记录日志并返回相应错误
  • 系统会在处理邀请码和奖励发放时自动记录错误日志,便于问题排查