You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
2.0 KiB
57 lines
2.0 KiB
public abstract class BaseApprover implements Approver {
|
|
private String approverName;
|
|
private ApprovalLevel level;
|
|
private Logger logger;
|
|
|
|
public BaseApprover(String approverName, ApprovalLevel level, Logger logger) {
|
|
this.approverName = approverName;
|
|
this.level = level;
|
|
this.logger = logger;
|
|
}
|
|
|
|
@Override
|
|
public ApprovalLevel getRequiredLevel() {
|
|
return level;
|
|
}
|
|
|
|
@Override
|
|
public String getApproverName() {
|
|
return approverName;
|
|
}
|
|
|
|
protected Logger getLogger() {
|
|
return logger;
|
|
}
|
|
|
|
protected abstract boolean canApprove(Order order);
|
|
|
|
@Override
|
|
public boolean approve(Order order, ApprovalContext context) {
|
|
logger.info(getApproverName() + " 正在审批订单: " + order.getOrderId());
|
|
|
|
if (!canApprove(order)) {
|
|
logger.warn(getApproverName() + " 拒绝审批订单: " + order.getOrderId());
|
|
context.addApprovalRecord(this, false, "不符合审批条件");
|
|
context.setCurrentStatus(ApprovalStatus.REJECTED);
|
|
context.setRejectionReason("不符合" + getApproverName() + "的审批条件");
|
|
return false;
|
|
}
|
|
|
|
// 子类可以提供额外的审批逻辑
|
|
boolean approved = performApproval(order, context);
|
|
|
|
if (approved) {
|
|
logger.info(getApproverName() + " 已批准订单: " + order.getOrderId());
|
|
context.addApprovalRecord(this, true, "审批通过");
|
|
} else {
|
|
logger.warn(getApproverName() + " 已拒绝订单: " + order.getOrderId());
|
|
context.addApprovalRecord(this, false, "审批拒绝");
|
|
context.setCurrentStatus(ApprovalStatus.REJECTED);
|
|
context.setRejectionReason(getApproverName() + "拒绝了订单");
|
|
}
|
|
|
|
return approved;
|
|
}
|
|
|
|
protected abstract boolean performApproval(Order order, ApprovalContext context);
|
|
} |