每一天短信发送次数每一分钟发送频率发送限制 hibernate数据库框架
2015-11-16 16:01
323 查看
1:代码设计
public static void sendiscan(){
if (StringUtils.isBlank(mobile)) {
error.code = -1;
error.msg = "手机号码不能为空";
return ;
}
//根据手机查询 数据是否存在该手机记录
String sql = "select mobile from t_user_send_now where mobile=? ";
String Smobile = null;
try {
Smobile = t_user_send_now.find(sql, mobile).first();
} catch (Exception e) {
e.printStackTrace();
Logger.info("判断手机是否存在时,根据手机查询数据时:" + e.getMessage());
return ;
}
//如果存在
if (Smobile != null && mobile.equals(Smobile)) {
Date send_time;
Date date=new Date();
Date dateNow=new Date(date.getTime()-60000);
String dql="select send_time from t_user_send_now where mobile=? ";
try {
send_time=t_user_send_now.find(dql, mobile).first();
} catch (Exception e) {
e.printStackTrace();
Logger.info("查询手机发送短信实际时间时出现错误:" + e.getMessage());
return ;
}
//判断发送间隔是否超过一分钟
if(send_time.getTime()>dateNow.getTime()){
return ;
}else{
int sendCount = 0;
String hql = "select sendCount from t_user_send_now where mobile=? ";
try {
sendCount = t_user_send_now.find(hql, mobile).first();
} catch (Exception e) {
e.printStackTrace();
Logger.info("判断手机发送短信时,根据手机查询数据时:" + e.getMessage());
return ;
}
//判断当天发送次数是否超过6次
if (sendCount > 6 || sendCount == 6) {
error.code = -4;
error.msg = "该手机发送短信超过6次";
return;
} else {
EntityManager em = JPA.em();
int rows = em.createQuery(
"update t_user_send_now set sendCount=sendCount+1 , send_time=? where 1=1 and mobile=?")
.setParameter(1, new Date()).setParameter(2, mobile).executeUpdate();
if (rows == 0) {
JPA.setRollbackOnly();
return;
} else {
return ;
}
}
}
//第一次发送
}else{
t_user_send_now sendnow = new t_user_send_now();
sendnow.mobile=mobile;
sendnow.sendCount=1;
sendnow.send_time=new Date();
try {
sendnow.save();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
Logger.info("增加发送手机时出现错误 :" + e.getMessage());
return ;
}
return ;
}
}
2:数据库设计
sql 语句mysql
CREATE TABLE `t_user_send_now` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '短信发送号码统计表编号',
`mobile` varchar(50) DEFAULT NULL COMMENT '发送手机号码',
`sendCount` int(11) DEFAULT '0' COMMENT '短信发送次数',
`send_time` datetime DEFAULT NULL COMMENT '上次短信发送时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=78 DEFAULT CHARSET=utf8;
public static void sendiscan(){
if (StringUtils.isBlank(mobile)) {
error.code = -1;
error.msg = "手机号码不能为空";
return ;
}
//根据手机查询 数据是否存在该手机记录
String sql = "select mobile from t_user_send_now where mobile=? ";
String Smobile = null;
try {
Smobile = t_user_send_now.find(sql, mobile).first();
} catch (Exception e) {
e.printStackTrace();
Logger.info("判断手机是否存在时,根据手机查询数据时:" + e.getMessage());
return ;
}
//如果存在
if (Smobile != null && mobile.equals(Smobile)) {
Date send_time;
Date date=new Date();
Date dateNow=new Date(date.getTime()-60000);
String dql="select send_time from t_user_send_now where mobile=? ";
try {
send_time=t_user_send_now.find(dql, mobile).first();
} catch (Exception e) {
e.printStackTrace();
Logger.info("查询手机发送短信实际时间时出现错误:" + e.getMessage());
return ;
}
//判断发送间隔是否超过一分钟
if(send_time.getTime()>dateNow.getTime()){
return ;
}else{
int sendCount = 0;
String hql = "select sendCount from t_user_send_now where mobile=? ";
try {
sendCount = t_user_send_now.find(hql, mobile).first();
} catch (Exception e) {
e.printStackTrace();
Logger.info("判断手机发送短信时,根据手机查询数据时:" + e.getMessage());
return ;
}
//判断当天发送次数是否超过6次
if (sendCount > 6 || sendCount == 6) {
error.code = -4;
error.msg = "该手机发送短信超过6次";
return;
} else {
EntityManager em = JPA.em();
int rows = em.createQuery(
"update t_user_send_now set sendCount=sendCount+1 , send_time=? where 1=1 and mobile=?")
.setParameter(1, new Date()).setParameter(2, mobile).executeUpdate();
if (rows == 0) {
JPA.setRollbackOnly();
return;
} else {
return ;
}
}
}
//第一次发送
}else{
t_user_send_now sendnow = new t_user_send_now();
sendnow.mobile=mobile;
sendnow.sendCount=1;
sendnow.send_time=new Date();
try {
sendnow.save();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
Logger.info("增加发送手机时出现错误 :" + e.getMessage());
return ;
}
return ;
}
}
2:数据库设计
sql 语句mysql
CREATE TABLE `t_user_send_now` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '短信发送号码统计表编号',
`mobile` varchar(50) DEFAULT NULL COMMENT '发送手机号码',
`sendCount` int(11) DEFAULT '0' COMMENT '短信发送次数',
`send_time` datetime DEFAULT NULL COMMENT '上次短信发送时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=78 DEFAULT CHARSET=utf8;
相关文章推荐
- Flash简单加密 限制 Flash 在指定域名/网址中播放的方法
- 浏览器 cookie 限制
- access的备注字段限制64K
- php限制ip地址范围的方法
- asp下实现IP限制函数代码
- PHPMyAdmin导入时提示文件大小超出PHP限制的解决方法
- 简单实现限制uploadify上传个数
- Hibernate Oracle sequence的使用技巧
- jsp Hibernate批量更新和批量删除处理代码
- jsp hibernate的分页代码第1/3页
- JAVA+Hibernate 无限级分类
- SSH整合中 hibernate托管给Spring得到SessionFactory
- jsp hibernate 数据保存操作的原理
- hibernate中的增删改查实现代码
- 解决hibernate+mysql写入数据库乱码
- Android短信操作常见协议和常用代码
- 仿iphone中短信以及通话记录的时间显示
- java优化hibernate性能的几点建议
- java Hibernate延迟加载
- hibernate 常用方法介绍