This commit is contained in:
雷欧(林平凡)
2025-06-11 15:04:44 +08:00
parent e2e139ae7e
commit 1579e570eb

View File

@@ -1707,7 +1707,7 @@ public class JDUtil {
return;
}
if (order == null || order.trim().isEmpty()) {
if (order.trim().isEmpty()) {
wxUtil.sendTextMessage(fromWxid, "输入格式为:\n 单\n分销标记\n型号\n转链链接\n数量\n地址", 1, fromWxid, false);
return;
}
@@ -1723,7 +1723,7 @@ public class JDUtil {
// 今天的日期
String today = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd "));
String redisKey = "order_count:" + today;
Integer count;
int count;
try {
// 从 Redis 获取当前日期的订单计数器
@@ -1732,9 +1732,9 @@ public class JDUtil {
logger.info("sendOrderToWxByOrderD.count beforeFor {}", count);
Integer num = 1;
int num = 1;
try {
num = Integer.valueOf(split[4].trim());
num = Integer.parseInt(split[4].trim());
} catch (NumberFormatException e) {
logger.error("sendOrderToWxByOrderD 订单数量格式错误,请输入正确的数字", e);
wxUtil.sendTextMessage(fromWxid, "订单数量格式错误,请输入正确的数字", 1, fromWxid, false);
@@ -2070,7 +2070,7 @@ public class JDUtil {
* @return 解析出的 LocalDate 对象,如果没有带日期则返回 null
*/
private LocalDate parseUserDateIfPresent(String input) {
if ((input.startsWith("慢单")|| input.startsWith("录单")) && !input.startsWith("")) {
if ((input.startsWith("慢单") || input.startsWith("录单")) && !input.startsWith("")) {
logger.info("开始解析用户输入的日期 {}", input);
String dateStr = input.replaceAll("慢单|录单", "").trim();
logger.info("解析出的日期 {}", dateStr);
@@ -2291,10 +2291,106 @@ public class JDUtil {
order.append("").append("\n").append("H-TF").append("\n").append(modelNumber).append("\n").append(" ").append("\n").append(quantityStr).append("\n").append(address);
sendOrderToWxByOrderD(order.toString(), fromWxid);
}
} else if (input.startsWith("H")) {
/*
* 示例输入:
* 陆霭杰[9130]
* 19592469028
* 广东省 广州市 从化区 太平镇康乐东路苏宁易购 (送前电联13922281001)[9130] 115-12lcs
* 提取出:
* 型号115-12lcs
* 陆霭杰13068923963广东省 广州市 从化区 太平镇康乐东路苏宁易购 (送前电联13922281001)派送安装联系19592469028转9130
*/
// 按换行符切割输入为数组
String[] parts = input.replace("H", "").split("\n");
if (parts.length < 3) {
wxUtil.sendTextMessage(fromWxid, "输入格式不正确,请确保包含三行数据", 1, fromWxid, false);
return;
}
// 第一行:姓名 + 编号
String nameLine = parts[0].trim(); // 如:陆霭杰[9130]
// 使用正则表达式提取中文字符作为收件人姓名
Pattern namePattern = Pattern.compile("[\\u4E00-\\u9FA5]+");
Matcher nameMatcher = namePattern.matcher(nameLine);
String name = "13068923963";
if (nameMatcher.find()) {
name = nameMatcher.group() + name;
}
// 提取编号 [9130]
String suffix = "";
int suffixStart = nameLine.indexOf('[');
int suffixEnd = nameLine.indexOf(']');
if (suffixStart != -1 && suffixEnd != -1 && suffixEnd > suffixStart) {
suffix = nameLine.substring(suffixStart + 1, suffixEnd); // 获取 [] 中的内容
}
// 第二行:电话号码
String phone = parts[1].trim(); // 如19592469028
// 第三行:地址 + 型号
String addressLine = parts[2].trim(); // 如:广东省 广州市 ... [9130] 115-12lcs
// 使用正则表达式提取中文字符作为地址主体
StringBuilder addressBuilder = new StringBuilder();
Pattern pattern = Pattern.compile("[\\u4E00-\\u9FA5]+");
Matcher matcher = pattern.matcher(addressLine);
if (matcher.find()) {
addressBuilder.append(matcher.group());
}
for (int i = 3; i < parts.length; i++) {
addressBuilder.append(parts[i]);
}
// 提取型号(最后一组非中文字符)
String modelNumber = "";
String[] addressParts = addressLine.split("\\s+");
for (String part : addressParts) {
if (!part.matches(".*[\u4E00-\u9FA5].*")) { // 不含中文的字段可能是型号
modelNumber = part;
}
}
// 清理掉地址中的编号 [9130] 和型号部分
String cleanedAddress = addressLine.replaceAll("\\$$.*?\$$", "") // 去除 []
.replace(modelNumber, "") // 去除型号
.replaceAll("\\s+", " ").trim();
// 拼接“安装派送联系”字段
String deliveryInfo = " 安装派送联系" + phone + "" + suffix;
// 最终地址
String fullAddress = cleanedAddress + deliveryInfo;
// 构造最终输出
StringBuilder order = new StringBuilder();
//单
//分销标记
//型号
//转链链接
//数量
//地址
// 分销标记
// 型号
// 转链链接
// 默认数量为1
order.append("\n")
.append("H\n") // 分销标记
.append(modelNumber).append("\n") // 型号
.append("\n") // 转链链接
.append("1\n").append(name).append(fullAddress); // 地址+联系信息
// 发送给微信
sendOrderToWxByOrderD(order.toString(), fromWxid);
}
}