This commit is contained in:
Van0313
2025-04-27 15:58:05 +08:00
parent 040f99d285
commit 3cbd0a8025
2 changed files with 89 additions and 0 deletions

View File

@@ -1597,6 +1597,89 @@ public class JDUtil {
}
}
public void sendOrderToWxByOrderP(String order, String fromWxid) {
// 检查是否命中“评”指令
if ("".equals(order)) {
// 初始化用户交互状态
String key = INTERACTION_STATE_PREFIX + fromWxid;
UserInteractionState state = loadOrCreateState(key);
try {
// 设置当前状态为生成评论流程
state.setCurrentState(UserInteractionState.ProcessState.PRODUCT_PROMOTION);
state.setCurrentField("commentTypeSelection");
// 提示用户选择评论类型
wxUtil.sendTextMessage(fromWxid, "请选择要生成的评论类型:\n回复 1 - 消毒柜评论\n回复 2 - 油烟机评论", 1, fromWxid, false);
logger.info("进入生成评论流程 - 用户: {}", fromWxid);
} catch (Exception e) {
logger.error("生成评论流程初始化异常 - 用户: {}, 状态: {}", fromWxid, state, e);
wxUtil.sendTextMessage(fromWxid, "处理异常,请重新开始", 1, fromWxid, false);
resetState(fromWxid, state);
} finally {
saveState(key, state);
}
} else {
// 如果未命中“评”指令,检查是否在生成评论流程中
handleCommentInteraction(fromWxid, order);
}
}
/**
* 处理生成评论流程中的用户交互
*/
private void handleCommentInteraction(String fromWxid, String message) {
String key = INTERACTION_STATE_PREFIX + fromWxid;
UserInteractionState state = loadOrCreateState(key);
try {
// 检查当前状态是否为生成评论流程
if (!"commentTypeSelection".equals(state.getCurrentField())) {
return;
}
// 根据用户输入生成对应的评论
switch (message) {
case "1":
generateComment(fromWxid, "消毒柜");
break;
case "2":
generateComment(fromWxid, "油烟机");
break;
default:
wxUtil.sendTextMessage(fromWxid, "无效的选择,请回复 1 或 2", 1, fromWxid, false);
return;
}
} catch (Exception e) {
logger.error("生成评论流程处理异常 - 用户: {}, 状态: {}", fromWxid, state, e);
wxUtil.sendTextMessage(fromWxid, "处理异常,请重新开始", 1, fromWxid, false);
resetState(fromWxid, state);
} finally {
saveState(key, state);
}
}
/**
* 生成评论内容
*/
private void generateComment(String fromWxid, String productType) {
// 这里可以调用缓存或AI生成文案目前先返回固定模板
String commentTemplate = "这是一条关于%s的评论\n" +
"1. 性能非常出色,使用体验极佳。\n" +
"2. 安装方便,操作简单。\n" +
"3. 售后服务到位,值得信赖。\n" +
"感谢您的购买与支持!";
String comment = String.format(commentTemplate, productType);
wxUtil.sendTextMessage(fromWxid, comment, 1, fromWxid, false);
// 重置状态
resetState(fromWxid, loadOrCreateState(INTERACTION_STATE_PREFIX + fromWxid));
}
// 定义一个内部类来存储用户交互状态
@Getter

View File

@@ -255,6 +255,12 @@ public class WxMessageConsumer {
jdUtils.sendOrderToWxByOrderD(msg.replace("", ""), fromWxid);
return;
}
if (msg.startsWith("")){
logger.info("消息以评开头,处理评价指令消息");
jdUtils.sendOrderToWxByOrderP(msg.replace("", ""), fromWxid);
return;
}
logger.info("未命中前置指令,开始命中 Default 流程");
jdUtils.sendOrderToWxByOrderDefault(msg, fromWxid);
}