全量用户对象返回 is_user_banned (2026-08-10)

接口变更

user

content

artist_center

接口示例

user

GET /api/user/info

  • 功能说明:获取当前用户资料。
  • 变更说明:User/UserInfoResource 新增 is_user_banned 字段。

请求参数与响应

请求参数无变化。响应新增字段:

{
  "data": {
    "id": 10001,
    "name": "alice",
    "email": "alice@example.com",
    "is_artist": false,
    "is_user_banned": false,
    "artist": null
  }
}
  • is_user_banned:boolean,当前用户是否被封禁。
  • 嵌套的 artist 对象不新增 is_user_banned(画师对象不派生该字段,见 GET /api/content/artist/info)。

错误响应

无新增,沿用原有错误语义。

user 组:用户对象新增 is_user_banned

  • 功能说明:以下接口返回的 user 对象统一新增 is_user_banned 字段。
  • 变更说明:User 模型全局附加 is_user_banned,凡是以用户对象(裸模型或嵌套关系)返回的位置都会携带该字段。

涉及接口:

  • POST /api/user/update_setting:data(user 对象)
  • POST /api/user/groups/list / new_groups / info / open:requestAdminJoin.user
  • POST /api/user/groups/request_admin_join / cancel_request_admin_join:返回的 user
  • POST /api/apply_artist/check_code:inviterUser / inviteeUser
  • POST /api/user_invite_relations/list:data[].invitee

新增字段:

字段类型说明
is_user_bannedboolean该用户是否被封禁

示例(user_invite_relations/list):

{
  "data": [
    {
      "id": 1,
      "invitee": {
        "id": 20001,
        "name": "bob",
        "avatar_id": 123,
        "is_user_banned": true
      }
    }
  ]
}

错误响应

无新增,沿用原有错误语义。

content

GET /api/content/artist/info

  • 功能说明:获取画师详情。
  • 变更说明:响应新增 user 子对象(含 is_user_banned);画师自身的 is_user_banned 保留。

响应示例

{
  "data": {
    "id": 30001,
    "name": "artist_name",
    "cname": "artist_cname",
    "is_user_banned": false,
    "user": {
      "id": 10001,
      "banned_at": null,
      "is_user_banned": false
    }
  }
}
  • 画师对象:is_user_banned 保留(后端显式 append)。
  • 新增 user 子对象:仅包含 id、banned_at、is_user_banned 三个字段,用于前端判断画师账号是否被封禁。不包含 email / phone 等敏感字段。
  • 前端两种消费方式均可:
    • artist.is_user_banned
    • artist.user?.is_user_banned

错误响应

  • 404:画师不存在或该画师账号已被封禁(accessibleInContentInfo 作用域过滤)

content 组:用户对象新增 is_user_banned

  • 功能说明:content 接口返回的嵌套 user 对象新增 is_user_banned。
  • 变更说明:与 user 组相同,User 模型全局附加该字段。

涉及接口:

  • GET /api/content/projects/info:user
  • GET /api/content/site/meta:精选评价的 user

新增字段:

字段类型说明
is_user_bannedboolean该用户是否被封禁

错误响应

无新增,沿用原有错误语义。

artist_center

artist_center 组:用户对象新增 is_user_banned

  • 功能说明:artist_center 接口返回的客户/关联 user 对象新增 is_user_banned。
  • 变更说明:与 user 组相同,User 模型全局附加该字段。

涉及接口:

  • POST /api/artist_center/work_tasks/list、GET /api/artist_center/work_tasks/info:user
  • GET /api/artist_center/service_requests/list、GET /api/artist_center/service_requests/info:user
  • POST /api/artist_center/product_licenses/list:user
  • POST /api/artist_center/artist_invite_codes/list:inviterUser / inviteeUser

新增字段:

字段类型说明
is_user_bannedboolean该用户是否被封禁

示例(artist_center/work_tasks/list):

{
  "data": [
    {
      "id": 58,
      "user": {
        "id": 20001,
        "name": "bob",
        "cname": null,
        "avatar_id": 123,
        "is_user_banned": false
      }
    }
  ]
}

错误响应

无新增,沿用原有错误语义。

前端对接建议

  • 统一使用 user.is_user_banned 判断并渲染多语言“被封禁的用户”名称,不要依赖 name 字段(封禁用户在数据库中的 name 为 Banned User,仅聊天场景会被置空)。
  • 聊天 / 群聊的用户对象此前已含 is_user_banned,本次保持一致;ChatMessageCreated 等广播事件无需变更。
  • 画师对象(artist)本身不再派生 is_user_banned;需要判断画师账号封禁状态时:
    • 画师详情页:读 artist.is_user_banned 或 artist.user?.is_user_banned。
    • 其余业务记录(service_requests / work_tasks / bookmarks 等)中的画师对象当前不含该字段,也未返回 user,属后续待接入项。
  • 封禁用户名称和头像不可跳转个人主页。

兼容性说明

  • 本次为纯新增字段(is_user_banned 加到 user 对象;user 加到画师详情响应),旧前端忽略即可,无破坏性变更。
  • GET /api/content/artist/info 的 user 子对象为最小字段(id / banned_at / is_user_banned),不会泄露邮箱、手机号等。
  • admin / internal 接口同样因 User 模型全局附加而携带 is_user_banned,前端不消费则无需关注。
  • 聊天场景的封禁脱敏(name / cname 置空、artist 置空)仅作用于聊天/群聊接口,不作用于上述业务接口。