用户微服务
用户微服务代码生成(省略)
注意修改application
配置文件。
用户注册
需求:注册账号,用手机号注册,填写后发送短信验证码,填写短信验证码正确方可注册成功。
思路:在用户微服务编写API ,生成手机验证码,存入Redis并发送到RabbitMQ
准备工作
-
引入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>
-
配置application.yml
spring: redis: host: 192.168.136.104 port: 6379 rabbitmq: host: 192.168.136.104 port: 5672
短信验证码发送
-
UserController新增方法
/** * 发送短信验证码 * * @param mobile */ @RequestMapping(value = "/sendsms/{mobile}", method = RequestMethod.POST) public Result sendsms(@PathVariable String mobile) { userService.sendSms(mobile); return new Result(true, StatusCode.OK, "发送成功"); }
-
UserService新增方法
@Autowired private RedisTemplate redisTemplate; @Autowired private RabbitTemplate rabbitTemplate; /** * 发送短信验证码 * * @param mobile 手机号 */ public void sendSms(String mobile) { //1.生成6位短信验证码 Random random = new Random(); int max = 999999;//最大数 int min = 100000;//最小数 int code = random.nextInt(max);//随机生成 if (code < min) { code = code + min; } System.out.println(mobile + "收到验证码是:" + code); //2.将验证码放入redis redisTemplate.opsForValue().set("smscode_" + mobile, code + "", 5, TimeUnit.MINUTES);//五分钟过期 //3.将验证码和手机号发动到rabbitMQ中 Map<String, String> map = new HashMap(); map.put("mobile", mobile); map.put("code", code + ""); rabbitTemplate.convertAndSend("sms", map); }
注册
-
UserController新增方法
/** * 用户注册 * * @param user */ @RequestMapping(value = "/register/{code}", method = RequestMethod.POST) public Result register(@RequestBody User user, @PathVariable String code) { userService.add(user, code); return new Result(true, StatusCode.OK, "注册成功"); }
-
UserService新增方法
/** * 增加 * * @param user 用户 * @param code 用户填写的验证码 */ public void add(User user, String code) { //判断验证码是否正确 String syscode = (String) redisTemplate.opsForValue().get("smscode_" + user.getMobile()); //提取系统正确的验证码 if (syscode == null) { throw new RuntimeException("请点击获取短信验证码"); } if (!syscode.equals(code)) { throw new RuntimeException("验证码输入不正确"); } user.setId(idWorker.nextId() + ""); user.setFollowcount(0);//关注数 user.setFanscount(0);//粉丝数 user.setOnline(0L);//在线时长 user.setRegdate(new Date());//注册日期 user.setUpdatedate(new Date());//更新日期 user.setLastdate(new Date());//最后登陆日期 userDao.save(user); }
短信微服务
短信微服务参考我的另一篇文章: