public class VPApprover extends BaseApprover { private static final double MAX_APPROVAL_AMOUNT = 50000.0; private static final double MIN_APPROVAL_AMOUNT = 10000.01; // 大于总监的审批上限 public VPApprover(String approverName, Logger logger) { super(approverName, ApprovalLevel.VP, logger); } @Override protected boolean canApprove(Order order) { // VP只能审批金额在10000.01到50000之间的订单 return order.getAmount() > MIN_APPROVAL_AMOUNT && order.getAmount() <= MAX_APPROVAL_AMOUNT; } @Override protected boolean performApproval(Order order, ApprovalContext context) { // VP审批逻辑:更严格的审批条件 OrderValidator validator = new OrderValidator(); boolean basicValid = validator.validateOrder(order); // 检查订单历史(如果有的话) if (context.getApprovalHistory().size() > 0) { // 确保所有前置审批都通过 boolean allPreviousApproved = context.getApprovalHistory().stream() .allMatch(record -> record.approved); if (!allPreviousApproved) { getLogger().warn("存在未通过的前置审批,VP审批被拒绝"); return false; } } // 大额订单检查:超过25000的订单需要额外验证 if (order.getAmount() > 25000) { getLogger().info("大额订单,执行额外验证"); // 假设这里会调用额外的验证服务 } return basicValid; } }