为了防止用户频繁点击按钮,一直提交重复数据
import com.furnish.common.constant.CacheConstants;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;
/**
* redis防止重复提交
*
* @author Administrator
*/
@Component
public class RedisRepetitionSubmit {
private static RedisTemplate redisTemplate;
@Autowired
public void setRedisTemplate(RedisTemplate redisTemplate) {
RedisRepetitionSubmit.redisTemplate = redisTemplate;
}
/**
* redis防重复提交
*
* @param id
* @return
*/
public static boolean getRedisRepetition(String id) {
//每次访问 + 1 (可以实现计数器)
Long count = redisTemplate.opsForValue().increment("repeat_submit:" + id, 1);
if (count == 1) {
redisTemplate.expire("repeat_submit:" + id, 5, TimeUnit.SECONDS);
return true;
}
return false;
}
}
以用户的id或者其他参数进行设置唯一的key,然后进行判断是否包含
//防止连续点击生成多条记录 (5秒)
boolean redisRepetition = RedisRepetitionSubmit.getRedisRepetition(wnBankAudit.getUserId());
if (!redisRepetition) {
return R.error().setMsg("请勿重复操作");
}
boolean b = wnBankAuditService.addWnBankAudit(wnBankAudit);
if (b) {
return R.ok().setMsg("提交成功");
}