Browse Source

短信发送时,增加阻断时长

master
YUJT 4 years ago
parent
commit
45f1163bd3
  1. 26
      epdc-cloud-message/src/main/java/com/elink/esua/epdc/redis/SmsRedis.java
  2. 5
      epdc-cloud-message/src/main/java/com/elink/esua/epdc/service/impl/SysSmsServiceImpl.java

26
epdc-cloud-message/src/main/java/com/elink/esua/epdc/redis/SmsRedis.java

@ -49,4 +49,30 @@ public class SmsRedis {
redisUtils.set(key, smsCode, RedisUtils.MINUTE_THIRTY_EXPIRE); redisUtils.set(key, smsCode, RedisUtils.MINUTE_THIRTY_EXPIRE);
} }
/**
* 在redis中缓存一个标记此标记存在时阻断短信发送
*
* @param mobile 发送手机号或者用于拼接rediskey的字符串
* @param exprie 阻断时长
* @return void
* @author work@yujt.net.cn
* @date 2021/6/4 10:57
*/
public void setWaitFlag(String mobile, long exprie) {
String smsCodeKey = RedisKeys.getPhoneSmsHistoryKey(mobile);
redisUtils.set(smsCodeKey, System.currentTimeMillis(), exprie);
}
/**
* 判断是否处于短信阻断期间
*
* @param mobile 发送手机号或者用于拼接rediskey的字符串
* @return boolean
* @author work@yujt.net.cn
* @date 2021/6/4 11:00
*/
public boolean hasWaitFlag(String mobile) {
return null != redisUtils.get(RedisKeys.getPhoneSmsHistoryKey(mobile));
}
} }

5
epdc-cloud-message/src/main/java/com/elink/esua/epdc/service/impl/SysSmsServiceImpl.java

@ -15,6 +15,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl; import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl;
import com.elink.esua.epdc.commons.tools.constant.NumConstant; import com.elink.esua.epdc.commons.tools.constant.NumConstant;
import com.elink.esua.epdc.commons.tools.exception.ErrorCode; import com.elink.esua.epdc.commons.tools.exception.ErrorCode;
import com.elink.esua.epdc.commons.tools.redis.RedisUtils;
import com.elink.esua.epdc.commons.tools.utils.RandomUtil; import com.elink.esua.epdc.commons.tools.utils.RandomUtil;
import com.elink.esua.epdc.dto.form.EpdcRegisterResultSmsFormDTO; import com.elink.esua.epdc.dto.form.EpdcRegisterResultSmsFormDTO;
import com.elink.esua.epdc.exception.ModuleErrorCode; import com.elink.esua.epdc.exception.ModuleErrorCode;
@ -145,6 +146,10 @@ public class SysSmsServiceImpl extends BaseServiceImpl<SysSmsDao, SysSmsEntity>
@Override @Override
public void sendSms(String mobile, String keyword) { public void sendSms(String mobile, String keyword) {
if (smsRedis.hasWaitFlag(keyword)) {
throw new RenException("操作频繁,请稍后重试");
}
smsRedis.setWaitFlag(keyword, RedisUtils.MINUTE_ONE_EXPIRE);
String smsCode = RandomUtil.getNewRandomCode(NumConstant.SIX); String smsCode = RandomUtil.getNewRandomCode(NumConstant.SIX);
// 缓存手机验证码 // 缓存手机验证码
smsRedis.setSmsCode(keyword, smsCode); smsRedis.setSmsCode(keyword, smsCode);

Loading…
Cancel
Save