/** * 生成邮件验证码,此验证码自带一定的时效性 对应id如果在一定时间内生成过验证码的,不重复生成第二次,而是直接返回空字符串 * * @param mail * @param id * @return */ public String buildMailValidationCode(String mail, Integer id) { String isSendKey = Constants.REDIS_KEY_PER_MAIL_VALIDATION_IS_SEND_PREFIX + id; if (redisEao.isKeyExist(isSendKey)) { // 验证已经生成过了,在有此key的情况下不重新生成 return ""; } else { String validCode = MD5Builder.md5( mail, ObjectUtils.toString(System.currentTimeMillis()), ObjectUtils.toString(id)); redisEao.writeToString( Constants.REDIS_KEY_PER_MAIL_VALIDATION_PREFIX + validCode, ObjectUtils.toString(id, "")); redisEao.setKeyExpire( Constants.REDIS_KEY_PER_MAIL_VALIDATION_PREFIX + validCode, Constants.REDIS_EXPIRE_TIME_PER_MAIL_VALIDATION); redisEao.writeToString(isSendKey, validCode); redisEao.setKeyExpire(isSendKey, Constants.REDIS_EXPIRE_TIME_PER_MAIL_VALIDATION); return validCode; } }
/** * 生成短信验证码,此验证码自带一定的时效性 对应id如果在一定时间内生成过验证码的,不重复生成第二次,而是直接返回空字符串 * * @param mobile * @param id * @return */ public String buildSMSValidationCode(String mobile, Integer id) { String isSendKey = Constants.REDIS_KEY_PER_SMS_VALIDATION_IS_SEND_PREFIX + id; if (redisEao.isKeyExist(isSendKey)) { // 验证已经生成过了,在有此key的情况下不重新生成 return ""; } else { // 随机生成6位数字 String[] code = new String[6]; for (int i = 0; i < 6; i++) { code[i] = ObjectUtils.toString((int) (Math.random() * 10)); } String validCode = StringUtils.join(code); redisEao.writeToString( Constants.REDIS_KEY_PER_SMS_VALIDATION_PREFIX + validCode, ObjectUtils.toString(id, "")); redisEao.setKeyExpire( Constants.REDIS_KEY_PER_SMS_VALIDATION_PREFIX + validCode, Constants.REDIS_EXPIRE_TIME_PER_SMS_VALIDATION); redisEao.writeToString(isSendKey, validCode); redisEao.setKeyExpire(isSendKey, Constants.REDIS_EXPIRE_TIME_PER_SMS_VALIDATION); return validCode; } }
/** * 根据uuid及用户ID生成token * * @param uuid * @param userId * @return */ public String buildMobileToken(String uuid, Integer userId) { if (StringUtils.isBlank(uuid) || userId <= 0) { return ""; // 没有传入uuid或userId } else { // 保存token信息到Redis // 保存的格式为string // 值内容应为 【 uuid,userid 】 // 生存期为30天 String token = MD5Builder.md5(uuid + userId); redisEao.writeToString( Constants.REDIS_KEY_MOBILE_API_TOKEN_PREFIX + token, uuid + "," + userId); redisEao.setKeyExpire( Constants.REDIS_KEY_MOBILE_API_TOKEN_PREFIX + token, Constants.REDIS_EXPIRE_TIME_MOBILE_API_TOKEN); return token; } }