package com.fs.audit.chain;

/**
 * 抽象审核处理器
 * 责任链模式中的抽象处理器基类
 */
public abstract class AbstractAuditHandler implements AuditHandler {

    protected AuditHandler next;

    @Override
    public void setNext(AuditHandler next) {
        this.next = next;
    }

    @Override
    public AuditHandler getNext() {
        return this.next;
    }

    @Override
    public AuditResult handle(AuditContext context) {
        // 执行当前处理器的逻辑
        AuditResult result = doHandle(context);

        // 如果处理失败或不继续，直接返回
        if (!result.isSuccess() || !result.isContinueChain()) {
            return result;
        }

        // 传递给下一个处理器
        if (next != null) {
            return next.handle(context);
        }

        return result;
    }

    /**
     * 具体处理逻辑，由子类实现
     */
    protected abstract AuditResult doHandle(AuditContext context);
}

