直接上代码:
String lastSendSMSTime=getKeyCache(request, response, mobile); if(StringUtil.isNullOrEmpty(lastSendSMSTime)){ saveKeyCache(request, response, mobile, String.valueOf(DateTimeUtil.getCurrentTimeSecond())/*1436319245*/); }else{ long lastSendSMSTimeSecond=Long.parseLong(lastSendSMSTime); long currentTimeSecond=DateTimeUtil.getCurrentTimeSecond(); int delter=(int) (currentTimeSecond-lastSendSMSTimeSecond); if(delter>60){//TODO 写入配置文件 saveKeyCache(request, response, mobile, String.valueOf(DateTimeUtil.getCurrentTimeSecond())); }else{//a00001 return new BaseResponseDto(false, "a00001", "一分钟之内不能重复发送手机短信").toJson(); } }
第一次发送时lastSendSMSTime 为null,于是设置当前时间A
第二次访问时,lastSendSMSTime 不为null,获取其值,为时间A;
同时获取当前时间B,计算时间A,和时间B 的差量delter.
业务逻辑是:拿delter和60进行比较,如果delter>60,说明两次发短信的时间相差60秒,则允许发送,会重置时间为当前时间;
若delter<=60秒,则允许发送,并且不会重置时间