尝试重置

This commit is contained in:
Leo
2025-04-08 20:06:29 +08:00
parent aa0d15f64d
commit bb044fe7fa
2 changed files with 66 additions and 66 deletions

View File

@@ -81,43 +81,25 @@ public class JDUtil {
private static final Logger logger = LoggerFactory.getLogger(JDUtil.class);
private static final String INTERACTION_STATE_PREFIX = "interaction_state:";
private static final long TIMEOUT_MINUTES = 1;
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+。";
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";
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+。";
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";
/**
* 内部单号:
* 分销标记(标记用,勿改):
* 型号:
* <p>
* 价格:
* <p>
* 后返:
* <p>
* 地址:
* <p>
* 物流单号:
* <p>
* 订单号:
*/
private static final String WENAN_D = "内部单号:\n" + "\n {单号}" + "分销标记(标记用,勿改):\n" + "\n" + "型号:\n" + "\n" + "价格:\n" + "\n" + "后返:\n" + "\n" + "地址:\n" + "\n" + "物流链接:\n" + "\n" + "订单号:\n" + "\n" + "备注:\n" + "\n";
final WXUtil wxUtil;
private final StringRedisTemplate redisTemplate;
@@ -170,11 +152,7 @@ public class JDUtil {
String address = matcher.group(4).trim();
// 构造新地址格式
return String.format("%s 13068923963 %s联系客户%s转%s",
name,
address,
phone,
code);
return String.format("%s 13068923963 %s联系客户%s转%s", name, address, phone, code);
}
} catch (Exception ignored) {
return "地址格式不匹配";
@@ -848,8 +826,7 @@ public class JDUtil {
return;
}
// 记录成功日志
logger.info("礼金创建成功 - 用户: {}, SKU: {}, 金额: {}, 数量: {}",
wxid, skuId, amount, quantity);
logger.info("礼金创建成功 - 用户: {}, SKU: {}, 金额: {}, 数量: {}", wxid, skuId, amount, quantity);
// 生成转链
String transferUrl = transfer(skuId, giftKey);
wxUtil.sendTextMessage(wxid, "附带礼金的链接:\n" + transferUrl, 1, wxid, false);
@@ -908,9 +885,7 @@ public class JDUtil {
// 6. 进入确认礼金步骤
state.setCurrentField("confirm");
wxUtil.sendTextMessage(wxid,
"是否需要开通礼金?\n回复 1 - 是\n回复 2 - 否",
1, wxid, false);
wxUtil.sendTextMessage(wxid, "是否需要开通礼金?\n回复 1 - 是\n回复 2 - 否", 1, wxid, false);
} else {
wxUtil.sendTextMessage(wxid, "未获取到商品数据,请检查链接格式", 1, wxid, false);
state.reset();
@@ -937,10 +912,7 @@ public class JDUtil {
state.setCurrentStep(UserInteractionState.GiftMoneyStep.STEP_AMOUNT);
state.getCollectedFields().clear();
wxUtil.sendTextMessage(wxid,
"请输入开通金额1-50元支持小数点后两位\n" +
"示例20.50",
1, wxid, false);
wxUtil.sendTextMessage(wxid, "请输入开通金额1-50元支持小数点后两位\n" + "示例20.50", 1, wxid, false);
} else if ("2".equals(message)) {
// 用户选择不开通礼金
@@ -952,12 +924,8 @@ public class JDUtil {
String finalWenAn = cacheMap.get("finalWenAn" + wxid);
finalWenAn = (finalWenAn.replace(productInfo.getString("url"), transferUrl));
wxUtil.sendTextMessage(wxid,
"不开礼金,只转链的方案:\n",
1, wxid, false);
wxUtil.sendTextMessage(wxid,
finalWenAn,
1, wxid, true);
wxUtil.sendTextMessage(wxid, "不开礼金,只转链的方案:\n", 1, wxid, false);
wxUtil.sendTextMessage(wxid, finalWenAn, 1, wxid, true);
} else {
wxUtil.sendTextMessage(wxid, "未找到商品信息,请重新开始流程", 1, wxid, false);
}
@@ -968,11 +936,7 @@ public class JDUtil {
} else {
// 无效输入
wxUtil.sendTextMessage(wxid,
"请输入有效选项:\n" +
"回复 1 - 开通礼金\n" +
"回复 2 - 直接转链",
1, wxid, false);
wxUtil.sendTextMessage(wxid, "请输入有效选项:\n" + "回复 1 - 开通礼金\n" + "回复 2 - 直接转链", 1, wxid, false);
}
} catch (Exception e) {
logger.error("处理礼金确认异常 - 用户: {}", wxid, e);
@@ -1448,8 +1412,7 @@ public class JDUtil {
//for (HashMap.Entry<String, String> entry : itemMap.entrySet()) {
//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 ")
.append("\n 佣金:\n").append(itemMap.get("commission")).append("\n").append("佣金比例:\n").append(itemMap.get("commissionShare"));
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"));
//StringBuilder images = new StringBuilder();
@@ -1583,8 +1546,7 @@ public class JDUtil {
}
// 在JDUtil类中新增方法实现商品详情查询接口
public UnionOpenGoodsBigfieldQueryResponse getUnionOpenGoodsBigfieldQueryResponse(String skuId) throws
Exception {
public UnionOpenGoodsBigfieldQueryResponse getUnionOpenGoodsBigfieldQueryResponse(String skuId) throws Exception {
JdClient client = new DefaultJdClient(SERVER_URL, ACCESS_TOKEN, LPF_APP_KEY_WZ, LPF_SECRET_KEY_WZ);
UnionOpenGoodsBigfieldQueryRequest request = new UnionOpenGoodsBigfieldQueryRequest();
@@ -1758,6 +1720,39 @@ public class JDUtil {
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
@Setter

View File

@@ -250,6 +250,11 @@ public class WxMessageConsumer {
jdUtils.sendOrderToWxByOrderPDD(msg.replace("", ""), fromWxid);
return;
}
if (msg.startsWith("")) {
logger.info("消息以单开头,处理拼多多指令消息");
jdUtils.sendOrderToWxByOrderD(msg.replace("", ""), fromWxid);
return;
}
logger.info("未命中前置指令,开始命中 Default 流程");
jdUtils.sendOrderToWxByOrderDefault(msg, fromWxid);
}