package org.jeecg.common.aspect.annotation;
import java.lang.annotation.*;

@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface RepeatSubmit {

    /**
     * 设置默认的防重提交方式为基于方法参数。也可以使用默认值
     */
    Type limitType() default Type.PARAM;

    /**
     * 允许设置加锁的过期时间，默认为5秒。这意味着在第一次请求之后的5秒内，相同的请求将被视为重复并被阻止
     */
    long lockTime() default 5;

    //提供了一个可选的服务ID参数，通过token时用作KEY计算
    String serviceId() default "";

    /**
     * 定义了两种防止重复提交的方式，PARAM 表示基于方法参数来防止重复，TOKEN 则可能涉及生成和验证token的机制
     */
    enum Type {PARAM, TOKEN, SERVICE}
}

