每一天簡訊傳送次數每一分鐘傳送頻率傳送限制 hibernate資料庫框架

hua18123870251發表於2015-11-16

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;


相關文章