十次方后端笔记五:用户和短信微服务

用户微服务

用户微服务代码生成(省略)

注意修改application 配置文件。

用户注册

需求:注册账号,用手机号注册,填写后发送短信验证码,填写短信验证码正确方可注册成功。

思路:在用户微服务编写API ,生成手机验证码,存入Redis并发送到RabbitMQ

准备工作

  1. 引入依赖

    <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>
    
  2. 配置application.yml

    spring: 
      redis:
        host: 192.168.136.104
        port: 6379
      rabbitmq:
        host: 192.168.136.104
        port: 5672
    

短信验证码发送

  1. 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, "发送成功");
        }
    
  2. 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);
        }
    

注册

  1. 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, "注册成功");
        }
    
  2. 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);
        }
    

短信微服务

短信微服务参考我的另一篇文章:

链接:https://www.imxushuai.com/2001/12/31/乐优商城笔记八:短信微服务/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章