4.3 注册判断短信验证码4.3.1 实现思路 点击页面上的”获取短信验证码”连接,向后端传递手机号。后端随机生成 6 位数字作为短信验证码,将其保存在 redis 中(手机号作为 KEY),并发送到短信网关。 用户注册时,后端根据手机号查询 redis 中的验证码与用户填写的验证码是否相同,如果不同则提示用户不能注册。 4.3.2 生成验证码

(1)修改 pinyougou-user-interface 工程 UserService.java        ,增加方法

/**
 
*生成短信验证码
 
*@return
 
*/
 
public  void  createSmsCode(String  phone);
(2)修改 pinyougou-user-service 工程的 UserServiceImpl.java

@Autowired
 
 
private  RedisTemplate<String  ,  Object>  redisTemplate;
/**
 
* 生成短信验证码
 
*/
 
 
public  void  createSmsCode(String  phone){
 
//生成 6 位随机数
 
String  code  =    (long)  (Math.random()*1000000)+"";
 
System.out.println("验证码:"+code);
 
//存入缓存redisTemplate.boundHashOps("smscode").put(phone,  code);
//发送到 activeMQ  ....
 
}
(3)在 pinyougou-common        添加工具类 PhoneFormatCheckUtils.java,用于验证手机号
(4)修改 pinyougou-user-web 的 UserController.java

/**
 
*发送短信验证码
 
*@param  phone
 
 
*@return
 
 
*/ @RequestMapping("/sendCode")
public  Result  sendCode(String  phone){
 
//判断手机号格式
if(!PhoneFormatCheckUtils.isPhoneLegal(phone)){ return  new  Result(false,  "手机号格式不正确");
}
 
 
try {
 
userService.createSmsCode(phone);//生成验证码
 
return  new  Result(true,  "验证码发送成功");
 
}  catch  (Exception  e)  { e.printStackTrace();
return  new  Result(true,  "验证码发送失败");
 
}
 
 
}
(5) pinyougou-user-web 的 userService.js

//发送验证码
 
this.sendCode=function(phone){
 
 
return  $http.get("../user/sendCode.do?phone="+phone);
 
 
}
(5) pinyougou-user-web 的 userController.js

//发送验证码
 
$scope.sendCode=function(){
 
 
if($scope.entity.phone==null){
 
alert("请输入手机号!");
 
return ;
 
 
}
userService.sendCode($scope.entity.phone).success(
 
 
function(response){ alert(response.message);
}
 
 
);
 
 
}
(7)修改页面 register.html

<    a  ng-click="sendCode()"  >获取短信验证码</  a>