loginDomain修正
This commit is contained in:
@@ -1,32 +0,0 @@
|
||||
package org.xyzh.workcase.config;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.xyzh.common.wechat.kefu.message.KefuMessageService;
|
||||
import org.xyzh.workcase.handler.WorkcaseKefuHandler;
|
||||
|
||||
import jakarta.annotation.PostConstruct;
|
||||
|
||||
/**
|
||||
* @description 工单模块的微信客服配置
|
||||
* 注册 WorkcaseKefuHandler 到消息服务
|
||||
* @filename WeChatKefuConfig.java
|
||||
* @author yslg
|
||||
* @copyright xyzh
|
||||
* @since 2025-12-19
|
||||
*/
|
||||
@Configuration
|
||||
public class WeChatKefuConfig {
|
||||
|
||||
@Autowired
|
||||
private KefuMessageService kefuMessageService;
|
||||
|
||||
@Autowired
|
||||
private WorkcaseKefuHandler workcaseKefuHandler;
|
||||
|
||||
@PostConstruct
|
||||
public void init() {
|
||||
kefuMessageService.setHandler(workcaseKefuHandler);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -21,7 +21,6 @@ import org.xyzh.common.core.domain.ResultDomain;
|
||||
import org.xyzh.common.core.page.PageRequest;
|
||||
import org.xyzh.common.utils.validation.ValidationResult;
|
||||
import org.xyzh.common.utils.validation.ValidationUtils;
|
||||
import org.xyzh.common.wechat.kefu.message.KefuMessageService;
|
||||
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
||||
@@ -46,9 +45,6 @@ public class WorkcaseChatContorller {
|
||||
@DubboReference(version = "1.0.0", group = "workcase", check = false, scope = "local")
|
||||
private WorkcaseChatService workcaseChatService;
|
||||
|
||||
@Autowired
|
||||
private KefuMessageService kefuMessageService;
|
||||
|
||||
// ========================= AI对话管理 =========================
|
||||
|
||||
@Operation(summary = "创建对话")
|
||||
@@ -166,20 +162,6 @@ public class WorkcaseChatContorller {
|
||||
return "success";
|
||||
}
|
||||
|
||||
@Operation(summary = "手动同步客服消息")
|
||||
@PostMapping("/kefu/sync")
|
||||
public ResultDomain<String> syncKefuMessages(
|
||||
@RequestParam(required = false) String cursor,
|
||||
@RequestParam(required = false) String token,
|
||||
@RequestParam(required = false, defaultValue = "100") Integer limit) {
|
||||
var response = kefuMessageService.syncMessages(cursor, token, limit);
|
||||
if (response != null && response.isSuccess()) {
|
||||
kefuMessageService.processMessages(response);
|
||||
return ResultDomain.success("同步成功", response.getNextCursor());
|
||||
}
|
||||
return ResultDomain.failure("同步失败");
|
||||
}
|
||||
|
||||
// ========================= 词云管理 =========================
|
||||
|
||||
@Operation(summary = "添加词云")
|
||||
|
||||
@@ -1,120 +0,0 @@
|
||||
package org.xyzh.workcase.handler;
|
||||
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.xyzh.api.ai.dto.TbChatMessage;
|
||||
import org.xyzh.api.workcase.dto.TbWorkcaseDTO;
|
||||
import org.xyzh.api.workcase.service.WorkcaseChatService;
|
||||
import org.xyzh.api.workcase.service.WorkcaseService;
|
||||
import org.xyzh.common.wechat.kefu.message.KefuMessageHandler;
|
||||
import org.xyzh.common.wechat.kefu.message.KefuMessageService;
|
||||
import org.xyzh.common.wechat.pojo.kefu.KefuSyncMsgResponse.KefuSyncMsg;
|
||||
|
||||
/**
|
||||
* @description 工单模块的微信客服处理器实现
|
||||
* 处理微信客服消息,同步到工单系统
|
||||
* @filename WorkcaseKefuHandler.java
|
||||
* @author yslg
|
||||
* @copyright xyzh
|
||||
* @since 2025-12-19
|
||||
*/
|
||||
@Component
|
||||
public class WorkcaseKefuHandler implements KefuMessageHandler {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(WorkcaseKefuHandler.class);
|
||||
|
||||
@Autowired
|
||||
private KefuMessageService kefuMessageService;
|
||||
|
||||
@DubboReference(version = "1.0.0", group = "workcase", check = false, scope = "local")
|
||||
private WorkcaseService workcaseService;
|
||||
|
||||
@DubboReference(version = "1.0.0", group = "workcase", check = false, scope = "local")
|
||||
private WorkcaseChatService workcaseChatService;
|
||||
|
||||
@Override
|
||||
public void onEnterSession(String openKfid, String externalUserid, String scene, String sceneParam, String welcomeCode) {
|
||||
logger.info("工单客服-用户进入会话: externalUserid={}, scene={}, sceneParam={}", externalUserid, scene, sceneParam);
|
||||
|
||||
// sceneParam 可能包含 workcaseId,用于关联工单
|
||||
if (sceneParam != null && !sceneParam.isEmpty()) {
|
||||
TbWorkcaseDTO filter = new TbWorkcaseDTO();
|
||||
filter.setWorkcaseId(sceneParam);
|
||||
var result = workcaseService.getWorkcaseById(sceneParam);
|
||||
|
||||
if (result != null && result.getSuccess() && result.getData() != null) {
|
||||
TbWorkcaseDTO workcase = result.getData();
|
||||
// 发送工单信息作为欢迎语
|
||||
String welcomeMsg = buildWelcomeMessage(workcase);
|
||||
kefuMessageService.sendWelcomeMessage(welcomeCode, welcomeMsg);
|
||||
logger.info("已发送工单欢迎语: workcaseId={}", workcase.getWorkcaseId());
|
||||
} else {
|
||||
// 发送通用欢迎语
|
||||
kefuMessageService.sendWelcomeMessage(welcomeCode, "您好,欢迎使用客服服务,请问有什么可以帮您?");
|
||||
}
|
||||
} else {
|
||||
kefuMessageService.sendWelcomeMessage(welcomeCode, "您好,欢迎使用客服服务,请问有什么可以帮您?");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTextMessage(String openKfid, String externalUserid, String msgid, String content, Long sendTime) {
|
||||
logger.info("工单客服-收到文本消息: externalUserid={}, content={}", externalUserid, content);
|
||||
|
||||
// 同步消息到 tb_chat_message 表
|
||||
// TODO: 根据 externalUserid 查找关联的 chatId,然后保存消息
|
||||
TbChatMessage chatMessage = new TbChatMessage();
|
||||
chatMessage.setRole("user");
|
||||
chatMessage.setContent(content);
|
||||
// workcaseChatService.saveChatMessage(chatMessage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onImageMessage(String openKfid, String externalUserid, String msgid, String mediaId, Long sendTime) {
|
||||
logger.info("工单客服-收到图片消息: externalUserid={}, mediaId={}", externalUserid, mediaId);
|
||||
|
||||
// 下载图片并保存
|
||||
// TODO: 实现图片消息处理
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSessionStatusChange(String openKfid, String externalUserid, String changeType,
|
||||
String oldServicerUserid, String newServicerUserid) {
|
||||
logger.info("工单客服-会话状态变更: externalUserid={}, changeType={}, newServicer={}",
|
||||
externalUserid, changeType, newServicerUserid);
|
||||
|
||||
// 更新工单处理人
|
||||
// TODO: 根据 externalUserid 查找关联工单,更新 processor
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMsgSendFail(String openKfid, String externalUserid, String failMsgid, String failType) {
|
||||
logger.warn("工单客服-消息发送失败: externalUserid={}, failMsgid={}, failType={}",
|
||||
externalUserid, failMsgid, failType);
|
||||
|
||||
// 记录失败日志,可能需要重试
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOtherMessage(KefuSyncMsg msg) {
|
||||
logger.info("工单客服-收到其他消息: msgtype={}", msg.getMsgtype());
|
||||
}
|
||||
|
||||
private String buildWelcomeMessage(TbWorkcaseDTO workcase) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("您好,您的工单已创建。\n");
|
||||
sb.append("工单编号:").append(workcase.getWorkcaseId()).append("\n");
|
||||
if (workcase.getType() != null) {
|
||||
sb.append("问题类型:").append(workcase.getType()).append("\n");
|
||||
}
|
||||
if (workcase.getDevice() != null) {
|
||||
sb.append("设备:").append(workcase.getDevice()).append("\n");
|
||||
}
|
||||
sb.append("我们将尽快为您处理。");
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user