提交 9421212e 作者: 张小凤

NotRepeat(update)

上级 4065807d
...@@ -88,25 +88,27 @@ public class NotRepeatSubmitConfig extends BaseController { ...@@ -88,25 +88,27 @@ public class NotRepeatSubmitConfig extends BaseController {
log.info(map+""); log.info(map+"");
CommonPaymentVO commonPaymentsVO = (CommonPaymentVO) map.get("commonPaymentVO"); CommonPaymentVO commonPaymentsVO = (CommonPaymentVO) map.get("commonPaymentVO");
String json1 = stringRedisTemplate.opsForValue().get(commonPaymentsVO.getOrderNumber()); String json1 = stringRedisTemplate.opsForValue().get(commonPaymentsVO.getOrderNumber());
GetOrderNumberDTO getOrderNumberDTO1= JSONObject.parseObject(json1, GetOrderNumberDTO.class);
Integer requirementsInfoId = getOrderNumberDTO1.getRequirementsInfoId();
ServiceRequirementsDO rep = repertory(requirementsInfoId,request);
Integer repertory2 = rep.getRepertory();
if (repertory2<=0){
return ResultBody.error("需求已被人抢走");
}
String accountUriLockKey=null; String accountUriLockKey=null;
if (requirementsInfoId!=null){ Integer requirementsInfoId=null;
accountUriLockKey = requirementsInfoId + "-" + request.getServletPath(); if (json1!=null){
}else { GetOrderNumberDTO getOrderNumberDTO1= JSONObject.parseObject(json1, GetOrderNumberDTO.class);
accountUriLockKey = userAccountId + "-" + request.getServletPath(); requirementsInfoId = getOrderNumberDTO1.getRequirementsInfoId();
} if (requirementsInfoId!=null && repertory2!=0){ ServiceRequirementsDO rep = repertory(requirementsInfoId,request);
accountUriLockKey=requirementsInfoId +repertory2+ "-" + request.getServletPath(); Integer repertory2 = rep.getRepertory();
} if (repertory2<=0){
return ResultBody.error("需求已被人抢走");
}
if (requirementsInfoId!=null){
accountUriLockKey = requirementsInfoId + "-" + request.getServletPath();
}else {
accountUriLockKey = userAccountId + "-" + request.getServletPath();
} if (requirementsInfoId!=null && repertory2!=0){
accountUriLockKey=requirementsInfoId +repertory2+ "-" + request.getServletPath();
}
}
// 设置锁定资源名称,accountUriLock改为userid+uri作为标识,作为测试写死 // 设置锁定资源名称,accountUriLock改为userid+uri作为标识,作为测试写死
// String accountUriLockKey = "accountUriLock"; // String accountUriLockKey = "accountUriLock";
RLock accountUriLock = redissonClient.getLock(accountUriLockKey); RLock accountUriLock = redissonClient.getLock(accountUriLockKey);
boolean tryLock; boolean tryLock;
...@@ -114,18 +116,18 @@ public class NotRepeatSubmitConfig extends BaseController { ...@@ -114,18 +116,18 @@ public class NotRepeatSubmitConfig extends BaseController {
Method method = signature.getMethod(); Method method = signature.getMethod();
String name = method.getDeclaringClass().getName(); String name = method.getDeclaringClass().getName();
String[] parameterNames = signature.getParameterNames(); String[] parameterNames = signature.getParameterNames();
//尝试获取分布式锁 //尝试获取分布式锁
//-1为永久 leaseTime 最多等待几秒 上锁以后leaseTime秒自动解锁 //-1为永久 leaseTime 最多等待几秒 上锁以后leaseTime秒自动解锁
tryLock = accountUriLock.tryLock(-1, leaseTime, TimeUnit.MILLISECONDS); tryLock = accountUriLock.tryLock(-1, leaseTime, TimeUnit.MILLISECONDS);
log.info("tryLock:" + tryLock); log.info("tryLock:" + tryLock);
if (tryLock) { if (tryLock) {
try { try {
ServiceRequirementsDO repertory = repertory(requirementsInfoId,request); if (requirementsInfoId!=null){
Integer repertory1 = repertory.getRepertory(); ServiceRequirementsDO repertory = repertory(requirementsInfoId,request);
if (repertory1<=0){ Integer repertory1 = repertory.getRepertory();
return ResultBody.error("需求已被人抢走"); if (repertory1<=0){
return ResultBody.error("需求已被人抢走");
}
} }
String orderNumber = commonPaymentsVO.getOrderNumber(); String orderNumber = commonPaymentsVO.getOrderNumber();
String json = stringRedisTemplate.opsForValue().get(orderNumber); String json = stringRedisTemplate.opsForValue().get(orderNumber);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论