尝试重置
This commit is contained in:
@@ -81,43 +81,25 @@ public class JDUtil {
|
|||||||
private static final Logger logger = LoggerFactory.getLogger(JDUtil.class);
|
private static final Logger logger = LoggerFactory.getLogger(JDUtil.class);
|
||||||
private static final String INTERACTION_STATE_PREFIX = "interaction_state:";
|
private static final String INTERACTION_STATE_PREFIX = "interaction_state:";
|
||||||
private static final long TIMEOUT_MINUTES = 1;
|
private static final long TIMEOUT_MINUTES = 1;
|
||||||
private static final String WENAN_FANAN = "提供方法自己下单\n" +
|
private static final String WENAN_FANAN = "提供方法自己下单\n" + "全程都是自己的账号下单\n" + "标价就是下单的到手价\n" + "(不包含教程费)\n" + "本人有耐心,会一步一步提供教程\n" + "以后有什么质量问题都是用自己的账号走京东售后\n" + "\n" + "更新\n" + "\n" + "用你自己的账号下单\n" + "官方店铺 提供方法自己下单\n" + "不含教程费,价格不对不收费\n" + "教程费用私聊我问价\n" + "——————————————————————————————————————————\n" + "同行可长久合作,可提供神级家电线报\n" + "\n" + "配合家电线报可以自己下单,不用找代购和代下,订单和利润都掌握在自己手中。\n" + "\n" + "一次入会永久使用,包含家电帮,雷神价,韭菜帮,河南&湖南帮,各种暗号帮后返等内部独家家电线报\n" + "\n" + "JD采销采购不定时发放独家优惠券\n" + "\n" + "基本上你能看到的京东家电低价都是从这些渠道里面出来。\n" + "\n" + "2025年家电项目新方向,配合家电线报下单,秒省1K+。";
|
||||||
"全程都是自己的账号下单\n" +
|
private static final String WENAN_ZCXS = "\n" + "购买后,两小时内出库,物流会电话联系您,同时生成京东官方安装单。送装一体,无需担心。\n" + "\n" + "\n" + "1:全新正品,原包装未拆封(京东商城代购,就近直发)\n" + "2:可提供下单运单号与电子发票(发票在收到货后找我要)。\n" + "3:收货时查看是否有质量或运损问题。可拍照让京东免费申请换新。\n" + "4:下单后非质量问题不支持退款退货,强制退扣100元。\n" + "5:价格有浮动,不支持补差价,谢谢理解。\n" + "6:全国联保,全国统一安装标准。支持官方 400,服务号查询,假一赔十。\n";
|
||||||
"标价就是下单的到手价\n" +
|
private static final String FANAN_COMMON = "\n复制到薇,依次领券,到J东APP结算\n" + "换新选生活电器-除螨仪,可免回收\n";
|
||||||
"(不包含教程费)\n" +
|
/**
|
||||||
"本人有耐心,会一步一步提供教程\n" +
|
* 内部单号:
|
||||||
"以后有什么质量问题都是用自己的账号走京东售后\n" +
|
* 分销标记(标记用,勿改):
|
||||||
"\n" +
|
* 型号:
|
||||||
"更新\n" +
|
* <p>
|
||||||
"\n" +
|
* 价格:
|
||||||
"用你自己的账号下单\n" +
|
* <p>
|
||||||
"官方店铺 提供方法自己下单\n" +
|
* 后返:
|
||||||
"不含教程费,价格不对不收费\n" +
|
* <p>
|
||||||
"教程费用私聊我问价\n" +
|
* 地址:
|
||||||
"——————————————————————————————————————————\n" +
|
* <p>
|
||||||
"同行可长久合作,可提供神级家电线报\n" +
|
* 物流单号:
|
||||||
"\n" +
|
* <p>
|
||||||
"配合家电线报可以自己下单,不用找代购和代下,订单和利润都掌握在自己手中。\n" +
|
* 订单号:
|
||||||
"\n" +
|
*/
|
||||||
"一次入会永久使用,包含家电帮,雷神价,韭菜帮,河南&湖南帮,各种暗号帮后返等内部独家家电线报\n" +
|
private static final String WENAN_D = "内部单号:\n" + "\n {单号}" + "分销标记(标记用,勿改):\n" + "\n" + "型号:\n" + "\n" + "价格:\n" + "\n" + "后返:\n" + "\n" + "地址:\n" + "\n" + "物流链接:\n" + "\n" + "订单号:\n" + "\n" + "备注:\n" + "\n";
|
||||||
"\n" +
|
|
||||||
"JD采销采购不定时发放独家优惠券\n" +
|
|
||||||
"\n" +
|
|
||||||
"基本上你能看到的京东家电低价都是从这些渠道里面出来。\n" +
|
|
||||||
"\n" +
|
|
||||||
"2025年家电项目新方向,配合家电线报下单,秒省1K+。";
|
|
||||||
private static final String WENAN_ZCXS = "\n" +
|
|
||||||
"购买后,两小时内出库,物流会电话联系您,同时生成京东官方安装单。送装一体,无需担心。\n" +
|
|
||||||
"\n" +
|
|
||||||
"\n" +
|
|
||||||
"1:全新正品,原包装未拆封(京东商城代购,就近直发)\n" +
|
|
||||||
"2:可提供下单运单号与电子发票(发票在收到货后找我要)。\n" +
|
|
||||||
"3:收货时查看是否有质量或运损问题。可拍照让京东免费申请换新。\n" +
|
|
||||||
"4:下单后非质量问题不支持退款退货,强制退扣100元。\n" +
|
|
||||||
"5:价格有浮动,不支持补差价,谢谢理解。\n" +
|
|
||||||
"6:全国联保,全国统一安装标准。支持官方 400,服务号查询,假一赔十。\n";
|
|
||||||
private static final String FANAN_COMMON = "\n复制到薇,依次领券,到J东APP结算\n" +
|
|
||||||
"换新选生活电器-除螨仪,可免回收\n";
|
|
||||||
|
|
||||||
final WXUtil wxUtil;
|
final WXUtil wxUtil;
|
||||||
private final StringRedisTemplate redisTemplate;
|
private final StringRedisTemplate redisTemplate;
|
||||||
@@ -170,11 +152,7 @@ public class JDUtil {
|
|||||||
String address = matcher.group(4).trim();
|
String address = matcher.group(4).trim();
|
||||||
|
|
||||||
// 构造新地址格式
|
// 构造新地址格式
|
||||||
return String.format("%s 13068923963 %s联系客户%s转%s",
|
return String.format("%s 13068923963 %s联系客户%s转%s", name, address, phone, code);
|
||||||
name,
|
|
||||||
address,
|
|
||||||
phone,
|
|
||||||
code);
|
|
||||||
}
|
}
|
||||||
} catch (Exception ignored) {
|
} catch (Exception ignored) {
|
||||||
return "地址格式不匹配";
|
return "地址格式不匹配";
|
||||||
@@ -848,8 +826,7 @@ public class JDUtil {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 记录成功日志
|
// 记录成功日志
|
||||||
logger.info("礼金创建成功 - 用户: {}, SKU: {}, 金额: {}, 数量: {}",
|
logger.info("礼金创建成功 - 用户: {}, SKU: {}, 金额: {}, 数量: {}", wxid, skuId, amount, quantity);
|
||||||
wxid, skuId, amount, quantity);
|
|
||||||
// 生成转链
|
// 生成转链
|
||||||
String transferUrl = transfer(skuId, giftKey);
|
String transferUrl = transfer(skuId, giftKey);
|
||||||
wxUtil.sendTextMessage(wxid, "附带礼金的链接:\n" + transferUrl, 1, wxid, false);
|
wxUtil.sendTextMessage(wxid, "附带礼金的链接:\n" + transferUrl, 1, wxid, false);
|
||||||
@@ -908,9 +885,7 @@ public class JDUtil {
|
|||||||
|
|
||||||
// 6. 进入确认礼金步骤
|
// 6. 进入确认礼金步骤
|
||||||
state.setCurrentField("confirm");
|
state.setCurrentField("confirm");
|
||||||
wxUtil.sendTextMessage(wxid,
|
wxUtil.sendTextMessage(wxid, "是否需要开通礼金?\n回复 1 - 是\n回复 2 - 否", 1, wxid, false);
|
||||||
"是否需要开通礼金?\n回复 1 - 是\n回复 2 - 否",
|
|
||||||
1, wxid, false);
|
|
||||||
} else {
|
} else {
|
||||||
wxUtil.sendTextMessage(wxid, "未获取到商品数据,请检查链接格式", 1, wxid, false);
|
wxUtil.sendTextMessage(wxid, "未获取到商品数据,请检查链接格式", 1, wxid, false);
|
||||||
state.reset();
|
state.reset();
|
||||||
@@ -937,10 +912,7 @@ public class JDUtil {
|
|||||||
state.setCurrentStep(UserInteractionState.GiftMoneyStep.STEP_AMOUNT);
|
state.setCurrentStep(UserInteractionState.GiftMoneyStep.STEP_AMOUNT);
|
||||||
state.getCollectedFields().clear();
|
state.getCollectedFields().clear();
|
||||||
|
|
||||||
wxUtil.sendTextMessage(wxid,
|
wxUtil.sendTextMessage(wxid, "请输入开通金额(1-50元,支持小数点后两位):\n" + "示例:20.50", 1, wxid, false);
|
||||||
"请输入开通金额(1-50元,支持小数点后两位):\n" +
|
|
||||||
"示例:20.50",
|
|
||||||
1, wxid, false);
|
|
||||||
|
|
||||||
} else if ("2".equals(message)) {
|
} else if ("2".equals(message)) {
|
||||||
// 用户选择不开通礼金
|
// 用户选择不开通礼金
|
||||||
@@ -952,12 +924,8 @@ public class JDUtil {
|
|||||||
String finalWenAn = cacheMap.get("finalWenAn" + wxid);
|
String finalWenAn = cacheMap.get("finalWenAn" + wxid);
|
||||||
|
|
||||||
finalWenAn = (finalWenAn.replace(productInfo.getString("url"), transferUrl));
|
finalWenAn = (finalWenAn.replace(productInfo.getString("url"), transferUrl));
|
||||||
wxUtil.sendTextMessage(wxid,
|
wxUtil.sendTextMessage(wxid, "不开礼金,只转链的方案:\n", 1, wxid, false);
|
||||||
"不开礼金,只转链的方案:\n",
|
wxUtil.sendTextMessage(wxid, finalWenAn, 1, wxid, true);
|
||||||
1, wxid, false);
|
|
||||||
wxUtil.sendTextMessage(wxid,
|
|
||||||
finalWenAn,
|
|
||||||
1, wxid, true);
|
|
||||||
} else {
|
} else {
|
||||||
wxUtil.sendTextMessage(wxid, "未找到商品信息,请重新开始流程", 1, wxid, false);
|
wxUtil.sendTextMessage(wxid, "未找到商品信息,请重新开始流程", 1, wxid, false);
|
||||||
}
|
}
|
||||||
@@ -968,11 +936,7 @@ public class JDUtil {
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
// 无效输入
|
// 无效输入
|
||||||
wxUtil.sendTextMessage(wxid,
|
wxUtil.sendTextMessage(wxid, "请输入有效选项:\n" + "回复 1 - 开通礼金\n" + "回复 2 - 直接转链", 1, wxid, false);
|
||||||
"请输入有效选项:\n" +
|
|
||||||
"回复 1 - 开通礼金\n" +
|
|
||||||
"回复 2 - 直接转链",
|
|
||||||
1, wxid, false);
|
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("处理礼金确认异常 - 用户: {}", wxid, e);
|
logger.error("处理礼金确认异常 - 用户: {}", wxid, e);
|
||||||
@@ -1448,8 +1412,7 @@ public class JDUtil {
|
|||||||
//for (HashMap.Entry<String, String> entry : itemMap.entrySet()) {
|
//for (HashMap.Entry<String, String> entry : itemMap.entrySet()) {
|
||||||
//couponInfo.append(" ").append(entry.getKey()).append(": ").append(entry.getValue()).append("\n");
|
//couponInfo.append(" ").append(entry.getKey()).append(": ").append(entry.getValue()).append("\n");
|
||||||
//}
|
//}
|
||||||
couponInfo.append(" ").append("店铺:\n").append(itemMap.get("shopName")).append("\n").append(" 标题:\n").append(replaceAll).append("\n").append("自营 POP:\n").append(itemMap.get("owner").equals("g") ? " 自营 " : " POP ")
|
couponInfo.append(" ").append("店铺:\n").append(itemMap.get("shopName")).append("\n").append(" 标题:\n").append(replaceAll).append("\n").append("自营 POP:\n").append(itemMap.get("owner").equals("g") ? " 自营 " : " POP ").append("\n 佣金:\n").append(itemMap.get("commission")).append("\n").append("佣金比例:\n").append(itemMap.get("commissionShare"));
|
||||||
.append("\n 佣金:\n").append(itemMap.get("commission")).append("\n").append("佣金比例:\n").append(itemMap.get("commissionShare"));
|
|
||||||
|
|
||||||
|
|
||||||
//StringBuilder images = new StringBuilder();
|
//StringBuilder images = new StringBuilder();
|
||||||
@@ -1583,8 +1546,7 @@ public class JDUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 在JDUtil类中新增方法实现商品详情查询接口
|
// 在JDUtil类中新增方法实现商品详情查询接口
|
||||||
public UnionOpenGoodsBigfieldQueryResponse getUnionOpenGoodsBigfieldQueryResponse(String skuId) throws
|
public UnionOpenGoodsBigfieldQueryResponse getUnionOpenGoodsBigfieldQueryResponse(String skuId) throws Exception {
|
||||||
Exception {
|
|
||||||
JdClient client = new DefaultJdClient(SERVER_URL, ACCESS_TOKEN, LPF_APP_KEY_WZ, LPF_SECRET_KEY_WZ);
|
JdClient client = new DefaultJdClient(SERVER_URL, ACCESS_TOKEN, LPF_APP_KEY_WZ, LPF_SECRET_KEY_WZ);
|
||||||
|
|
||||||
UnionOpenGoodsBigfieldQueryRequest request = new UnionOpenGoodsBigfieldQueryRequest();
|
UnionOpenGoodsBigfieldQueryRequest request = new UnionOpenGoodsBigfieldQueryRequest();
|
||||||
@@ -1758,6 +1720,39 @@ public class JDUtil {
|
|||||||
return JSON.parseObject(json, UserInteractionState.class);
|
return JSON.parseObject(json, UserInteractionState.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void sendOrderToWxByOrderD(String order, String fromWxid) {
|
||||||
|
String temp = WENAN_D;
|
||||||
|
// 今天的日期
|
||||||
|
String today = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
||||||
|
String redisKey = "order_count:" + today;
|
||||||
|
Integer count = 1;
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 从 Redis 获取当前日期的订单计数器
|
||||||
|
String s = redisTemplate.opsForValue().get(redisKey);
|
||||||
|
if (s != null) {
|
||||||
|
count = Integer.parseInt(s) + 1; // 递增计数器
|
||||||
|
}
|
||||||
|
|
||||||
|
// 将新的计数器值保存回 Redis
|
||||||
|
redisTemplate.opsForValue().set(redisKey, String.valueOf(count), 1, TimeUnit.DAYS);
|
||||||
|
|
||||||
|
// 生成订单号
|
||||||
|
String orderID = today + String.format("%03d", count); // 格式化为 3 位数字,不足补零
|
||||||
|
|
||||||
|
// 替换模板中的占位符
|
||||||
|
temp = temp.replace("{单号}", orderID);
|
||||||
|
|
||||||
|
// 发送订单信息到微信
|
||||||
|
wxUtil.sendTextMessage(fromWxid, temp, 1, fromWxid, false);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error("生成订单号时发生异常 - 用户: {}, 日期: {}", fromWxid, today, e);
|
||||||
|
wxUtil.sendTextMessage(fromWxid, "生成订单号时发生异常,请重试", 1, fromWxid, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 定义一个内部类来存储用户交互状态
|
// 定义一个内部类来存储用户交互状态
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
|
|||||||
@@ -250,6 +250,11 @@ public class WxMessageConsumer {
|
|||||||
jdUtils.sendOrderToWxByOrderPDD(msg.replace("拼", ""), fromWxid);
|
jdUtils.sendOrderToWxByOrderPDD(msg.replace("拼", ""), fromWxid);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (msg.startsWith("单")) {
|
||||||
|
logger.info("消息以单开头,处理拼多多指令消息");
|
||||||
|
jdUtils.sendOrderToWxByOrderD(msg.replace("单", ""), fromWxid);
|
||||||
|
return;
|
||||||
|
}
|
||||||
logger.info("未命中前置指令,开始命中 Default 流程");
|
logger.info("未命中前置指令,开始命中 Default 流程");
|
||||||
jdUtils.sendOrderToWxByOrderDefault(msg, fromWxid);
|
jdUtils.sendOrderToWxByOrderDefault(msg, fromWxid);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user