java主要代码
package org.jeecg.utils;
// 重复提交验证工具类
import java.util.LinkedHashMap;
import java.util.Map;
// 短时间内重复提交验证工具类
public class DuplicateSubmitValidator {
private static final int MAX_CAPACITY = 300;
private static final LinkedHashMap<String, Boolean> reqCache = new LinkedHashMap<String, Boolean>(MAX_CAPACITY, 0.75f, true) {
@Override
protected boolean removeEldestEntry(Map.Entry<String, Boolean> eldest) {
return size() > MAX_CAPACITY;
}
};
/**
* 验证请求是否重复,并记录请求信息
*
* @param requestId 请求的唯一标识
* @return 如果是重复请求返回 false,否则返回 true
*/
public static synchronized boolean validateRequest(String requestId) {
if (reqCache.containsKey(requestId)) {
//System.out.println("请勿重复提交!!!" + requestId);
return false;
}
reqCache.put(requestId, true);
return true;
}
// 业务类,使用验证工具类
/* public class UserService {
public String addUser(String id) {
if (!DuplicateSubmitValidator.validateRequest(id)) {
return "执行失败";
}
System.out.println("添加用户ID:" + id);
return "执行成功!";
}
}*/
}
用法
String checkId = pkId;
try {
if (!DuplicateSubmitValidator.validateRequest(checkId)) {
return Result.error("该数据已经同步到记录表!");
}
} catch (Exception e) {
log.error(e.getMessage(), e);
}