基本完成转链。富贵指日可待!
This commit is contained in:
@@ -364,7 +364,7 @@ public class JDUtil {
|
||||
}
|
||||
if (!contents.isEmpty()) {
|
||||
for (StringBuilder stringBuilder : contents) {
|
||||
wxUtil.sendTextMessage(fromWxid, stringBuilder.toString(), 1, fromWxid);
|
||||
wxUtil.sendTextMessage(fromWxid, stringBuilder.toString(), 1, fromWxid, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -480,13 +480,13 @@ public class JDUtil {
|
||||
for (String s : split) {
|
||||
content.append("https://item.jd.com/").append(s.trim()).append(".html").append("\r\n");
|
||||
}
|
||||
wxUtil.sendTextMessage(fromWxid, content.toString(), 1, fromWxid);
|
||||
wxUtil.sendTextMessage(fromWxid, content.toString(), 1, fromWxid, false);
|
||||
content = new StringBuilder();
|
||||
content.append("手机端").append("\r\n");
|
||||
for (String s : split) {
|
||||
content.append("https://item.m.jd.com/product/").append(s.trim()).append(".html").append("\r\n");
|
||||
}
|
||||
wxUtil.sendTextMessage(fromWxid, content.toString(), 1, fromWxid);
|
||||
wxUtil.sendTextMessage(fromWxid, content.toString(), 1, fromWxid, false);
|
||||
content = new StringBuilder();
|
||||
contents.add(content);
|
||||
|
||||
@@ -517,7 +517,7 @@ public class JDUtil {
|
||||
}
|
||||
if (!contents.isEmpty()) {
|
||||
for (StringBuilder stringBuilder : contents) {
|
||||
wxUtil.sendTextMessage(fromWxid, stringBuilder.toString(), 1, fromWxid);
|
||||
wxUtil.sendTextMessage(fromWxid, stringBuilder.toString(), 1, fromWxid, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -672,12 +672,12 @@ public class JDUtil {
|
||||
|
||||
default:
|
||||
resetState(fromWxid, state);
|
||||
wxUtil.sendTextMessage(fromWxid, "流程异常,请重新开始", 1, fromWxid);
|
||||
wxUtil.sendTextMessage(fromWxid, "流程异常,请重新开始", 1, fromWxid, false);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("流程处理异常 - 用户: {}, 状态: {}", fromWxid, state, e);
|
||||
resetState(fromWxid, state);
|
||||
wxUtil.sendTextMessage(fromWxid, "处理异常,请重新开始", 1, fromWxid);
|
||||
wxUtil.sendTextMessage(fromWxid, "处理异常,请重新开始", 1, fromWxid, false);
|
||||
} finally {
|
||||
saveState(key, state);
|
||||
}
|
||||
@@ -709,7 +709,7 @@ public class JDUtil {
|
||||
if ("转".equals(message)) {
|
||||
state.setCurrentState(UserInteractionState.ProcessState.PRODUCT_PROMOTION);
|
||||
state.setCurrentField("content");
|
||||
wxUtil.sendTextMessage(wxid, "请输入推广方案(包含商品链接):", 1, wxid);
|
||||
wxUtil.sendTextMessage(wxid, "请输入推广方案(包含商品链接):", 1, wxid, false);
|
||||
logger.info("进入转链流程 - 用户: {}", wxid);
|
||||
}
|
||||
}
|
||||
@@ -724,7 +724,7 @@ public class JDUtil {
|
||||
|
||||
private void handleGiftMoneyFlow(String wxid, String message, UserInteractionState state) {
|
||||
if (!state.validateStep(state.getCurrentStep())) {
|
||||
wxUtil.sendTextMessage(wxid, "流程顺序异常,请重新开始", 1, wxid);
|
||||
wxUtil.sendTextMessage(wxid, "流程顺序异常,请重新开始", 1, wxid, false);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -739,30 +739,30 @@ public class JDUtil {
|
||||
|
||||
default:
|
||||
state.setCurrentStep(STEP_AMOUNT);
|
||||
wxUtil.sendTextMessage(wxid, "请输入金额(1-50元):", 1, wxid);
|
||||
wxUtil.sendTextMessage(wxid, "请输入金额(1-50元):", 1, wxid, false);
|
||||
}
|
||||
}
|
||||
|
||||
private void processAmountInput(String wxid, String message, UserInteractionState state) {
|
||||
if (!isValidAmount(message)) {
|
||||
wxUtil.sendTextMessage(wxid, "金额格式错误,请输入1-50元", 1, wxid);
|
||||
wxUtil.sendTextMessage(wxid, "金额格式错误,请输入1-50元", 1, wxid, false);
|
||||
return;
|
||||
}
|
||||
|
||||
state.getCollectedFields().put("amount", message);
|
||||
state.setCurrentStep(STEP_QUANTITY);
|
||||
wxUtil.sendTextMessage(wxid, "请输入数量(1-100):", 1, wxid);
|
||||
wxUtil.sendTextMessage(wxid, "请输入数量(1-100):", 1, wxid, false);
|
||||
}
|
||||
|
||||
private void processQuantityInput(String wxid, String message, UserInteractionState state) {
|
||||
if (!isValidQuantity(message)) {
|
||||
wxUtil.sendTextMessage(wxid, "数量格式错误,请输入1-100的整数", 1, wxid);
|
||||
wxUtil.sendTextMessage(wxid, "数量格式错误,请输入1-100的整数", 1, wxid, false);
|
||||
return;
|
||||
}
|
||||
String cachedData = cacheMap.get("productData" + wxid);
|
||||
String finalWenAn = cacheMap.get("finalWenAn" + wxid);
|
||||
if (cachedData == null) {
|
||||
wxUtil.sendTextMessage(wxid, "数据丢失,请重新开始流程", 1, wxid);
|
||||
wxUtil.sendTextMessage(wxid, "数据丢失,请重新开始流程", 1, wxid, false);
|
||||
resetState(wxid, state);
|
||||
return;
|
||||
}
|
||||
@@ -777,7 +777,7 @@ public class JDUtil {
|
||||
|
||||
String giftKey = createGiftCoupon(skuId, amount, quantity, owner, skuName);
|
||||
if (giftKey == null) {
|
||||
wxUtil.sendTextMessage(wxid, "礼金创建失败,请重试", 1, wxid);
|
||||
wxUtil.sendTextMessage(wxid, "礼金创建失败,请重试", 1, wxid, false);
|
||||
return;
|
||||
}
|
||||
// 记录成功日志
|
||||
@@ -785,15 +785,15 @@ public class JDUtil {
|
||||
wxid, skuId, amount, quantity);
|
||||
// 生成转链
|
||||
String transferUrl = transfer(skuId, giftKey);
|
||||
wxUtil.sendTextMessage(wxid, "附带礼金的链接:\n" + transferUrl, 1, wxid);
|
||||
wxUtil.sendTextMessage(wxid, "附带礼金的方案:\n", 1, wxid);
|
||||
wxUtil.sendTextMessage(wxid, "附带礼金的链接:\n" + transferUrl, 1, wxid, false);
|
||||
wxUtil.sendTextMessage(wxid, "附带礼金的方案:\n", 1, wxid, false);
|
||||
|
||||
wxUtil.sendTextMessage(wxid, finalWenAn.replaceAll(jsonObject.getString("url"), transferUrl), 1, wxid);
|
||||
wxUtil.sendTextMessage(wxid, finalWenAn.replaceAll(jsonObject.getString("url"), transferUrl), 1, wxid, false);
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
logger.error("礼金处理异常 - 用户: {}", wxid, e);
|
||||
wxUtil.sendTextMessage(wxid, "处理异常,请重试", 1, wxid);
|
||||
wxUtil.sendTextMessage(wxid, "处理异常,请重试", 1, wxid, false);
|
||||
} finally {
|
||||
resetState(wxid, state);
|
||||
cacheMap.remove("text" + wxid);
|
||||
@@ -820,7 +820,7 @@ public class JDUtil {
|
||||
|
||||
// 3. 发送文本内容
|
||||
for (String text : contentResult.get("text")) {
|
||||
wxUtil.sendTextMessage(wxid, text, 1, wxid);
|
||||
wxUtil.sendTextMessage(wxid, text, 1, wxid, true);
|
||||
}
|
||||
|
||||
// 4. 发送图片(如果有)
|
||||
@@ -853,14 +853,14 @@ public class JDUtil {
|
||||
}
|
||||
wxUtil.sendTextMessage(wxid,
|
||||
"是否需要开通礼金?\n回复 1 - 是\n回复 2 - 否",
|
||||
1, wxid);
|
||||
1, wxid, false);
|
||||
} else {
|
||||
wxUtil.sendTextMessage(wxid, "未获取到商品数据,请检查链接格式", 1, wxid);
|
||||
wxUtil.sendTextMessage(wxid, "未获取到商品数据,请检查链接格式", 1, wxid, false);
|
||||
state.reset();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("处理推广内容异常 - 用户: {}", wxid, e);
|
||||
wxUtil.sendTextMessage(wxid, "处理内容时发生异常,请重试", 1, wxid);
|
||||
wxUtil.sendTextMessage(wxid, "处理内容时发生异常,请重试", 1, wxid, false);
|
||||
state.reset();
|
||||
}
|
||||
}
|
||||
@@ -883,7 +883,7 @@ public class JDUtil {
|
||||
wxUtil.sendTextMessage(wxid,
|
||||
"请输入开通金额(1-50元,支持小数点后两位):\n" +
|
||||
"示例:20.50",
|
||||
1, wxid);
|
||||
1, wxid, false);
|
||||
|
||||
} else if ("2".equals(message)) {
|
||||
// 用户选择不开通礼金
|
||||
@@ -897,12 +897,12 @@ public class JDUtil {
|
||||
finalWenAn = (finalWenAn.replace(productInfo.getString("url"), transferUrl));
|
||||
wxUtil.sendTextMessage(wxid,
|
||||
"不开礼金,只转链的方案:\n",
|
||||
1, wxid);
|
||||
1, wxid, false);
|
||||
wxUtil.sendTextMessage(wxid,
|
||||
finalWenAn,
|
||||
1, wxid);
|
||||
1, wxid, false);
|
||||
} else {
|
||||
wxUtil.sendTextMessage(wxid, "未找到商品信息,请重新开始流程", 1, wxid);
|
||||
wxUtil.sendTextMessage(wxid, "未找到商品信息,请重新开始流程", 1, wxid, false);
|
||||
}
|
||||
state.reset();
|
||||
cacheMap.remove("productData" + wxid);
|
||||
@@ -915,11 +915,11 @@ public class JDUtil {
|
||||
"请输入有效选项:\n" +
|
||||
"回复 1 - 开通礼金\n" +
|
||||
"回复 2 - 直接转链",
|
||||
1, wxid);
|
||||
1, wxid, false);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("处理礼金确认异常 - 用户: {}", wxid, e);
|
||||
wxUtil.sendTextMessage(wxid, "处理请求时发生异常,请重试", 1, wxid);
|
||||
wxUtil.sendTextMessage(wxid, "处理请求时发生异常,请重试", 1, wxid, false);
|
||||
state.reset();
|
||||
}
|
||||
}
|
||||
@@ -934,7 +934,7 @@ public class JDUtil {
|
||||
private void sendStepPrompt(String wxid, int step, int totalSteps) {
|
||||
String progress = String.format("[%d/%d] ", step, totalSteps);
|
||||
String message = progress + "请输入礼金金额(示例:20.50)";
|
||||
wxUtil.sendTextMessage(wxid, message, 1, wxid);
|
||||
wxUtil.sendTextMessage(wxid, message, 1, wxid, false);
|
||||
}
|
||||
|
||||
private void createPromotionWithGift(String fromWxid, String message) {
|
||||
@@ -943,13 +943,13 @@ public class JDUtil {
|
||||
// 修改createPromotionWithGift方法中的校验逻辑
|
||||
if (!state.validateStep(STEP_CONFIRM_GIFT)) {
|
||||
logger.warn("状态校验失败,预期步骤:{} 实际步骤:{}", STEP_CONFIRM_GIFT, state.getCurrentStep());
|
||||
wxUtil.sendTextMessage(fromWxid, "流程顺序异常,请重新开始", 1, fromWxid);
|
||||
wxUtil.sendTextMessage(fromWxid, "流程顺序异常,请重新开始", 1, fromWxid, false);
|
||||
return;
|
||||
}
|
||||
// 修改点3:在createPromotionWithGift方法开始处增加状态校验
|
||||
if (state == null || state.getCurrentStep() == null) {
|
||||
logger.warn("非法状态访问: {}", fromWxid);
|
||||
wxUtil.sendTextMessage(fromWxid, "⚠️ 会话超时,请重新开始流程", 1, fromWxid);
|
||||
wxUtil.sendTextMessage(fromWxid, "⚠️ 会话超时,请重新开始流程", 1, fromWxid, false);
|
||||
return;
|
||||
} else {
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
@@ -969,7 +969,7 @@ public class JDUtil {
|
||||
case STEP_CONFIRM_GIFT:
|
||||
if ("1".equals(message)) {
|
||||
state.setCurrentStep(STEP_AMOUNT);
|
||||
wxUtil.sendTextMessage(fromWxid, "请输入开通金额(元):", 1, fromWxid);
|
||||
wxUtil.sendTextMessage(fromWxid, "请输入开通金额(元):", 1, fromWxid, false);
|
||||
} else if ("2".equals(message)) {
|
||||
// 不开通礼金,直接生成转链
|
||||
String cachedData = cacheMap.get("productData" + fromWxid);
|
||||
@@ -977,25 +977,25 @@ public class JDUtil {
|
||||
JSONObject jsonObject = JSONObject.parseObject(cachedData);
|
||||
String skuId = jsonObject.getString("materialUrl");
|
||||
String transferUrl = transfer(skuId, null);
|
||||
wxUtil.sendTextMessage(fromWxid, "转链后的链接:\n" + transferUrl, 1, fromWxid);
|
||||
wxUtil.sendTextMessage(fromWxid, "转链后的链接:\n" + transferUrl, 1, fromWxid, false);
|
||||
} else {
|
||||
wxUtil.sendTextMessage(fromWxid, "未找到缓存的商品链接,请重新开始流程", 1, fromWxid);
|
||||
wxUtil.sendTextMessage(fromWxid, "未找到缓存的商品链接,请重新开始流程", 1, fromWxid, false);
|
||||
}
|
||||
state.reset();
|
||||
userInteractionStates.put(key, state); // 在外部保存
|
||||
} else {
|
||||
wxUtil.sendTextMessage(fromWxid, "无效的选择,请重新输入:\n回复 1 - 是\n回复 2 - 否", 1, fromWxid);
|
||||
wxUtil.sendTextMessage(fromWxid, "无效的选择,请重新输入:\n回复 1 - 是\n回复 2 - 否", 1, fromWxid, false);
|
||||
}
|
||||
break;
|
||||
|
||||
case STEP_AMOUNT:
|
||||
logger.debug("用户 {} 输入金额:{}", fromWxid, message);
|
||||
if (message == null || message.trim().isEmpty()) {
|
||||
wxUtil.sendTextMessage(fromWxid, "金额不能为空,请输入数字(如:100.00)", 1, fromWxid);
|
||||
wxUtil.sendTextMessage(fromWxid, "金额不能为空,请输入数字(如:100.00)", 1, fromWxid, false);
|
||||
return;
|
||||
}
|
||||
if (!isValidAmount(message)) {
|
||||
wxUtil.sendTextMessage(fromWxid, "金额格式错误,请输入数字(如:100.00)", 1, fromWxid);
|
||||
wxUtil.sendTextMessage(fromWxid, "金额格式错误,请输入数字(如:100.00)", 1, fromWxid, false);
|
||||
return;
|
||||
}
|
||||
double amount = Double.parseDouble(message);
|
||||
@@ -1003,27 +1003,27 @@ public class JDUtil {
|
||||
state.getCollectedFields().put("amount", formattedAmount);
|
||||
state.setCurrentStep(STEP_QUANTITY);
|
||||
userInteractionStates.put(key, state); // ▼▼▼ 保存点2 ▼▼▼
|
||||
wxUtil.sendTextMessage(fromWxid, "请输入数量(1-100):", 1, fromWxid);
|
||||
wxUtil.sendTextMessage(fromWxid, "请输入数量(1-100):", 1, fromWxid, false);
|
||||
sendStepPrompt(fromWxid, 1, 3);
|
||||
break;
|
||||
|
||||
case STEP_QUANTITY:
|
||||
logger.debug("用户 {} 输入数量:{}", fromWxid, message); // 新增
|
||||
if (!isValidQuantity(message)) {
|
||||
wxUtil.sendTextMessage(fromWxid, "数量格式错误,请输入整数", 1, fromWxid);
|
||||
wxUtil.sendTextMessage(fromWxid, "数量格式错误,请输入整数", 1, fromWxid, false);
|
||||
return;
|
||||
}
|
||||
|
||||
int quantity = Integer.parseInt(message);
|
||||
if (quantity < 1 || quantity > 100) {
|
||||
wxUtil.sendTextMessage(fromWxid, "数量需在1-100之间", 1, fromWxid);
|
||||
wxUtil.sendTextMessage(fromWxid, "数量需在1-100之间", 1, fromWxid, false);
|
||||
return;
|
||||
}
|
||||
|
||||
// 从缓存中获取 amount
|
||||
String amountStr = state.getCollectedFields().get("amount");
|
||||
if (amountStr == null || amountStr.trim().isEmpty()) {
|
||||
wxUtil.sendTextMessage(fromWxid, "未找到金额,请重新开始流程", 1, fromWxid);
|
||||
wxUtil.sendTextMessage(fromWxid, "未找到金额,请重新开始流程", 1, fromWxid, false);
|
||||
state.reset();
|
||||
userInteractionStates.put(key, state); // 在外部保存
|
||||
return;
|
||||
@@ -1043,7 +1043,7 @@ public class JDUtil {
|
||||
String giftKey = createGiftCoupon(skuId, amount, quantity, owner, skuName);
|
||||
if (giftKey == null) {
|
||||
logger.error("用户 {} 礼金创建失败:SKU={}, 金额={}元,数量={}", fromWxid, skuId, amount, quantity); // 新增
|
||||
wxUtil.sendTextMessage(fromWxid, "❌ 礼金创建失败,请检查商品是否符合要求", 1, fromWxid);
|
||||
wxUtil.sendTextMessage(fromWxid, "❌ 礼金创建失败,请检查商品是否符合要求", 1, fromWxid, false);
|
||||
state.reset();
|
||||
userInteractionStates.put(key, state); // 在外部保存
|
||||
|
||||
@@ -1055,13 +1055,13 @@ public class JDUtil {
|
||||
|
||||
// 生成转链
|
||||
String transferUrl = transfer(skuId, giftKey);
|
||||
wxUtil.sendTextMessage(fromWxid, "附带礼金的链接:\n" + transferUrl, 1, fromWxid);
|
||||
wxUtil.sendTextMessage(fromWxid, "附带礼金的链接:\n" + transferUrl, 1, fromWxid, false);
|
||||
|
||||
wxUtil.sendTextMessage(fromWxid, "附带礼金的方案:\n" + finalWenAn.replaceAll(jsonObject.getString("url"), transferUrl), 1, fromWxid);
|
||||
wxUtil.sendTextMessage(fromWxid, "附带礼金的方案:\n" + finalWenAn.replaceAll(jsonObject.getString("url"), transferUrl), 1, fromWxid, false);
|
||||
state.reset();
|
||||
userInteractionStates.put(key, state); // 在外部保存
|
||||
} else {
|
||||
wxUtil.sendTextMessage(fromWxid, "未找到缓存的商品链接,请重新开始流程", 1, fromWxid);
|
||||
wxUtil.sendTextMessage(fromWxid, "未找到缓存的商品链接,请重新开始流程", 1, fromWxid, false);
|
||||
state.reset();
|
||||
userInteractionStates.put(key, state); // 在外部保存
|
||||
}
|
||||
@@ -1069,12 +1069,12 @@ public class JDUtil {
|
||||
|
||||
default:
|
||||
state.setCurrentStep(STEP_CONFIRM_GIFT);
|
||||
wxUtil.sendTextMessage(fromWxid, "是否需要开通礼金?\n回复 1 - 是\n回复 2 - 否", 1, fromWxid);
|
||||
wxUtil.sendTextMessage(fromWxid, "是否需要开通礼金?\n回复 1 - 是\n回复 2 - 否", 1, fromWxid, false);
|
||||
break;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("转链和礼金流程异常,用户 {} 当前步骤:{}", fromWxid, state.getCurrentStep(), e);
|
||||
wxUtil.sendTextMessage(fromWxid, "❌ 系统异常,请稍后重试", 1, fromWxid);
|
||||
wxUtil.sendTextMessage(fromWxid, "❌ 系统异常,请稍后重试", 1, fromWxid, false);
|
||||
state.reset();
|
||||
userInteractionStates.put(key, state); // 在外部保存
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user