1、数据表结构
因为需要记录整天的发送记录,所以在此把数据保存到数据库中. 数据表结构如下图所示:
type为验证码的类型,例如注册、重置密码等,sendTime的默认值为当前时间。
2、限制日发送次数
在此需要使用到接口和实体类:
DailyCountFilter.java
public class DailyCountFilter implements SmsFilter {
private int ipDailyMaxSendCount;
private int mobileDailyMaxSendCount;
private SmsDao smsDao;
//省略了部分无用的代码
@Override
public boolean filter(SmsEntity smsEntity) {
if (smsDao.getMobileCount(smsEntity.getMobile()) >= mobileDailyMaxSendCount) {
return false;
}
if (smsDao.getIPCount(smsEntity.getIp()) >= ipDailyMaxSendCount) {
return false;
}
smsDao.saveEntity(sms