package com.ruoyi.framework.annotation;

import com.ruoyi.common.constants.CacheConstant;
import com.ruoyi.common.enums.RateLimitType;
import com.ruoyi.framework.aspect.RateLimitAspect;
import org.noear.solon.annotation.Around;

import java.lang.annotation.*;

/**
 * 限流注解
 * @author ruoyi
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Around(RateLimitAspect.class)
public @interface RyRateLimit {

    /**
     * 限流key
     */
    String key() default CacheConstant.RATE_LIMIT_KEY;

    /**
     * 限流次数
     */
    int count() default 100;

    /**
     * 限流时间（单位：秒）
     */
    int time() default 60;

    /**
     * 限流类型
     */
    RateLimitType type() default RateLimitType.DEFAULT;

}
