parent
e7d9258648
commit
8c4ffbb387
@ -0,0 +1,57 @@
|
||||
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);
|
||||
}
|
||||
Loading…
Reference in new issue