1
This commit is contained in:
@@ -622,7 +622,24 @@ private String handleTF(String input) {
|
|||||||
}
|
}
|
||||||
String address = split[5].trim();
|
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) {
|
if (stringRedisTemplate != null) {
|
||||||
String addressKey = "address:" + address;
|
String addressKey = "address:" + address;
|
||||||
String existed = stringRedisTemplate.opsForValue().get(addressKey);
|
String existed = stringRedisTemplate.opsForValue().get(addressKey);
|
||||||
@@ -682,6 +699,23 @@ private String handleTF(String input) {
|
|||||||
return out.toString();
|
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) {
|
private String extractChinese(String s) {
|
||||||
Matcher m = Pattern.compile("[\\u4E00-\\u9FA5]+").matcher(s);
|
Matcher m = Pattern.compile("[\\u4E00-\\u9FA5]+").matcher(s);
|
||||||
return m.find() ? m.group() : "";
|
return m.find() ? m.group() : "";
|
||||||
|
|||||||
Reference in New Issue
Block a user