package com.bonus.material.approval.annotation;

import java.lang.annotation.*;

/**
 * 审批注解
 * 用于标记需要审批的业务方法
 * 
 * @author syruan
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ApprovalRequired {

    /**
     * 业务类型（对应BusinessTypeEnum）
     */
    String businessType();

    /**
     * 业务ID（SpEL表达式，从方法参数或返回值中获取）
     * 例如：#result.id 或 #entity.id
     */
    String businessIdExpr() default "#result.id";

    /**
     * 业务数据内容（SpEL表达式，从方法参数或返回值中获取）
     * 例如：#result 或 #entity
     */
    String businessDataExpr() default "#result";

    /**
     * 是否需要审批的条件表达式（SpEL表达式）
     * 例如：#entity.amount > 10000
     * 默认为空，表示始终需要审批
     */
    String condition() default "";
}

