RepeatSubmit.java 1.14 KB
package com.infoloop.tianting.annotation;


import com.infoloop.tianting.constant.RedisKeyConstants;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;

/**
 * 自定义注解防止重复提交
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RepeatSubmit {

    /**
     * 重复提交前缀
     */
    String prefix() default RedisKeyConstants.REPEAT_SUBMIT;

    /**
     * 间隔时间,小于此时间视为重复提交
     */
    int expire() default 3;

    /**
     * 时间单位
     */
    TimeUnit timeUnit() default TimeUnit.SECONDS;

    /**
     * 分隔符
     */
    String delimiter() default "&";

    /**
     * 提示消息
     */
    String message() default "不允许重复提交,请稍后再试";

    /**
     * 是否根据登录用户ID加锁
     */
    boolean isLockByLoginUser() default true;

    /**
     * 方法执行完自动释放锁
     */
    boolean methodAutoUnlock() default true;

}