This commit is contained in:
2025-11-01 14:26:28 +08:00
parent 2961976f38
commit 29ea428462

View File

@@ -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");
// 第一行可能是 生 或 生{备注}