发送短信验证码接口
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); }