1
This commit is contained in:
@@ -60,13 +60,15 @@ public class InstructionServiceImpl implements IInstructionService {
|
||||
if (input.startsWith("京") || menuKeywords().contains(input)) {
|
||||
result = Collections.singletonList(handleJingFen(input.replaceFirst("^京", "")));
|
||||
}
|
||||
// TF/H/生 生成类指令
|
||||
// TF/H/生/拼多多 生成类指令
|
||||
else if (input.startsWith("TF")) {
|
||||
result = Collections.singletonList(handleTF(input));
|
||||
} else if (input.startsWith("H")) {
|
||||
result = Collections.singletonList(handleH(input));
|
||||
} else if (input.startsWith("生")) {
|
||||
result = Collections.singletonList(handleSheng(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("单")) {
|
||||
result = handleRecordLikeMulti(input);
|
||||
} else if (input.startsWith("转链") || input.startsWith("文案") || input.startsWith("转")) {
|
||||
@@ -780,6 +782,103 @@ private String handleTF(String input) {
|
||||
return generateOrderText(String.join("\n", split));
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否为拼多多格式
|
||||
* 拼多多格式特征:第一行包含🕒符号,或者行数>=4
|
||||
*/
|
||||
private boolean isPDDFormat(String input) {
|
||||
if (input == null || input.trim().isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
String[] lines = input.split("\r?\n");
|
||||
if (lines.length >= 4) {
|
||||
// 检查第一行是否包含🕒符号
|
||||
if (lines[0].contains("🕒")) {
|
||||
return true;
|
||||
}
|
||||
// 或者检查是否有4行数据且第二行看起来像电话号码
|
||||
if (lines.length >= 4 && lines[1].trim().matches("^1[3-9]\\d{9}$")) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private String handlePDD(String input) {
|
||||
// 拼多多格式:
|
||||
// 🕒 林[1518]
|
||||
// 17284023487
|
||||
// 广西壮族自治区 柳州市 柳北区 绿城·杨柳郡柳园7栋[1518]
|
||||
// eb150
|
||||
|
||||
// 如果输入只是"拼多多",返回提示信息
|
||||
if (input.equals("拼多多") || input.trim().equals("拼多多")) {
|
||||
return "请粘贴拼多多格式数据:\n第一行:🕒 姓名[编号]\n第二行:电话\n第三行:地址[编号]\n第四行:型号\n\n示例:\n🕒 林[1518]\n17284023487\n广西壮族自治区 柳州市 柳北区 绿城·杨柳郡柳园7栋[1518]\neb150";
|
||||
}
|
||||
|
||||
// 移除"拼多多"前缀(如果有)
|
||||
String data = input.replaceFirst("^拼多多\\s*[\r\n]+", "").trim();
|
||||
|
||||
String[] lines = data.split("\r?\n");
|
||||
if (lines.length < 4) {
|
||||
return "拼多多格式错误,需要4行数据:\n1. 🕒 姓名[编号]\n2. 电话\n3. 地址[编号]\n4. 型号";
|
||||
}
|
||||
|
||||
// 解析第一行:🕒 林[1518] -> 提取姓名
|
||||
String nameLine = lines[0].trim();
|
||||
// 移除emoji和特殊字符,提取中文姓名
|
||||
String name = extractChinese(nameLine);
|
||||
// 提取编号(如果有)
|
||||
String suffix = extractBetweenBrackets(nameLine);
|
||||
|
||||
// 解析第二行:电话
|
||||
String phone = lines[1].trim();
|
||||
|
||||
// 解析第三行:地址 -> 去除编号括号
|
||||
String addressLine = lines[2].trim();
|
||||
// 移除编号括号和其中的内容
|
||||
String address = addressLine.replaceAll("\\[.*?]", "").trim();
|
||||
|
||||
// 解析第四行:型号
|
||||
String modelNumber = lines[3].trim();
|
||||
// 清洗型号
|
||||
modelNumber = sanitizeModel(modelNumber);
|
||||
|
||||
// 构建完整地址:姓名 + 固定号码(13068923963) + 地址 + 原始电话 + 转 + 编号
|
||||
// 格式:林 13068923963 广西壮族自治区 柳州市 柳北区 绿城·杨柳郡柳园7栋 17284023487转1518
|
||||
StringBuilder fullAddress = new StringBuilder();
|
||||
if (!name.isEmpty()) {
|
||||
fullAddress.append(name);
|
||||
}
|
||||
// 固定的号码
|
||||
fullAddress.append(" 13068923963 ");
|
||||
// 地址
|
||||
fullAddress.append(address);
|
||||
// 原始电话和编号
|
||||
fullAddress.append(" ").append(phone);
|
||||
if (!suffix.isEmpty()) {
|
||||
fullAddress.append("转").append(suffix);
|
||||
}
|
||||
|
||||
// 获取转链链接
|
||||
String jf = productJdConfigService.getJdUrlByProductModel(modelNumber);
|
||||
|
||||
// 构建"生"指令格式
|
||||
StringBuilder sheng = new StringBuilder();
|
||||
sheng.append("生\n")
|
||||
.append("PDD") // 分销标记:拼多多
|
||||
.append("\n")
|
||||
.append(modelNumber)
|
||||
.append("\n")
|
||||
.append(jf != null ? jf : "") // 转链链接
|
||||
.append("\n")
|
||||
.append("1") // 数量默认为1
|
||||
.append("\n")
|
||||
.append(fullAddress.toString());
|
||||
|
||||
return generateOrderText(sheng.toString());
|
||||
}
|
||||
|
||||
private String generateOrderText(String shengInput) {
|
||||
String[] split = shengInput.split("\n");
|
||||
// 第一行可能是 生 或 生{备注}
|
||||
|
||||
Reference in New Issue
Block a user