赞
踩
移动端扫码求职登记,做有效性校验
1.客户需要在PC端自定义设置二维码的过期时间,生成二维码,打印二维码和控制二维码的过期时间
2.用户移动端扫码进行有效时间验证
3.由于需要控制二维码是否过期,可能提前过期等,过期时间需要存储在数据库表中,方便校验
综上所述:我们只需要一个生成组装二维码的值的方法 一个校验时间的方法即可
实际开发:由于存储在数据库表中,所以根据前端传来的ID,查询数据库表,获取到存储在数据库表的数据(唯一编码UUID url链接)
实际效果:https://url.html?code=1630287605372
code就是UUID 所以所谓的生成就是后端返回一条连接即可 url+uuid参数
不需要用过期时间做为参数 因为数据库中有, 既然没有过期时间也就不需要加密 ,因为像1630287605372本身就是类似于订单号的东西。
/** * 根据二维码记录信息生成二维码 * @param id * @return */ @Override public String getQrcodeCode(Long id) { if (id == null || "".equals(id)){ return null; } // 根据ID查询数据库表记录 Optional<OaOctQrcodeEntity> daoById = dao.findById(id); // 如果有则生成二维码 if (daoById.isPresent()){ OaOctQrcodeEntity byId = daoById.get(); if (byId.getQrcodeUrl()==null || "".equals(byId.getQrcodeUrl()) || byId.getQrcodeCode()==null || "".equals(byId.getQrcodeCode())){ return null; } // 将url与code组装的方法 return packCode(byId.getQrcodeUrl(), byId.getQrcodeCode()); } return null; } // 组装返回连接 private String packCode(String url,String code){ return new StringBuffer().append(url).append("?code=").append(code).toString(); }
实际开发:根据前端传来的code 查询数据表得到过期时间等数据 不需要解密单纯比较即可
/** * 根据二维码编码校验有效性 * @param code * @return */ @Override public Boolean checkQrcode(String code) { if (StringUtils.isBlank(code)) { logger.info("求职登记二维码参数为空"); throw new OaOctQrcodeException(OaOctQrcodeErrorEnum.PARAM_NOT_NULL); } // 验证二维码是否有效 if (!isTimeOur(code)) { logger.info("求职登记二维码已过期"); throw new OaOctQrcodeException(OaOctQrcodeErrorEnum.OCT_QR_CODE); } return Boolean.TRUE; } // 判断code是否过期 private boolean isTimeOur(String code){ boolean isOut = false; OaOctQrcodeEntity qrcodeEntity = findByQrcodeCode(code); if (qrcodeEntity!=null&&!"".equals(qrcodeEntity)&&qrcodeEntity.getExpiresTime()!=null&&!"".equals(qrcodeEntity.getExpiresTime())){ long old_time = qrcodeEntity.getExpiresTime(); long now_time = System.currentTimeMillis(); // // 设置是否提前过期 0未过期 1 已过期 if (now_time < old_time&&qrcodeEntity.getIsOut().equals("0")) { isOut = true; } } return isOut; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。