菜单优化

This commit is contained in:
雷欧(林平凡)
2025-03-13 17:58:32 +08:00
parent 8d003e5181
commit 39301f49c3
4 changed files with 54 additions and 67 deletions

BIN
.idea/.cache/.Apifox_Helper/.toolWindow.db generated Normal file

Binary file not shown.

9
.idea/jpa-buddy-datasource.xml generated Normal file
View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JpbDataSourceConfig">
<data-source-infos>
<data-source-info id="eb8a6f9c-c8ff-4224-9875-8dd3cf91a680" persistence-unit-name="jd:jd" />
<data-source-info id="cc2bffcd-366e-45f1-9199-7c59c6f5def9" persistence-unit-name="jd:entityManagerFactory" />
</data-source-infos>
</component>
</project>

6
.idea/sqldialects.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="SqlDialectMappings">
<file url="file://$PROJECT_DIR$/src/main/java/cn/van/business/model/jd/update-schema.sql" dialect="MySQL" />
</component>
</project>

View File

@@ -1152,28 +1152,8 @@ public class JDUtil {
case GIFT_MONEY_FLOW:
handleGiftMoneyFlow(fromWxid, message, state);
break;
case DISINFECTANT_CABINET:
if ("退出".equals(message)) {
state.setCurrentState(INIT);
wxUtil.sendTextMessage(fromWxid, "退出登记", 1, fromWxid);
logger.debug("User {} exited DISINFECTANT_CABINET state", fromWxid);
} else {
state.getCollectedFields().put(state.getCurrentField(), message);
if (state.getCurrentField().equals("orderId")) {
state.setCurrentField("recipientName");
wxUtil.sendTextMessage(fromWxid, "请输入收件人姓名:", 1, fromWxid);
} else if (state.getCurrentField().equals("recipientName")) {
state.setCurrentField("recipientPhone");
wxUtil.sendTextMessage(fromWxid, "请输入收件人电话:", 1, fromWxid);
} else if (state.getCurrentField().equals("recipientPhone")) {
// 所有字段收集完毕,保存订单
saveProductOrder(state.getCollectedFields());
state.setCurrentState(INIT);
wxUtil.sendTextMessage(fromWxid, "订单已登记", 1, fromWxid);
logger.debug("User {} completed order registration", fromWxid);
}
}
case PRODUCT_ORDER_REGISTRATION:
handleProductOrderRegistration(fromWxid, message, state);
break;
default:
wxUtil.sendTextMessage(fromWxid, "无效的状态,请重新开始对话", 1, fromWxid);
@@ -1190,18 +1170,7 @@ public class JDUtil {
}
}
private void saveProductOrder(Map<String, String> fields) {
// 创建 ProductOrder 对象并保存到数据库
ProductOrder productOrder = new ProductOrder();
productOrder.setOrderId(fields.get("orderId"));
productOrder.setOrderTime(new Date());
productOrder.setRecipientName(fields.get("recipientName"));
// 设置其他字段...
// 保存到数据库
productOrderRepository.save(productOrder);
logger.debug("Saved product order: {}", productOrder);
}
// 新增礼金流程处理方法
private void handleGiftMoneyFlow(String fromWxid, String message, UserInteractionState state) {
@@ -1213,26 +1182,26 @@ public class JDUtil {
try {
switch (state.getCurrentStep()) {
//case STEP_PRODUCT_LINK:
// // 解析商品链接获取SKU
// String skuId = parseSkuFromUrl(message);
// Map<String, String> productInfo = queryProductInfo(skuId);
// state.getCollectedFields().put("skuId", skuId);
// state.getCollectedFields().put("productInfo", productInfo.get("name") + "\n价格" + productInfo.get("price"));
//
// state.setCurrentStep(STEP_AMOUNT);
// wxUtil.sendTextMessage(fromWxid, "商品信息:\n" + productInfo.get("name") + "\n当前价格" + productInfo.get("price") + "\n请输入开通金额", 1, fromWxid);
// break;
//
//case STEP_AMOUNT:
// if (!isValidAmount(message)) {
// wxUtil.sendTextMessage(fromWxid, "金额格式错误,请重新输入", 1, fromWxid);
// return;
// }
// state.getCollectedFields().put("amount", message);
// state.setCurrentStep(STEP_QUANTITY);
// wxUtil.sendTextMessage(fromWxid, "请输入开通数量:", 1, fromWxid);
// break;
case STEP_PRODUCT_LINK:
// 解析商品链接获取SKU
String skuId = parseSkuFromUrl(message);
Map<String, String> productInfo = queryProductInfo(skuId);
state.getCollectedFields().put("skuId", skuId);
state.getCollectedFields().put("productInfo", productInfo.get("name") + "\n价格" + productInfo.get("price"));
state.setCurrentStep(STEP_AMOUNT);
wxUtil.sendTextMessage(fromWxid, "商品信息:\n" + productInfo.get("name") + "\n当前价格" + productInfo.get("price") + "\n请输入开通金额", 1, fromWxid);
break;
case STEP_AMOUNT:
if (!isValidAmount(message)) {
wxUtil.sendTextMessage(fromWxid, "金额格式错误,请重新输入", 1, fromWxid);
return;
}
state.getCollectedFields().put("amount", message);
state.setCurrentStep(STEP_QUANTITY);
wxUtil.sendTextMessage(fromWxid, "请输入开通数量:", 1, fromWxid);
break;
case STEP_QUANTITY:
if (!isValidQuantity(message)) {
@@ -1255,6 +1224,14 @@ public class JDUtil {
state.reset();
}
}
private String parseSkuFromUrl(String url) {
// 实现从URL中解析SKU的逻辑
return "123456"; // 示例返回值
}
private boolean isValidAmount(String input) {
return input.matches("^\\d+(\\.\\d{1,2})?$");
}
private Map<String, String> queryProductInfo(String skuId) {
// 调用京东商品查询API需要实现
@@ -1269,7 +1246,7 @@ public class JDUtil {
// 实现实际的开通接口调用
return true;
}
public void handleProductOrderRegistration(String fromWxid, String message, UserInteractionState state) {
private void handleProductOrderRegistration(String fromWxid, String message, UserInteractionState state) {
switch (state.getCurrentProductOrderStep()) {
case STEP_ORDER_ID:
if (!message.matches("^\\d{10,20}$")) {
@@ -1326,7 +1303,7 @@ public class JDUtil {
}
}
// 构建确认信息模板
private String buildConfirmMessage(UserInteractionState state) {
return "📋 请确认登记信息:\n" +
"────────────────\n" +
@@ -1340,7 +1317,6 @@ public class JDUtil {
"回复【确认】提交,其他内容重新开始";
}
// 保存完整订单
private boolean saveFullProductOrder(UserInteractionState state, String fromWxid) {
try {
ProductOrder order = new ProductOrder();
@@ -1365,22 +1341,18 @@ public class JDUtil {
}
}
// 获取商品类型描述
private String getTypeDesc(String skuType) {
switch (skuType) {
case "1":
return "家电";
case "2":
return "数码";
case "3":
return "服饰";
default:
return "未知类型";
}
return switch (skuType) {
case "1" -> "家电";
case "2" -> "数码";
case "3" -> "服饰";
default -> "未知类型";
};
}
// 定义一个内部类来存储用户交互状态
@Getter
@Setter