A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

4.3.1 用户注册判断验证码
(1)修改 pinyougou-user-interface 的 UserService.java
[AppleScript] 纯文本查看 复制代码
/**

*判断短信验证码是否存在

*@param  phone


*@return


*/

public  boolean    checkSmsCode(String  phone,String  code);
(2)修改 pinyougou-user-service 的 UserServiceImpl.java
[AppleScript] 纯文本查看 复制代码
/**

* 判断验证码是否正确

*/


public  boolean    checkSmsCode(String  phone,String  code){

//得到缓存中存储的验证码
String  sysCode  =  (String)  redisTemplate.boundHashOps("smscode").get(phone);


if(sysCode==null){ return  false;
}


if(!sysCode.equals(code)){ return  false;
}


return  true;

}
(3)修改 pinyougou-user-web 的 UserController.java
[AppleScript] 纯文本查看 复制代码
/**

*增加

*@param  user


*@return


*/ @RequestMapping("/add")
public  Result  add(@RequestBody  TbUser  user,String  smscode){


boolean  checkSmsCode  =  userService.checkSmsCode(user.getPhone(),  smscode);


if(checkSmsCode==false){

return  new  Result(false,  "验证码输入错误!");

}


try {


userService.add(user);
return  new  Result(true,  "增加成功");

}  catch  (Exception  e)  { e.printStackTrace();
return  new  Result(false,  "增加失败");

}

}
(4)修改 pinyougou-user-web 的 userService.js
[AppleScript] 纯文本查看 复制代码
//增加

this.add=function(entity,smscode){


return    $http.post('../user/add.do?smscode='+smscode  ,entity  );

}
(5)修改 pinyougou-portal-web 的 UserController.java
[AppleScript] 纯文本查看 复制代码
//保存

$scope.reg=function(){


userService.add(  $scope.entity,  $scope.smscode    ).success(


function(response){ alert(response.message);
}


);

}
(6)修改页面,绑定变量
[AppleScript] 纯文本查看 复制代码
<input  type="text"  placeholder="短信验证码"  ng-model="smscode"  class="input-xfat input-xlarge">    <a  href="#"  ng-click="sendCode()">获取短信验证码</a>
4.3.1 短信验证码发送到手机
(1)在 pinyougou-user-service 添加配置文件 applicationContext-activemq.xml
[AppleScript] 纯文本查看 复制代码
<!--  真正可以产生 Connection 的 ConnectionFactory,由对应的 JMS 服务厂商提供-->

<bean  id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">

<property  name="brokerURL"  value="tcp://192.168.25.135:61616"/>


</bean>

<!--  Spring 用于管理真正的 ConnectionFactory 的 ConnectionFactory  -->

<bean  id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">
<!--  目标 ConnectionFactory 对应真实的可以产生 JMS Connection 的 ConnectionFactory -->

<property  name="targetConnectionFactory"  ref="targetConnectionFactory"/>


</bean>

<!--  Spring 提供的 JMS 工具类,它可以进行消息发送、接收等 -->

<bean  id="jmsTemplate"  class="org.springframework.jms.core.JmsTemplate">

<!--  这个 connectionFactory 对应的是我们定义的 Spring 提供的那个 ConnectionFactory
对象 -->

<property  name="connectionFactory"  ref="connectionFactory"/>


</bean>

<!--这个是点对点消息 -->

<bean  id="smsDestination"  class="org.apache.activemq.command.ActiveMQQueue">


<constructor-arg  value="sms"/>


</bean>
[AppleScript] 纯文本查看 复制代码
@Autowired


private  JmsTemplate  jmsTemplate; @Autowired
private  Destination  smsDestination;




@Value("${template_code}")


private  String  template_code;




@Value("${sign_name}")


private  String  sign_name;







/**

* 生成短信验证码

*/


public  void  createSmsCode(final  String  phone){

//生成 6 位随机数

final  String  code  =    (long)  (Math.random()*1000000)+"";

System.out.println("验证码:"+code);

//存入缓存redisTemplate.boundHashOps("smscode").put(phone,  code);
//发送到 activeMQ

jmsTemplate.send(smsDestination,  new  MessageCreator()  {
@Override


public  Message  createMessage(Session  session)  throws  JMSException  {
MapMessage  mapMessage  =  session.createMapMessage(); mapMessage.setString("mobile",  phone);//手机号

mapMessage.setString("template_code",  "SMS_85735065");//模板编号 mapMessage.setString("sign_name",  "黑马");//签名
Map  m=new  HashMap<>(); m.put("number",  code);
mapMessage.setString("param",  JSON.toJSONString(m));//参数

return  mapMessage;


}


});


}
(3)在 pinyougou-common 的 properties 目录下创建配置文件 sms.properties
[AppleScript] 纯文本查看 复制代码
template_code=SMS_85735065


sign_name=\u9ED1\u9A6C

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马