Commit 9cb45a05 by 段启岩

添加短信发送太频繁提示

parent 620adf45
......@@ -29,4 +29,6 @@ public @interface CollectAccessInfo {
* @return
*/
TransmitType transmitType() default TransmitType.PATH;
long timeout() default 10 * 60;
}
......@@ -56,9 +56,10 @@ public class IpAccessInfoCollectInterceptor implements HandlerInterceptor {
String paramName = collectAccessInfo.paramName();
ParamType paramType = collectAccessInfo.type();
TransmitType transmitType = collectAccessInfo.transmitType();
long timeout = collectAccessInfo.timeout();
String paramValue = resolveParamValue(request, paramName, transmitType);
AccessInfo accessInfo = getAccessInfo(ipAddress, paramType, paramValue);
AccessInfo accessInfo = getAccessInfo(ipAddress, paramType, paramValue, timeout);
accessInfo.setVisitCount(visitCount);
accessInfo.setLatestVisitTime(latestVisitTime);
request.setAttribute(SysConstants.HTTP_ATTRIBUTE_ACCESS_INFO, accessInfo);
......@@ -67,12 +68,12 @@ public class IpAccessInfoCollectInterceptor implements HandlerInterceptor {
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.setIpAddress(ipAddress);
if (!StringUtils.isEmpty(paramValue)) {
accessInfo.setFieldVisitCount(getAndIncreaseFieldVisitCount(ipAddress, paramType, paramValue));
accessInfo.setFieldLatestVisitTime(getAndSetFieldLatestVisitTime(ipAddress, paramType, paramValue));
accessInfo.setFieldVisitCount(getAndIncreaseFieldVisitCount(ipAddress, paramType, paramValue, timeout));
accessInfo.setFieldLatestVisitTime(getAndSetFieldLatestVisitTime(ipAddress, paramType, paramValue, timeout));
}
return accessInfo;
}
......@@ -84,9 +85,9 @@ public class IpAccessInfoCollectInterceptor implements HandlerInterceptor {
* @param paramValue
* @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);
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;
}
......@@ -97,13 +98,13 @@ public class IpAccessInfoCollectInterceptor implements HandlerInterceptor {
* @param paramValue
* @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);
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;
} 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;
}
}
......
......@@ -6,6 +6,7 @@ import cn.meteor.beyondclouds.core.constant.RegexPatterns;
import cn.meteor.beyondclouds.core.flow.AccessInfo;
import cn.meteor.beyondclouds.core.flow.CollectAccessInfo;
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.exception.SmsServiceException;
import cn.meteor.beyondclouds.modules.sms.service.ISmsService;
......@@ -40,7 +41,7 @@ public class SmsApi {
@ApiOperation("发送验证码")
@GetMapping("/verifyCode")
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)) {
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