Skip to end of metadata
Go to start of metadata
发送短信验证码接口
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;
		}
		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) {
			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);

 

 

 

验证码登录接口
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);
}

 

 

 

 

  • No labels