This commit is contained in:
2025-10-27 22:42:14 +08:00
parent 4559638c3b
commit b7a730c640

View File

@@ -622,7 +622,24 @@ private String handleTF(String input) {
}
String address = split[5].trim();
// 与 JDUtil 一致:地址 24 小时去重校验(白名单放行
// 第一重判断:从分销标记中提取订单编号进行去重(如 JY202510093195
if (stringRedisTemplate != null) {
String orderNumber = extractOrderNumber(fenxiao);
if (orderNumber != null && !orderNumber.isEmpty()) {
String orderNumberKey = "order_number:" + orderNumber;
String existedOrderNumber = stringRedisTemplate.opsForValue().get(orderNumberKey);
if (existedOrderNumber != null) {
String warn = "[炸弹] [炸弹] [炸弹] 此订单编号(" + orderNumber + ")已经存在,请勿重复生成订单 [炸弹] [炸弹] [炸弹] ";
StringBuilder warnOut = new StringBuilder();
warnOut.append(warn).append("\n");
return warnOut.toString().trim();
}
// 记录订单编号24小时过期
stringRedisTemplate.opsForValue().set(orderNumberKey, orderNumber, 1, TimeUnit.DAYS);
}
}
// 第二重判断:地址 24 小时去重校验(白名单放行)
if (stringRedisTemplate != null) {
String addressKey = "address:" + address;
String existed = stringRedisTemplate.opsForValue().get(addressKey);
@@ -682,6 +699,23 @@ private String handleTF(String input) {
return out.toString();
}
/**
* 从分销标记中提取订单编号
* 例如:从 "H-TF(10.10 腾锋 JY202510093195)" 中提取 "JY202510093195"
*/
private String extractOrderNumber(String fenxiao) {
if (fenxiao == null || fenxiao.isEmpty()) {
return null;
}
// 匹配 JY 开头后跟数字的模式
Pattern pattern = Pattern.compile("JY\\d+");
Matcher matcher = pattern.matcher(fenxiao);
if (matcher.find()) {
return matcher.group();
}
return null;
}
private String extractChinese(String s) {
Matcher m = Pattern.compile("[\\u4E00-\\u9FA5]+").matcher(s);
return m.find() ? m.group() : "";