From e1c55e263d9ed37cd2f5d8e28373e69c6116fa03 Mon Sep 17 00:00:00 2001 From: jianjun Date: Fri, 27 Aug 2021 10:10:04 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E5=A4=8D=E6=8F=90=E4=BA=A4=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E5=BE=AE=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commons/tools/aop/NoRepeatSubmitAop.java | 31 ++++++++++--------- .../impl/ShiBeiScreenCollServiceImpl.java | 3 -- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aop/NoRepeatSubmitAop.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aop/NoRepeatSubmitAop.java index 6b21bbaaae..ff41a7747c 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aop/NoRepeatSubmitAop.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aop/NoRepeatSubmitAop.java @@ -20,6 +20,7 @@ import java.util.concurrent.TimeUnit; /** * desc:利用用户token及请求url 防止用户重复提交,需要在没有唯一索引的保存或修改操作 方法入口上加上@NoRepeatSubMit注解 + * * @author zhaoqifeng * @dscription * @date 2020/11/24 9:59 @@ -33,8 +34,8 @@ public class NoRepeatSubmitAop { @Autowired private DistributedLock distributedLock; - @Around("@annotation(noRepeatSubmit)") - public Object around(ProceedingJoinPoint pjp,NoRepeatSubmit noRepeatSubmit) { + @Around("@annotation(noRepeatSubmit)") + public Object around(ProceedingJoinPoint pjp, NoRepeatSubmit noRepeatSubmit) { try { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); @@ -44,21 +45,23 @@ public class NoRepeatSubmitAop { String key = getKey(request.getRequestURI(), internalToken); // 如果缓存中有这个url视为重复提交 Object result = null; + RLock lock = null; try { long leaseTime = noRepeatSubmit.leaseTime(); //如果获取不到锁等待0秒直接返回 持锁时间为leaseTime - RLock lock = distributedLock.getLock(RedisKeys.getNoRepeatSubmitKey(key), leaseTime, NumConstant.ZERO_L, TimeUnit.MILLISECONDS); - try { - //因为getLock如果获取失败抛异常 所以不做锁状态的判断 - result = pjp.proceed(); - } finally { - distributedLock.unLock(lock); - } + lock = distributedLock.getLock(RedisKeys.getNoRepeatSubmitKey(key), leaseTime, NumConstant.ZERO_L, TimeUnit.MILLISECONDS); } catch (Exception e) { - log.warn("noRepeatSubmit exception",e); + log.warn("noRepeatSubmit key:{},msg:{}", key, e.getMessage()); //"未获取到锁,重复提交了 throw new RenException(EpmetErrorCode.REPEAT_SUBMIT.getCode()); } + try { + //因为getLock如果获取失败抛异常 所以不做锁状态的判断 + result = pjp.proceed(); + } finally { + distributedLock.unLock(lock); + } + return result; } catch (RenException e) { @@ -67,10 +70,10 @@ public class NoRepeatSubmitAop { log.error("验证重复提交时出现未知异常!"); throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode()); } - } + } - private String getKey(String keyExpress,String token) { - return keyExpress+token; - } + private String getKey(String keyExpress, String token) { + return keyExpress + token; + } } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ShiBeiScreenCollServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ShiBeiScreenCollServiceImpl.java index 3b96365fbe..4f0cbb1896 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ShiBeiScreenCollServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ShiBeiScreenCollServiceImpl.java @@ -34,7 +34,6 @@ import com.epmet.entity.evaluationindex.screen.ScreenCustomerAgencyEntity; import com.epmet.entity.evaluationindex.screen.ScreenCustomerBizOrgEntity; import com.epmet.entity.evaluationindex.screen.ScreenEventImgDataEntity; import com.epmet.entity.evaluationindex.screen.ScreenUserJoinEntity; -import com.epmet.service.evaluationindex.screen.ScreenEventImgDataService; import com.epmet.service.evaluationindex.screen.ShiBeiScreenCollService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.ListUtils; @@ -99,8 +98,6 @@ public class ShiBeiScreenCollServiceImpl implements ShiBeiScreenCollService { private ScreenIndexDataYearlyDao screenIndexDataYearlyDao; @Autowired private ScreenPublicPartiTotalDataDao screenPublicPartiTotalDataDao; - @Autowired - private ScreenEventImgDataService screenEventImgDataService; @DataSource(value = DataSourceConstant.EVALUATION_INDEX, datasourceNameFromArg = true) @Override