loginDomain修正

This commit is contained in:
2025-12-19 18:19:04 +08:00
parent 9c4f73ac9c
commit 1131a34c6e
19 changed files with 206 additions and 252 deletions

View File

@@ -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);
}
}

View File

@@ -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 = "添加词云")

View File

@@ -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();
}
}