Skip to content

在线客服 ​

这篇解决什么 ​

会员和管理员会话落哪两张表、新消息怎么推。读完能对上 promotion_kefu_conversation 和 WebSocket 帧类型,不要去找独立客服微服务。

默认端口 48080。开启见 商城功能设计。会员账号见 会员功能设计。

示意图:HTTP 落库。推送走框架通道 /infra/ws,不是客服自己开端口。

从哪改 ​

客服也在营销子模块。

名称说明仓库路径
会话@RequestMapping("/promotion/kefu-conversation")ruoyi-office/yudao-module-mall/yudao-module-promotion-server/.../controller/admin/kefu/KeFuConversationController.java
消息/promotion/kefu-messageKeFuMessageController
会员发消息App 同路径controller/app/kefu/AppKeFuMessageController.java
会话表promotion_kefu_conversationKeFuConversationDO
消息表promotion_kefu_messageKeFuMessageDO
PC 工作台WebSocket + Piniaruoyi-office-vben/apps/web-antd/src/views/mall/promotion/kefu/
App 客服管理员搬家ruoyi-office-uniapp/src/pages-mall/kefu/

官方菜单:客服中心 2797(mall/promotion/kefu/index),mobile_path 是 /pages-mall/kefu/index。权限字 promotion:kefu-message:send、promotion:kefu-conversation:*。

一个会员对应一条会话,getOrCreateConversation(senderId) 按 userId 建。删除是软删:userDeleted / adminDeleted。

字段 ​

KeFuMessageContentTypeEnum:1 文本,2 图片,3 语音,4 视频,5 系统,10 商品,11 订单。

名称说明仓库路径
userId会员KeFuConversationDO
adminUnreadMessageCount管理员未读同上
adminPinned置顶同上
senderType / receiverTypeUserTypeEnum:会员 1,管理员 2KeFuMessageDO
contentType / content类型 + 正文同上
readStatus已读同上

商品、订单消息没有 spuId / orderId 列。contentType 为 10 / 11 时,content 是 JSON 字符串,前端自己解析后跳转。

新消息 type:kefu_message_type。已读回执:kefu_message_read_status_change。历史列表仍走 GET /promotion/kefu-message/list。

通道在 infra

推送用 WebSocketSenderApi,连接 /infra/ws?token=...。客服页断线先查框架 WebSocket 和登录 Token,不要在 promotion 里加第二套长连接。

管理端才能接会话

PC 和 pages-mall/kefu 都是系统用户 + /admin-api。会员发消息走 App Controller。角色没勾客服中心时,工作台进不去。

按本仓库 DO 生成的 ER。会话对会员一对一。

配置与操作 ​

走 商城系统 → 客服中心(2797,/mall/kefu)。一个会员一条会话,getOrCreateConversation 按 userId 建。管理员发消息要权限 promotion:kefu-message:send。

推送走框架 WebSocket /infra/ws?token=。商品 / 订单卡片的 content 是 JSON,没有独立 spuId 列。PC 和 pages-mall/kefu 都是系统用户。开启见 商城功能设计。

客服工作台

本系统截图:客服工作台。

相关篇 ​

联系我们

获取报价、演示和二开方案

微信咨询二维码

微信咨询

17156169080

添加时备注「RuoYi Office」

在线体验商业版