Code Block | ||||
---|---|---|---|---|
| ||||
importPackage(java.lang);
importPackage(org.apache.commons.lang3.time);
importPackage(com.weibaobiao.utils);
importPackage(com.weibaobiao.support.entity);
importPackage(com.weibaobiao.support.dao);
importPackage(com.weibaobiao.support);
var phoneNumber = request.getParameter("phone");
logger.debug("phoneNumber: "+phoneNumber);
var verifyCodeDao = beanService.getBean("verifyCodeDaoImpl");
var activateCode = null;
var po = verifyCodeDao.findByUsername(phoneNumber);
if (po == null) {
po = new VerifyCodePO();
po.setUsername(phoneNumber);
po.setId(AppUtils.generateRandomUUID());
} else {
// 是否频繁发送: 50秒间隔
var interval = parseInt((new Date().getTime() - po.getActCodeDate().getTime()) / 1000);
if (interval < 59) {
if (interval < 1) {
interval = 1;
}
result.setSuccess(false);
result.setMessage("您的操作过于频繁,请"+(60-interval)+"秒后重试");
throw new AppException("您的操作过于频繁,请"+(60-interval)+"秒后重试");
} else if (interval < 600) {
// 如果在10分钟内,不重复生成
activateCode = po.getActCode();
}
// 同一号码,一天只能发送30条
if (po.getUpdateDate() != null && DateUtils.isSameDay(po.getUpdateDate(), new Date())) {
if (po.getTodayCount() + 1 > 30) {
result.setSuccess(false);
result.setMessage("您今天的操作过于频繁,请明天再试");
throw new AppException("您今天的操作过于频繁,请明天再试");
}
} else {
po.setUpdateDate(new Date());
po.setTodayCount(0);
}
}
if (activateCode == null) {
activateCode = ""+parseInt((Math.random()*9+1)*100000);
}
logger.debug("activateCode: " + activateCode);
po.setActCode(activateCode);
po.setActCodeDate(new Date());
po.setUsername(phoneNumber);
verifyCodeDao.save(po);
var sendSmsUrl = "http://192.168.1.1:8030/service/httpService/httpInterface.do?method=sendMsg&veryCode=123&mobile="+phoneNumber+"&tempid=JSM40935-0057&content="+activateCode+"&code=gbk";
logger.debug("Send sms url: "+sendSmsUrl);
//webService.get(sendSmsUrl);
result.setSuccess(true);
result.setData(activateCode);
|
Code Block | ||||
---|---|---|---|---|
| ||||
importPackage(java.lang);
importPackage(org.apache.commons.lang3.time);
importPackage(org.apache.commons.lang3);
importPackage(com.alibaba.fastjson);
importPackage(com.weibaobiao.utils);
importPackage(com.weibaobiao.support.entity);
importPackage(com.weibaobiao.support.dao);
importPackage(com.weibaobiao.support);
var phoneNumber = request.getParameter("phone");
var reqCode = request.getParameter("code");
if(phoneNumber == null || phoneNumber === ""){
throw new AppException("手机号无效");
}
if(reqCode == null || reqCode === ""){
throw new AppException("[10001]验证码无效");
}
logger.debug("phone: "+phoneNumber);
logger.debug("code: "+reqCode);
var verifyCodeDao = beanService.getBean("verifyCodeDaoImpl");
var userDao = beanService.getBean("userDaoImpl");
var userService = beanService.getBean("userServiceImpl");
var po = verifyCodeDao.findByActivateCode(phoneNumber, reqCode);
if (po == null) {
throw new AppException("[10002]验证码无效");
} else {
if(!StringUtils.equals(reqCode, po.getActCode())){
throw new AppException("[10003]验证码无效");
}
// 验证码有效期为5分钟
if (new Date().getTime() - po.getActCodeDate().getTime() > 300000) {
throw new AppException("验证码已过期");
}
//获取用户
var user = userDao.findByUsername(phoneNumber);
if(user == null){
throw new AppException("用户不存在");
}
//删除验证码
verifyCodeDao.remove(po);
//登录
var at = userService.userLoginWithUser(user);
var obj = new JSONObject();
obj.put("appId", at.getAppId());
obj.put("accessToken", at.getAccessToken());
result.setSuccess(true);
result.setData(obj);
}
|