|
@@ -5,7 +5,6 @@ import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.dromara.common.core.domain.dto.DictDataDTO;
|
|
import org.dromara.common.core.domain.dto.DictDataDTO;
|
|
|
import org.dromara.common.core.service.DictService;
|
|
import org.dromara.common.core.service.DictService;
|
|
|
-import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
|
|
|
import org.dromara.common.satoken.utils.LoginHelper;
|
|
import org.dromara.common.satoken.utils.LoginHelper;
|
|
|
import org.dromara.talk.domain.bo.TalkAgentBo;
|
|
import org.dromara.talk.domain.bo.TalkAgentBo;
|
|
|
import org.dromara.talk.domain.bo.TalkSessionBo;
|
|
import org.dromara.talk.domain.bo.TalkSessionBo;
|
|
@@ -13,6 +12,8 @@ import org.dromara.talk.domain.vo.TalkAgentVo;
|
|
|
import org.dromara.talk.service.IChatService;
|
|
import org.dromara.talk.service.IChatService;
|
|
|
import org.dromara.talk.service.ITalkAgentService;
|
|
import org.dromara.talk.service.ITalkAgentService;
|
|
|
import org.dromara.talk.service.ITalkSessionService;
|
|
import org.dromara.talk.service.ITalkSessionService;
|
|
|
|
|
+import org.dromara.talk.service.IPhoneUserService;
|
|
|
|
|
+import org.dromara.talk.domain.bo.PhoneUserBo;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
|
|
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
|
|
|
|
|
|
|
@@ -40,6 +41,7 @@ public class ChatController {
|
|
|
private final DictService dictService;
|
|
private final DictService dictService;
|
|
|
private final ITalkAgentService talkAgentService;
|
|
private final ITalkAgentService talkAgentService;
|
|
|
private final ITalkSessionService talkSessionService;
|
|
private final ITalkSessionService talkSessionService;
|
|
|
|
|
+ private final IPhoneUserService phoneUserService;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 获取TTS发言人字典
|
|
* 获取TTS发言人字典
|
|
@@ -53,16 +55,25 @@ public class ChatController {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 获取客服列表
|
|
|
|
|
- * 返回符合条件的客服列表,用于对话前端展示
|
|
|
|
|
|
|
+ * 根据当前登录用户ID获取对应的客服
|
|
|
|
|
+ * 用于对话前端自动匹配客服
|
|
|
*
|
|
*
|
|
|
- * @param bo 查询条件(可选)
|
|
|
|
|
- * @return 客服列表(分页数据)
|
|
|
|
|
|
|
+ * @return 客服配置,如果没有找到则返回null
|
|
|
*/
|
|
*/
|
|
|
- @GetMapping("/agent/list")
|
|
|
|
|
- public TableDataInfo<TalkAgentVo> getAgentList(TalkAgentBo bo) {
|
|
|
|
|
- List<TalkAgentVo> list = talkAgentService.queryList(bo);
|
|
|
|
|
- return TableDataInfo.build(list);
|
|
|
|
|
|
|
+ @GetMapping("/agent/my")
|
|
|
|
|
+ public Map<String, Object> getMyAgent() {
|
|
|
|
|
+ try {
|
|
|
|
|
+ Long userId = LoginHelper.getUserId();
|
|
|
|
|
+ TalkAgentVo agent = talkAgentService.queryByUserId(userId);
|
|
|
|
|
+ if (agent != null) {
|
|
|
|
|
+ return Map.of("code", 200, "data", agent);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ return Map.of("code", 404, "msg", "未找到对应的客服");
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.error("获取当前用户客服失败", e);
|
|
|
|
|
+ return Map.of("code", 500, "msg", "获取客服失败: " + e.getMessage());
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -107,6 +118,19 @@ public class ChatController {
|
|
|
String tempSessionId = UUID.randomUUID().toString();
|
|
String tempSessionId = UUID.randomUUID().toString();
|
|
|
String customerPhone = request != null ? request.get("customerPhone") : null;
|
|
String customerPhone = request != null ? request.get("customerPhone") : null;
|
|
|
|
|
|
|
|
|
|
+ // 如果有客户电话,检查并保存到 phone_user 表
|
|
|
|
|
+ if (customerPhone != null && !customerPhone.isEmpty()) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ PhoneUserBo phoneUserBo = new PhoneUserBo();
|
|
|
|
|
+ phoneUserBo.setCustomerPhone(customerPhone);
|
|
|
|
|
+ phoneUserService.insertByBo(phoneUserBo);
|
|
|
|
|
+ log.info("新客户电话已保存: {}", customerPhone);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ // 如果插入失败(可能是重复),忽略错误继续执行
|
|
|
|
|
+ log.debug("客户电话可能已存在: {}", customerPhone);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
TalkSessionBo sessionBo = new TalkSessionBo();
|
|
TalkSessionBo sessionBo = new TalkSessionBo();
|
|
|
sessionBo.setSessionId(tempSessionId);
|
|
sessionBo.setSessionId(tempSessionId);
|
|
|
sessionBo.setAgentId(id);
|
|
sessionBo.setAgentId(id);
|