发送短信不做过多描述,用的飞鸽国际短信
@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);
}