1
This commit is contained in:
@@ -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() : "";
|
||||
|
||||
Reference in New Issue
Block a user