Commit 9cb45a05 by 段启岩

添加短信发送太频繁提示

parent 620adf45
...@@ -29,4 +29,6 @@ public @interface CollectAccessInfo { ...@@ -29,4 +29,6 @@ public @interface CollectAccessInfo {
* @return * @return
*/ */
TransmitType transmitType() default TransmitType.PATH; TransmitType transmitType() default TransmitType.PATH;
long timeout() default 10 * 60;
} }
...@@ -56,9 +56,10 @@ public class IpAccessInfoCollectInterceptor implements HandlerInterceptor { ...@@ -56,9 +56,10 @@ public class IpAccessInfoCollectInterceptor implements HandlerInterceptor {
String paramName = collectAccessInfo.paramName(); String paramName = collectAccessInfo.paramName();
ParamType paramType = collectAccessInfo.type(); ParamType paramType = collectAccessInfo.type();
TransmitType transmitType = collectAccessInfo.transmitType(); TransmitType transmitType = collectAccessInfo.transmitType();
long timeout = collectAccessInfo.timeout();
String paramValue = resolveParamValue(request, paramName, transmitType); String paramValue = resolveParamValue(request, paramName, transmitType);
AccessInfo accessInfo = getAccessInfo(ipAddress, paramType, paramValue); AccessInfo accessInfo = getAccessInfo(ipAddress, paramType, paramValue, timeout);
accessInfo.setVisitCount(visitCount); accessInfo.setVisitCount(visitCount);
accessInfo.setLatestVisitTime(latestVisitTime); accessInfo.setLatestVisitTime(latestVisitTime);
request.setAttribute(SysConstants.HTTP_ATTRIBUTE_ACCESS_INFO, accessInfo); request.setAttribute(SysConstants.HTTP_ATTRIBUTE_ACCESS_INFO, accessInfo);
...@@ -67,12 +68,12 @@ public class IpAccessInfoCollectInterceptor implements HandlerInterceptor { ...@@ -67,12 +68,12 @@ public class IpAccessInfoCollectInterceptor implements HandlerInterceptor {
return true; return true;
} }
private AccessInfo getAccessInfo(String ipAddress, ParamType paramType, String paramValue) { private AccessInfo getAccessInfo(String ipAddress, ParamType paramType, String paramValue, long timeout) {
AccessInfo accessInfo = new AccessInfo(); AccessInfo accessInfo = new AccessInfo();
accessInfo.setIpAddress(ipAddress); accessInfo.setIpAddress(ipAddress);
if (!StringUtils.isEmpty(paramValue)) { if (!StringUtils.isEmpty(paramValue)) {
accessInfo.setFieldVisitCount(getAndIncreaseFieldVisitCount(ipAddress, paramType, paramValue)); accessInfo.setFieldVisitCount(getAndIncreaseFieldVisitCount(ipAddress, paramType, paramValue, timeout));
accessInfo.setFieldLatestVisitTime(getAndSetFieldLatestVisitTime(ipAddress, paramType, paramValue)); accessInfo.setFieldLatestVisitTime(getAndSetFieldLatestVisitTime(ipAddress, paramType, paramValue, timeout));
} }
return accessInfo; return accessInfo;
} }
...@@ -84,9 +85,9 @@ public class IpAccessInfoCollectInterceptor implements HandlerInterceptor { ...@@ -84,9 +85,9 @@ public class IpAccessInfoCollectInterceptor implements HandlerInterceptor {
* @param paramValue * @param paramValue
* @return * @return
*/ */
private Long getAndSetFieldLatestVisitTime(String ipAddress, ParamType paramType, String paramValue) { private Long getAndSetFieldLatestVisitTime(String ipAddress, ParamType paramType, String paramValue, long timeout) {
Long latestVisitTime = redisHelper.get(RedisKey.IP_FILED_LATEST_VISIT_TIME(ipAddress, paramType, paramValue), Long.class); Long latestVisitTime = redisHelper.get(RedisKey.IP_FILED_LATEST_VISIT_TIME(ipAddress, paramType, paramValue), Long.class);
redisHelper.set(RedisKey.IP_FILED_LATEST_VISIT_TIME(ipAddress, paramType, paramValue), System.currentTimeMillis(), 60 * 10); redisHelper.set(RedisKey.IP_FILED_LATEST_VISIT_TIME(ipAddress, paramType, paramValue), System.currentTimeMillis(), timeout);
return latestVisitTime; return latestVisitTime;
} }
...@@ -97,13 +98,13 @@ public class IpAccessInfoCollectInterceptor implements HandlerInterceptor { ...@@ -97,13 +98,13 @@ public class IpAccessInfoCollectInterceptor implements HandlerInterceptor {
* @param paramValue * @param paramValue
* @return * @return
*/ */
private int getAndIncreaseFieldVisitCount(String ipAddress, ParamType paramType, String paramValue) { private int getAndIncreaseFieldVisitCount(String ipAddress, ParamType paramType, String paramValue, long timeout) {
Integer visitCount = redisHelper.get(RedisKey.IP_FILED_VISIT_COUNT(ipAddress, paramType, paramValue), Integer.class); Integer visitCount = redisHelper.get(RedisKey.IP_FILED_VISIT_COUNT(ipAddress, paramType, paramValue), Integer.class);
if (null == visitCount) { if (null == visitCount) {
redisHelper.set(RedisKey.IP_FILED_VISIT_COUNT(ipAddress, paramType, paramValue), 1, 60 * 10); redisHelper.set(RedisKey.IP_FILED_VISIT_COUNT(ipAddress, paramType, paramValue), 1, timeout);
return 0; return 0;
} else { } else {
redisHelper.set(RedisKey.IP_FILED_VISIT_COUNT(ipAddress, paramType, paramValue), visitCount + 1, 60 * 10); redisHelper.set(RedisKey.IP_FILED_VISIT_COUNT(ipAddress, paramType, paramValue), visitCount + 1, timeout);
return visitCount; return visitCount;
} }
} }
......
...@@ -6,6 +6,7 @@ import cn.meteor.beyondclouds.core.constant.RegexPatterns; ...@@ -6,6 +6,7 @@ import cn.meteor.beyondclouds.core.constant.RegexPatterns;
import cn.meteor.beyondclouds.core.flow.AccessInfo; import cn.meteor.beyondclouds.core.flow.AccessInfo;
import cn.meteor.beyondclouds.core.flow.CollectAccessInfo; import cn.meteor.beyondclouds.core.flow.CollectAccessInfo;
import cn.meteor.beyondclouds.core.flow.ParamType; import cn.meteor.beyondclouds.core.flow.ParamType;
import cn.meteor.beyondclouds.core.flow.TransmitType;
import cn.meteor.beyondclouds.modules.sms.enums.SmsErrorCode; import cn.meteor.beyondclouds.modules.sms.enums.SmsErrorCode;
import cn.meteor.beyondclouds.modules.sms.exception.SmsServiceException; import cn.meteor.beyondclouds.modules.sms.exception.SmsServiceException;
import cn.meteor.beyondclouds.modules.sms.service.ISmsService; import cn.meteor.beyondclouds.modules.sms.service.ISmsService;
...@@ -40,7 +41,7 @@ public class SmsApi { ...@@ -40,7 +41,7 @@ public class SmsApi {
@ApiOperation("发送验证码") @ApiOperation("发送验证码")
@GetMapping("/verifyCode") @GetMapping("/verifyCode")
public Response sendVerify(@RequestParam("mobile") String mobile, public Response sendVerify(@RequestParam("mobile") String mobile,
@CollectAccessInfo(paramName = "mobile", type = ParamType.SMS_CODE) AccessInfo accessInfo) { @CollectAccessInfo(transmitType = TransmitType.PARAM, paramName = "mobile", type = ParamType.SMS_CODE) AccessInfo accessInfo) {
if (!mobile.matches(RegexPatterns.MOBILE)) { if (!mobile.matches(RegexPatterns.MOBILE)) {
return Response.error(SmsErrorCode.INVALID_MOBILE); return Response.error(SmsErrorCode.INVALID_MOBILE);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment