redis存簡訊驗證碼,取簡訊驗證碼
阿新 • • 發佈:2021-01-06
傳送簡訊不做過多描述,用的飛鴿國際簡訊
@RequestMapping("/sssssss")
public ResponseProtocol<String> testsssss(String tel,String areaCode) {
ResponseProtocol<String> resp=new ResponseProtocol<String>();
//先從redis中拿。有,直接返回!
ValueOperations<String, Object> redisString = template.opsForValue();
//生成驗證碼
Integer code = VolidateCodeUtil.getVolidateCode();
//呼叫feige傳送介面
MultiValueMap<String, String> params = new LinkedMultiValueMap<String, String>();
params.add("Account",config.getMsgAccount ());
params.add("Pwd",config.getMsgPwd());
params.add("Content",code.toString());
params.add("Mobile",areaCode+tel);
params.add("SignId",config.getMsgSignId());
params.add("TemplateId",config.getMsgTemp());
String res = HttpUtil.sendPostRequest(config.getFeigeUrl(),params);
ResultVO vo = HttpUtil.convert(res);
if(!"OK".equals(vo.getMessage())){
log.error("傳送簡訊報錯!");
resp.setMessage("傳送簡訊報錯!");
resp.setResultCode(Constant.RET_CODE_FAILED);
return resp;
}
//獲取驗證碼並將之放入到redis中,5分鐘後失效
redisString.set(tel, code,60*5, TimeUnit.SECONDS);
resp.setData(code.toString());
resp.setMessage(Constant.SUCCESS);
resp.setResultCode(Constant.RET_CODE_SUCCESS);
return resp;
}
根據電話號碼去redis獲取的簡訊驗證碼
/**
* 根據電話號碼去redis獲取的簡訊驗證碼
* @param tel
* @return
*/
public Integer getCodeByTel(String tel) {
ValueOperations<String, Object> redisString = template.opsForValue();
if(redisString.get(tel)!=null){
Integer code = Integer.valueOf(redisString.get(tel)+"");
return code;
}
return 0;
}
輸入redis存放的號碼進行測試,檢視redis存放的驗證碼
@RequestMapping("/test")
public void sss() {
Integer codeByTel = getCodeByTel("138********");
System.out.println(codeByTel);
}