/**
  * 生成邮件验证码,此验证码自带一定的时效性 对应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;
    }
  }