首页 > 其他分享 >防重复提交

防重复提交

时间:2023-10-27 09:14:17浏览次数:23  
标签:ResultMsg return String jedisTool 重复 urlPath 提交 new

private ResultMsg stopSameForm(HttpServletRequest request,
		String user,
		String urlPath,String requestBody){
	try{
		
		urlPath=urlPath.toLowerCase();
		if(!(urlPath.contains("/save") 
				|| urlPath.contains("/add")
				|| urlPath.contains("/create")
				|| urlPath.contains("/new")
				|| urlPath.contains("/update")
				)){
			return new ResultMsg(ResultCode.Success);
		}
		String ip=StringUtils.getIpAddr(request);
		
		String lockKey=com.lujie.userauth.constant.KeysManager.User_Auth+"FormLock"+user+MD5Util.encrypt(requestBody);
		String lockIPKey=lockKey+ip;
		
		String lockIP=jedisTool.get(lockIPKey);
		if(lockIP!=null && !lockIP.equals("null")){
			return new ResultMsg("730","高频访问接口,请稍后再进行操作!");
		}
		Integer expireSecond=Integer.parseInt(UserAuthConfig.AccessLockTime.toString())/1000;
		
		if(jedisTool.getLock(lockKey, System.currentTimeMillis()+"")==0){
			String lockTime=jedisTool.get(lockKey);
			Long accessMinintervalTime=UserAuthConfig.AccessMinintervalTime;//每次访问接口间隔最短时间
			if (lockTime!=null && System.currentTimeMillis() < Long.parseLong(lockTime)+accessMinintervalTime) {
				log.info("ip:"+ip+","+urlPath);
				jedisTool.resetLock(lockKey, System.currentTimeMillis()+"");
				
				jedisTool.getLock(lockIPKey, System.currentTimeMillis()+"");
				//String bbb=jedisTool.get(lockIPKey);
				
				jedisTool.expire(lockIPKey, expireSecond);//60秒过期
				return new ResultMsg("720","高频访问接口,请稍后再进行操作!");
			}
			
			
			if (lockTime!=null && System.currentTimeMillis() < Long.parseLong(lockTime)+UserAuthConfig.AccessLockTime) {
				return new ResultMsg("700","重复相同的请求,请稍后再进行操作!");
			}else{
				jedisTool.unLock(lockKey);
				return new ResultMsg(ResultCode.Success);
			}
		}
		jedisTool.expire(lockKey, expireSecond);//自动解锁时间
	}catch(Exception lockException){
		log.info("urlPath:"+urlPath+", requestBody:"+ requestBody);
		log.info(lockException.getMessage());
		return new ResultMsg("710","服务器表单数据锁异常");
	}
	return new ResultMsg(ResultCode.Success); 
}

标签:ResultMsg,return,String,jedisTool,重复,urlPath,提交,new
From: https://www.cnblogs.com/yifanSJ/p/17790977.html

相关文章

  • 2023-10-14:用go语言,给定 pushed 和 popped 两个序列,每个序列中的 值都不重复, 只有当它
    2023-10-14:用go语言,给定pushed和popped两个序列,每个序列中的值都不重复,只有当它们可能是在最初空栈上进行的推入push和弹出pop操作序列的结果时,返回true;否则,返回false。输入:pushed=[1,2,3,4,5],popped=[4,5,3,2,1]。输出:true。来自美团。答案2023-10-14:大体过程如......
  • Excel VSTO 查询重复项
    一、需求描述:EXCEL原有的重复项识别功能,在识别身份证号码上存在识别错误。非重复项也识别为重复项。 二、编写ExcelVSTO外接程序1.创建新项目-ExcelVSTO外接程序,项目名:Dedupe  2.右键项目-添加-新建项-Office/SharePoint-功能区-添加  3.添加功能按钮 4编写功......
  • 什么是幻读,脏读,不可重复读?事务的各个隔离级别都是如何实现的?
    一、什么是幻读,脏读,不可重复读?事务A、B交替执行,事务A读取到事务B未提交的数据,这就是脏读。在一个事务范围内,两个相同的查询,读取同一条记录,却返回了不同的数据,这就是不可重复读。事务A查询一个范围的结果集,另一个并发事务B往这个范围中插入/删除了数据,并悄悄提交,之后事务A再次查询相......
  • springboot 06 idea提交到Gitee
         --->commit   首次要填Gitee的账号密码  ......
  • 基于redis实现防重提交
    自定义防重提交1.自定义注解importjava.lang.annotation.*;/***自定义防重提交*@author*@date2023年9月6日11:19:13*/@Documented@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public@interfaceRepeatSubmit{/***默认防......
  • Gerrit合并追加提交
    Gerrit需要review代码后才能合入,提交到Gerrit后,后面再修改一般都是先Abandoned第一笔后再重新提交这样麻烦,并且会产生Abandoned记录,Gerrit是以Change-Id作为标识,只要Change-Id一致,Gerrit就认为是同一笔提交时选中amend进行补充修改提交到上一个已提交的节点上......
  • 关于高级定时器 重复计数值寄存器的使用介绍
    来源:https://www.cnblogs.com/liaigu/p/17782198.html在使用高级定时器进行初始化的时候,相较于通用定时器,在初始化的时候会有一个重复计数的配置,如下图:该位主要是对重复计数值寄存器进行配置,如下图:关于该配置的使用说明,具体如下:以定时器中断为例:1、一般默认情况下,将重复计......
  • 3种方法,用Java找出两个List中的重复元素
    本文分享自华为云社区《如何用Java找出两个List中的重复元素,读这一篇就够了》,作者:努力的阿飞。在Java编程中,我们经常需要找出两个列表(List)中的重复元素。在本文中,我们将探讨三种方法来实现这一目标。方法一:使用HashSetJava中的HashSet是一个不允许有重复元素的集合。我们可以......
  • C++桶排序算法的应用:存在重复元素 III
    题目给你一个整数数组nums和两个整数indexDiff和valueDiff。找出满足下述条件的下标对(i,j):i!=j,abs(i-j)<=indexDiffabs(nums[i]-nums[j])<=valueDiff如果存在,返回true;否则,返回false。示例1:输入:nums=[1,2,3,1],indexDiff=3,valueDiff=0输出......
  • 如何用Java找出两个List中的重复元素,读这一篇就够了
     在Java编程中,我们经常需要找出两个列表(List)中的重复元素。在本文中,我们将探讨三种方法来实现这一目标。 方法一:使用HashSetJava中的HashSet是一个不允许有重复元素的集合。我们可以利用这个特性,通过合并两个List并计算差集,来找出重复的元素。以下是一个通过使用HashSet数......