From 39301f49c3f9a5068c2ba8142bd440a25bc13036 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E6=AC=A7=EF=BC=88=E6=9E=97=E5=B9=B3=E5=87=A1?= =?UTF-8?q?=EF=BC=89?= Date: Thu, 13 Mar 2025 17:58:32 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8F=9C=E5=8D=95=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.cache/.Apifox_Helper/.toolWindow.db | Bin 0 -> 106496 bytes .idea/jpa-buddy-datasource.xml | 9 ++ .idea/sqldialects.xml | 6 + .../java/cn/van/business/util/JDUtil.java | 106 +++++++----------- 4 files changed, 54 insertions(+), 67 deletions(-) create mode 100644 .idea/.cache/.Apifox_Helper/.toolWindow.db create mode 100644 .idea/jpa-buddy-datasource.xml create mode 100644 .idea/sqldialects.xml diff --git a/.idea/.cache/.Apifox_Helper/.toolWindow.db b/.idea/.cache/.Apifox_Helper/.toolWindow.db new file mode 100644 index 0000000000000000000000000000000000000000..c1a9a641be31b4f065c609d53a920e64d9ddbc50 GIT binary patch literal 106496 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 Z2tWV=5P$##AOHafKmY;|fWQYO@V}0VzRCaq literal 0 HcmV?d00001 diff --git a/.idea/jpa-buddy-datasource.xml b/.idea/jpa-buddy-datasource.xml new file mode 100644 index 0000000..d3c8835 --- /dev/null +++ b/.idea/jpa-buddy-datasource.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml new file mode 100644 index 0000000..8cb5299 --- /dev/null +++ b/.idea/sqldialects.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/main/java/cn/van/business/util/JDUtil.java b/src/main/java/cn/van/business/util/JDUtil.java index e4a30ff..01a1540 100644 --- a/src/main/java/cn/van/business/util/JDUtil.java +++ b/src/main/java/cn/van/business/util/JDUtil.java @@ -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 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 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 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 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