package com.sonic.cow.limit;

import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;

import java.lang.annotation.*;

/**
 * 限流注解
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Documented
@Order(Ordered.HIGHEST_PRECEDENCE)
public @interface RequestLimit {

    /**
     * 允许访问的最大次数
     */
    int count() default Integer.MAX_VALUE;

    /**
     * 已登录用户允许访问的最大次数（备注：如果不配置值的话默认都走IP的限制）
     * @return
     */
    int loginCount() default Integer.MAX_VALUE;

    /**
     * 时间段，单位为毫秒，默认值一分钟
     */
    long time() default 60000;

    /**
     * 未登录请求用户达到限流时的提示 异常码 默认值为：1001009 / 如果想要未登录用户跳转到登录页面则返回异常码为 noLoginErrorCode = "10050001"
     * @return
     */
    String noLoginErrorCode() default "1001009";

    /**
     * message 提示文案
     * @return
     */
    String message() default "Sorry to detect your abnormal access, please try again later";
}
