hl-api-changelog/changelogs-v2/2026-06/05_3414_自定义推送选人下拉-客人名字undefined已修+企微通道需切员工数据源-管理后台.md

5.4 KiB

【后端已修 + 前端待办·管理后台】自定义推送「选择用户」下拉:客人名字 undefined(后端已修) + 企业微信通道搜错数据源(前端待接)

关联: 工单 #3414内部员工站内信| 服务: hl-user-service后端已改+ 前端 hl-ui 提报时间: 2026-06-05 | 后端: @wx | 前端待接: mmg 位置: 管理后台 → 通知中心 → 自定义推送 → 推送目标「指定用户」→ 选择用户下拉


⚠️ 总览:两个独立问题

「自定义推送」选「指定用户」时,选择用户下拉有两处问题,一处后端已修、一处需前端接:

# 问题 归属 状态
1 选「站内信」/「短信」通道,客人下拉显示「undefined 手机号 后端 已修 + 部署测试服实测
2 选「企业微信」/「站内信(内部员工)」通道,下拉搜出来的是**客人(带手机号)**而非内部员工 前端 待 mmg 接

1. 客人名字 undefined后端已修,PR #3511

现象:选「站内信」或「短信」通道 + 指定用户,客人下拉显示「undefined 13700009999」。

根因:后端 /custom-push/users 只回填了 realName,而 C 端客人绝大多数没填真实姓名realName 为空)→ 前端取 realName 即 undefined。

已修realName 为空时回退昵称,并新增 nickname 字段。测试服实测:

GET /admin/notification/custom-push/users?keyword=1
→ [{ "id": "2059154700023836674", "realName": "游客9999", "nickname": "游客9999", "phone": "13700009999", "avatarUrl": "..." }, ...]

前端:无需改动,继续展示 realName 即可现已永不为空,客人显示昵称如「游客9999」。如需更明确可改展示 realName(真名优先)。


2. 企业微信 / 站内信(内部员工) 通道要按通道切数据源(前端待接)

现象:选「企业微信」通道(页面提示「企业微信仅支持推送给内部员工」)或「站内信(内部员工)」通道,「选择用户」下拉里却列出客人(带手机号、名字 undefined

根因(测试服 nginx 访问日志实证):这两个通道下,前端仍调 /custom-push/usersC 端客人搜索),没有按通道切到员工搜索。

前端改法:按「推送通道」决定调哪个搜索接口 + 字段映射:

推送通道 选人调用接口 返回字段label / value
站内信C端/ 短信 GET /admin/notification/custom-push/users?keyword= label=realName已回退昵称,value=id,副文本 phone
企业微信 / 站内信(内部员工) GET /admin/notification/custom-push/admins?keyword= label=name(企微真名回退 username,value=adminId,副文本 roleName无手机号

⚠️ 字段名不同,克隆组件务必改映射:客人是 id/realName/phone;员工是 adminId/name/username/roleName

提交推送时:

  • 企业微信:{channel:"WECHAT_WORK"... 或现有企微 channel, targetType:"ADMIN_SPECIFIC", adminIds:[...]}(内部员工 adminId
  • 站内信(内部员工){channel:"ADMIN_INAPP", targetType:"ADMIN_SPECIFIC", adminIds:[...]}ADMIN_BY_ROLE + roleKeys

3. 后端状态

  • /custom-push/users(客人搜索): 已修 name 回退 + 部署测试服实测返昵称
  • /custom-push/admins(员工搜索): 一直正常(返 adminId/name/username/roleKey/roleName,无手机号
  • 后端两个接口都就绪,问题 2 纯前端按通道切接口。

4. 企业微信推送给员工——后端补完,现已可用PR #3515 / #3520

之前选「企业微信 + 指定员工」点发送会报 「不支持的目标类型: ADMIN_SPECIFIC」(后端没接住企微+员工目标),且企微消息丢标题、没链接。已修复并部署测试服:

  • 企业微信 + 指定员工(ADMIN_SPECIFIC) / 按角色(ADMIN_BY_ROLE) 现已支持,提交 {channel:"WECHAT_WORK", targetType:"ADMIN_SPECIFIC", adminIds:[...]}{... targetType:"ADMIN_BY_ROLE", roleKeys:[...]}
  • 企微消息现在 = 标题 + 正文 + 跳转链接(之前只有正文)。
  • 返回 {totalCount, successCount, failCount}:未绑企微的员工无法收企微,计入 failCount属正常,前端可据此提示「N 人未绑企微未送达」)。

前端无需改逻辑(请求体已对,按 §2 切到 /admins 选人即可),这里是告知该通道已可正常用。

5. ⚠️ 「跳转链接」输入框文案待改(前端)

当前「跳转链接」输入框提示语 「站内信时生效,如 /pages/product/list」已过时

  1. 现在企业微信推送也会带上这个链接了,不只是站内信 → 提示语建议改成「站内信 / 企业微信生效」。
  2. ⚠️ 企微是纯文本消息,里面 /pages/... 这种相对路径点不动(那是小程序路径)。要在企微里能点,必须填完整 https:// 网址。建议提示语引导填完整 URL,或对企业微信通道单独提示。

6. 关联

  • 主功能:04_3414_内部员工站内信收件箱-SSE实时推送-管理后台.md
  • 选员工下拉历史 bug05_3414_选择员工下拉无数据-前端未接searchAdmins接口-管理后台.md
  • 后端:@wx | 前端:mmg