package com.cool.store.annotation;

import java.lang.annotation.*;

/**
 * 防抖
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Debounce {
    /**
     * 防抖时间窗口（毫秒）
     */
    long timeMs() default 1000;

    /**
     * key 的 SpEL
     * 例："'order:' + #req.orderId"
     */
    String key() default "";

    /**
     * 是否根据用户区分
     */
    boolean diffUser() default true;

    /**
     * 是否为pc端，pc端使用CurrentUserHolder获取用户信息，否则使用PartnerUserHolder获取
     */
    boolean pc() default true;

    /**
     * true: 在窗口内触发则抛异常
     * false: 在窗口内触发则直接返回上一次结果
     */
    boolean throwOnDebounce() default true;
}
