feat(登录): changelog 补 adminId 字段 (PR #3025)
登录响应在 isCustomizer=true 时额外返回定制师 adminId(字符串)。 通知 mmg。
这个提交包含在:
父节点
73611df484
当前提交
f141248a4b
@ -1,7 +1,7 @@
|
||||
# feat(登录): 小程序登录响应新增 isCustomizer 字段(后端用登录手机号校验定制师身份)
|
||||
# feat(登录): 小程序登录响应新增 isCustomizer + adminId 字段(后端用登录手机号校验定制师身份)
|
||||
|
||||
> **类型**: feat(新增响应字段,向后兼容)
|
||||
> **关联 PR**: #3023(Closes #3022)
|
||||
> **关联 PR**: #3023(isCustomizer,Closes #3022) + #3025(adminId,Closes #3024)
|
||||
> **日期**: 2026-05-26
|
||||
> **影响接口**: `POST /mp/user/login`(微信登录) + `POST /mp/user/login/sms`(短信登录)
|
||||
> **接收方**: mmg
|
||||
@ -11,7 +11,7 @@
|
||||
|
||||
## 🎯 背景
|
||||
|
||||
登录成功后,前端需要知道「当前登录用户是不是定制师」,以决定是否展示「分享名片」等定制师专属入口。此前只能登录后再额外调一次 `GET /mp/customizer/me`。现在**登录响应直接带上 `isCustomizer` 布尔值**,省去这次额外请求。
|
||||
登录成功后,前端需要知道「当前登录用户是不是定制师」,以决定是否展示「分享名片」等定制师专属入口;若是定制师,还需要其 `adminId` 来组装分享链接(`?adminId={adminId}`)。此前这两项都要登录后再额外调一次 `GET /mp/customizer/me` 才能拿到。现在**登录响应直接带上 `isCustomizer` + `adminId`**,省去这次额外请求。
|
||||
|
||||
---
|
||||
|
||||
@ -22,49 +22,47 @@
|
||||
| 字段 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| `isCustomizer` | boolean | 当前登录用户是否为定制师。`true`=是,`false`=否 |
|
||||
| `adminId` | string \| null | 定制师后台账号 ID(雪花,序列化为**字符串**)。`isCustomizer=true` 时有值;`false` 时为 `null` |
|
||||
|
||||
**判定规则(后端)**:用本次登录的手机号精确匹配后台 `admin_user.mobile`,且该后台账号 `status=ACTIVE`、并持有 `CUSTOMIZER`(定制师)角色 —— 三者全满足才为 `true`。
|
||||
**判定规则(后端)**:用本次登录的手机号精确匹配后台 `admin_user.mobile`,且该后台账号 `status=ACTIVE`、并持有 `CUSTOMIZER`(定制师)角色 —— 三者全满足才 `isCustomizer=true` 并返回对应 `adminId`。
|
||||
|
||||
**注意**:微信登录用户若未授权手机号(后端拿不到 phone),`isCustomizer` 恒为 `false`。
|
||||
**注意**:微信登录用户若未授权手机号(后端拿不到 phone),`isCustomizer=false` 且 `adminId=null`。
|
||||
|
||||
---
|
||||
|
||||
## 📦 响应示例
|
||||
|
||||
**命中定制师**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "成功",
|
||||
"success": true,
|
||||
"code": 200, "message": "成功", "success": true,
|
||||
"data": {
|
||||
"token": "...",
|
||||
"accessToken": "...",
|
||||
"refreshToken": "...",
|
||||
"accessTokenExpiresIn": 15552000,
|
||||
"refreshTokenExpiresIn": 31536000,
|
||||
"token": "...", "accessToken": "...", "refreshToken": "...",
|
||||
"accessTokenExpiresIn": 15552000, "refreshTokenExpiresIn": 31536000,
|
||||
"userId": "2059102607587143681",
|
||||
"nickname": "用户0001",
|
||||
"avatar": null,
|
||||
"phone": "139****0001",
|
||||
"isNewUser": true,
|
||||
"needProfile": false,
|
||||
"isCustomizer": true
|
||||
"nickname": "用户0001", "avatar": null, "phone": "139****0001",
|
||||
"isNewUser": false, "needProfile": false,
|
||||
"isCustomizer": true,
|
||||
"adminId": "1002"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**非定制师**:`"isCustomizer": false, "adminId": null`(其余字段不变)。
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 前端说明
|
||||
|
||||
1. `isCustomizer` 为**新增字段,纯增量**,不影响任何已有字段,老前端无需改动即可继续工作。
|
||||
2. 如需用「登录即知是否定制师」省掉一次 `/mp/customizer/me`,可直接读 `data.isCustomizer`。
|
||||
3. **登录响应只给布尔值**;若还需要定制师的 adminId / 姓名 / 头像,继续用 `GET /mp/customizer/me`(返回 `isCustomizer` / `adminId` / `customizerName` / `customizerAvatar`)。需要的话可提需求把这几个字段也并进登录响应。
|
||||
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`,字段已上线、序列化正常。
|
||||
- 命中定制师返 `isCustomizer: true` 已在本地全链路(网关→mp→user)+ 单元测试覆盖验证。
|
||||
- 经测试服网关 `POST /mp/user/login/sms` 实测:普通手机号登录响应已返回 `isCustomizer: false` + `adminId: null`,字段已上线、序列化正常。
|
||||
- 命中定制师返 `isCustomizer: true` + `adminId: "1002"`(字符串)已在本地全链路(网关→mp→user)+ 单元测试覆盖验证。
|
||||
|
||||
正在加载...
x
在新工单中引用
屏蔽一个用户