1
This commit is contained in:
@@ -11,8 +11,12 @@ import org.slf4j.LoggerFactory;
|
|||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 公开订单提交控制器
|
* 公开订单提交控制器
|
||||||
@@ -88,6 +92,25 @@ public class PublicOrderController extends BaseController {
|
|||||||
return AjaxResult.error("只允许提交订单信息,指令必须以'单:'开头");
|
return AjaxResult.error("只允许提交订单信息,指令必须以'单:'开头");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 日期验证:只允许提交今天的订单
|
||||||
|
String orderDate = extractOrderDate(trimmedCmd);
|
||||||
|
if (orderDate == null) {
|
||||||
|
log.warn("日期验证失败: 无法解析订单日期");
|
||||||
|
log.info("公开订单提交 - 结束(拒绝)");
|
||||||
|
log.info("======================================");
|
||||||
|
return AjaxResult.error("订单格式错误,无法识别订单日期");
|
||||||
|
}
|
||||||
|
|
||||||
|
String today = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
||||||
|
if (!orderDate.equals(today)) {
|
||||||
|
log.warn("日期验证失败: 订单日期[{}]不是今天[{}]", orderDate, today);
|
||||||
|
log.info("公开订单提交 - 结束(拒绝)");
|
||||||
|
log.info("======================================");
|
||||||
|
return AjaxResult.error("只允许提交今天的订单,订单日期必须是: " + today);
|
||||||
|
}
|
||||||
|
|
||||||
|
log.info("日期验证通过: 订单日期[{}]", orderDate);
|
||||||
|
|
||||||
// 执行指令
|
// 执行指令
|
||||||
List<String> result;
|
List<String> result;
|
||||||
try {
|
try {
|
||||||
@@ -129,6 +152,43 @@ public class PublicOrderController extends BaseController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 从订单内容中提取日期
|
||||||
|
* 订单格式示例:
|
||||||
|
* 单:
|
||||||
|
* 2025-01-21 001
|
||||||
|
* 备注:...
|
||||||
|
*
|
||||||
|
* @param orderContent 订单内容
|
||||||
|
* @return 日期字符串(格式:yyyy-MM-dd),如果无法解析则返回null
|
||||||
|
*/
|
||||||
|
private String extractOrderDate(String orderContent) {
|
||||||
|
try {
|
||||||
|
// 匹配格式:YYYY-MM-DD(在"单:"之后的行)
|
||||||
|
Pattern pattern = Pattern.compile("单[::].*(\\d{4}-\\d{2}-\\d{2})");
|
||||||
|
Matcher matcher = pattern.matcher(orderContent.replaceAll("\\s+", " "));
|
||||||
|
if (matcher.find()) {
|
||||||
|
return matcher.group(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 尝试另一种格式:换行后直接是日期
|
||||||
|
String[] lines = orderContent.split("\\r?\\n");
|
||||||
|
if (lines.length >= 2) {
|
||||||
|
String secondLine = lines[1].trim();
|
||||||
|
Pattern datePattern = Pattern.compile("^(\\d{4}-\\d{2}-\\d{2})");
|
||||||
|
Matcher dateMatcher = datePattern.matcher(secondLine);
|
||||||
|
if (dateMatcher.find()) {
|
||||||
|
return dateMatcher.group(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("解析订单日期时发生异常: {}", e.getMessage());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取客户端真实IP地址
|
* 获取客户端真实IP地址
|
||||||
* 考虑代理和负载均衡的情况
|
* 考虑代理和负载均衡的情况
|
||||||
|
|||||||
Reference in New Issue
Block a user