1
This commit is contained in:
@@ -76,8 +76,12 @@ public class InstructionServiceImpl implements IInstructionService {
|
||||
result = Collections.singletonList(handleTF(input));
|
||||
} else if (input.startsWith("H")) {
|
||||
result = Collections.singletonList(handleH(input));
|
||||
} else if (input.startsWith("W")) {
|
||||
result = Collections.singletonList(handleW(input));
|
||||
} else if (input.startsWith("生")) {
|
||||
result = Collections.singletonList(handleSheng(input));
|
||||
} else if (isPDDWCommand(input)) {
|
||||
result = Collections.singletonList(handlePDDW(input));
|
||||
} else if (input.equals("拼多多") || input.startsWith("拼多多\n") || input.startsWith("拼多多\r\n") || isPDDFormat(input)) {
|
||||
result = Collections.singletonList(handlePDD(input));
|
||||
} else if (input.startsWith("录单") || input.startsWith("慢单") || input.startsWith("慢搜") || input.startsWith("慢查") || input.startsWith("单")) {
|
||||
@@ -749,8 +753,22 @@ private String handleTF(String input) {
|
||||
|
||||
|
||||
private String handleH(String input) {
|
||||
String[] lines = input.replaceFirst("^H", "").split("\n");
|
||||
if (lines.length < 3) return "H 指令需三行:姓名[后缀]\n电话\n地址 … [后缀] 型号";
|
||||
return handleHLike(input, "H", "H");
|
||||
}
|
||||
|
||||
private String handleW(String input) {
|
||||
return handleHLike(input, "W", "W");
|
||||
}
|
||||
|
||||
private String handleHLike(String input, String commandKeyword, String distributionMark) {
|
||||
String cleaned = input.replaceFirst("^" + Pattern.quote(commandKeyword), "");
|
||||
if (cleaned.startsWith("\n")) {
|
||||
cleaned = cleaned.substring(1);
|
||||
}
|
||||
String[] lines = cleaned.split("\n");
|
||||
if (lines.length < 3) {
|
||||
return commandKeyword + " 指令需三行:姓名[后缀]\n电话\n地址 … [后缀] 型号";
|
||||
}
|
||||
|
||||
String nameLine = lines[0].trim();
|
||||
String phone = lines[1].trim();
|
||||
@@ -764,7 +782,7 @@ private String handleTF(String input) {
|
||||
String fullAddress = cleanedAddress + " 安装派送联系" + phone + (suffix.isEmpty() ? "" : "转" + suffix);
|
||||
|
||||
StringBuilder sheng = new StringBuilder();
|
||||
sheng.append("生\n").append("H\n").append(modelNumber).append("\n").append("\n") // 转链链接留空
|
||||
sheng.append("生\n").append(distributionMark).append("\n").append(modelNumber).append("\n").append("\n") // 转链链接留空
|
||||
.append("1\n").append(name).append(fullAddress);
|
||||
return generateOrderText(sheng.toString());
|
||||
}
|
||||
@@ -805,31 +823,55 @@ private String handleTF(String input) {
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean isPDDWCommand(String input) {
|
||||
if (input == null) {
|
||||
return false;
|
||||
}
|
||||
String trimmed = input.trim();
|
||||
if (trimmed.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
return trimmed.equals("拼多多 W") || trimmed.equals("拼多多W")
|
||||
|| trimmed.startsWith("拼多多 W") || trimmed.startsWith("拼多多W");
|
||||
}
|
||||
|
||||
private String handlePDD(String input) {
|
||||
return handlePDDWithMark(input, "拼多多", "PDD");
|
||||
}
|
||||
|
||||
private String handlePDDW(String input) {
|
||||
return handlePDDWithMark(input, "拼多多 W", "PDD-W");
|
||||
}
|
||||
|
||||
private String handlePDDWithMark(String input, String commandKeyword, String distributionMark) {
|
||||
// 拼多多新格式:
|
||||
// 拼多多251102-457567158704072
|
||||
// <指令>251102-457567158704072
|
||||
// 赵政委[6947]
|
||||
// 17283248756
|
||||
// 安徽省 宿州市 埇桥区 映月湾东区3栋103[6947]
|
||||
// eb150
|
||||
|
||||
//
|
||||
// 旧格式兼容:
|
||||
// 🕒 林[1518]
|
||||
// 17284023487
|
||||
// 广西壮族自治区 柳州市 柳北区 绿城·杨柳郡柳园7栋[1518]
|
||||
// eb150
|
||||
|
||||
// 如果输入只是"拼多多",返回提示信息
|
||||
if (input.equals("拼多多") || input.trim().equals("拼多多")) {
|
||||
return "请粘贴拼多多格式数据:\n新格式(推荐):\n拼多多251102-457567158704072\n赵政委[6947]\n17283248756\n安徽省 宿州市 埇桥区 映月湾东区3栋103[6947]\neb150\n\n旧格式(兼容):\n🕒 林[1518]\n17284023487\n广西壮族自治区 柳州市 柳北区 绿城·杨柳郡柳园7栋[1518]\neb150";
|
||||
if (input == null || input.trim().isEmpty()) {
|
||||
return buildPddHelpMessage(commandKeyword);
|
||||
}
|
||||
|
||||
String[] lines = input.split("\r?\n");
|
||||
String trimmedOriginal = input.trim();
|
||||
if (trimmedOriginal.equals(commandKeyword)) {
|
||||
return buildPddHelpMessage(commandKeyword);
|
||||
}
|
||||
|
||||
String normalizedInput = normalizePddInput(input, commandKeyword);
|
||||
String[] lines = normalizedInput.split("\r?\n");
|
||||
String thirdPartyOrderNo = null;
|
||||
int nameLineIndex = 0;
|
||||
boolean isNewFormat = false;
|
||||
|
||||
// 检查是否是新格式(第一行包含"拼多多")
|
||||
if (lines.length > 0) {
|
||||
String firstLine = lines[0].trim();
|
||||
|
||||
@@ -853,13 +895,13 @@ private String handleTF(String input) {
|
||||
nameLineIndex = 2; // 多行格式下,姓名在第三行
|
||||
} else {
|
||||
// 旧格式:移除"拼多多"前缀(如果有)
|
||||
String data = input.replaceFirst("^拼多多\\s*[\r\n]+", "").trim();
|
||||
String data = normalizedInput.replaceFirst("^拼多多\\s*[\r\n]+", "").trim();
|
||||
lines = data.split("\r?\n");
|
||||
nameLineIndex = 0;
|
||||
}
|
||||
} else {
|
||||
// 旧格式:移除"拼多多"前缀(如果有)
|
||||
String data = input.replaceFirst("^拼多多\\s*[\r\n]+", "").trim();
|
||||
String data = normalizedInput.replaceFirst("^拼多多\\s*[\r\n]+", "").trim();
|
||||
lines = data.split("\r?\n");
|
||||
nameLineIndex = 0;
|
||||
}
|
||||
@@ -869,12 +911,13 @@ private String handleTF(String input) {
|
||||
// 如果第三方单号在第二行(多行格式),需要6行;如果在第一行(一行格式),需要5行
|
||||
int requiredLines = isNewFormat ? (nameLineIndex == 2 ? 6 : 5) : 4;
|
||||
if (lines.length < requiredLines) {
|
||||
String commandLabel = commandKeyword.trim();
|
||||
String formatDesc = isNewFormat ?
|
||||
(nameLineIndex == 2 ?
|
||||
"\n1. 拼多多\n2. 订单号\n3. 姓名[编号]\n4. 电话\n5. 地址[编号]\n6. 型号" :
|
||||
"\n1. 拼多多订单号\n2. 姓名[编号]\n3. 电话\n4. 地址[编号]\n5. 型号") :
|
||||
"\n1. " + commandLabel + "\n2. 订单号\n3. 姓名[编号]\n4. 电话\n5. 地址[编号]\n6. 型号" :
|
||||
"\n1. " + commandLabel + " 订单号\n2. 姓名[编号]\n3. 电话\n4. 地址[编号]\n5. 型号") :
|
||||
"\n1. 🕒 姓名[编号]\n2. 电话\n3. 地址[编号]\n4. 型号";
|
||||
return "拼多多格式错误,需要" + requiredLines + "行数据:" + formatDesc;
|
||||
return commandLabel + " 格式错误,需要" + requiredLines + "行数据:" + formatDesc;
|
||||
}
|
||||
|
||||
// 解析姓名行
|
||||
@@ -930,13 +973,10 @@ private String handleTF(String input) {
|
||||
// 获取转链链接
|
||||
String jf = productJdConfigService.getJdUrlByProductModel(modelNumber);
|
||||
|
||||
// 构建分销标记:只保存 PDD,不包含第三方单号
|
||||
String distributionMark = "PDD";
|
||||
|
||||
// 构建"生"指令格式
|
||||
StringBuilder sheng = new StringBuilder();
|
||||
sheng.append("生\n")
|
||||
.append(distributionMark) // 分销标记:PDD
|
||||
.append(distributionMark) // 分销标记
|
||||
.append("\n")
|
||||
.append(modelNumber)
|
||||
.append("\n")
|
||||
@@ -950,6 +990,35 @@ private String handleTF(String input) {
|
||||
return generateOrderText(sheng.toString(), thirdPartyOrderNo);
|
||||
}
|
||||
|
||||
private String buildPddHelpMessage(String commandKeyword) {
|
||||
String commandLabel = commandKeyword.trim();
|
||||
String examplePrefix = commandLabel;
|
||||
return "请粘贴" + commandLabel + "格式数据:\n" +
|
||||
"新格式(推荐):\n" +
|
||||
examplePrefix + "251102-457567158704072\n" +
|
||||
"赵政委[6947]\n" +
|
||||
"17283248756\n" +
|
||||
"安徽省 宿州市 埇桥区 映月湾东区3栋103[6947]\n" +
|
||||
"eb150\n\n" +
|
||||
"旧格式(兼容):\n" +
|
||||
"🕒 林[1518]\n" +
|
||||
"17284023487\n" +
|
||||
"广西壮族自治区 柳州市 柳北区 绿城·杨柳郡柳园7栋[1518]\n" +
|
||||
"eb150";
|
||||
}
|
||||
|
||||
private String normalizePddInput(String input, String commandKeyword) {
|
||||
if (input == null) {
|
||||
return "";
|
||||
}
|
||||
String normalized = input;
|
||||
String trimmedKeyword = commandKeyword.trim();
|
||||
if ("拼多多 W".equals(trimmedKeyword)) {
|
||||
normalized = normalized.replaceFirst("^\\s*拼多多\\s*[Ww]", "拼多多");
|
||||
}
|
||||
return normalized;
|
||||
}
|
||||
|
||||
private String generateOrderText(String shengInput) {
|
||||
return generateOrderText(shengInput, null);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user