hl-api-changelog/changelogs/2026-05/26_feat_login_response_is_customizer.md
API Changelog Bot f141248a4b feat(登录): changelog 补 adminId 字段 (PR #3025)
登录响应在 isCustomizer=true 时额外返回定制师 adminId(字符串)。
通知 mmg。
2026-05-26 11:05:56 +08:00

3.2 KiB

feat(登录): 小程序登录响应新增 isCustomizer + adminId 字段(后端用登录手机号校验定制师身份)

类型: feat(新增响应字段,向后兼容) 关联 PR: #3023(isCustomizer,Closes #3022) + #3025(adminId,Closes #3024) 日期: 2026-05-26 影响接口: POST /mp/user/login(微信登录) + POST /mp/user/login/sms(短信登录) 接收方: mmg 前端: 可选接入(老逻辑不受影响,新字段按需使用)


🎯 背景

登录成功后,前端需要知道「当前登录用户是不是定制师」,以决定是否展示「分享名片」等定制师专属入口;若是定制师,还需要其 adminId 来组装分享链接(?adminId={adminId})。此前这两项都要登录后再额外调一次 GET /mp/customizer/me 才能拿到。现在登录响应直接带上 isCustomizer + adminId,省去这次额外请求。


📋 新增字段

两个登录接口的响应 data 中新增:

字段 类型 说明
isCustomizer boolean 当前登录用户是否为定制师。true=是,false=否
adminId string | null 定制师后台账号 ID(雪花,序列化为字符串)。isCustomizer=true 时有值;false 时为 null

判定规则(后端):用本次登录的手机号精确匹配后台 admin_user.mobile,且该后台账号 status=ACTIVE、并持有 CUSTOMIZER(定制师)角色 —— 三者全满足才 isCustomizer=true 并返回对应 adminId

注意:微信登录用户若未授权手机号(后端拿不到 phone),isCustomizer=falseadminId=null


📦 响应示例

命中定制师:

{
  "code": 200, "message": "成功", "success": true,
  "data": {
    "token": "...", "accessToken": "...", "refreshToken": "...",
    "accessTokenExpiresIn": 15552000, "refreshTokenExpiresIn": 31536000,
    "userId": "2059102607587143681",
    "nickname": "用户0001", "avatar": null, "phone": "139****0001",
    "isNewUser": false, "needProfile": false,
    "isCustomizer": true,
    "adminId": "1002"
  }
}

非定制师:"isCustomizer": false, "adminId": null(其余字段不变)。


⚠️ 前端说明

  1. isCustomizer / adminId 均为新增字段,纯增量,不影响任何已有字段,老前端无需改动即可继续工作。
  2. adminId字符串(雪花,已防 JS 精度丢失),前端直接当字符串用,勿转 number。
  3. 如需用「登录即知是否定制师 + adminId」省掉一次 /mp/customizer/me,可直接读 data.isCustomizer / data.adminId,组装分享链接 ?adminId={adminId}
  4. 登录响应只给布尔值 + adminId;若还需要定制师的姓名 / 头像,继续用 GET /mp/customizer/me(返回 isCustomizer / adminId / customizerName / customizerAvatar)。adminId 两处口径一致。

🔧 部署状态

测试服 hl-user-service + hl-mp-service 已部署最新 dev(双实例滚动)。

  • 经测试服网关 POST /mp/user/login/sms 实测:普通手机号登录响应已返回 isCustomizer: false + adminId: null,字段已上线、序列化正常。
  • 命中定制师返 isCustomizer: true + adminId: "1002"(字符串)已在本地全链路(网关→mp→user)+ 单元测试覆盖验证。