bug fix
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user