视频直播系统源码,java 随机验证码 、10 分钟有效

视频直播系统源码,java 随机验证码 、10 分钟有效

 1.首先创建一个vo类存放我们验证码相关信息。

 

1
<br>import lombok.AllArgsConstructor;<br>import lombok.Data;<br>import lombok.NoArgsConstructor;<br> <br>import java.io.Serializable;<br>import java.util.Date;<br> <br>/**<br> * @Author Lxq<br> * @Date 2020/12/7 17:30<br> * @Version 1.0<br> * <p><br> * 存放验证码相关内容,这个对象是放在redis中<br> */<br>@Data<br>@NoArgsConstructor<br>@AllArgsConstructor<br>public class VerifyCodeVO implements Serializable {<br>    /**<br>     * 验证码<br>     */<br>    private Integer verifyCode;<br>    /**<br>     * 发送验证码的手机号<br>     */<br>    private String phoneNumber;<br>    /**<br>     * 最近成功发送时间<br>     */<br>    private Date lastSendTime;<br>    /**<br>     * 可用次数<br>     */<br>    private Integer availableTimes;<br>}

2.当前时间与晚上十二点的秒差

 

1
<br>/**<br>     * 当前时间与晚上十二点的秒差<br>     *<br>     * @return<br>     */<br>    private Long nowTo12ClockTime() {<br>        Calendar calendar = Calendar.getInstance();<br>        calendar.add(Calendar.DAY_OF_YEAR, 1);<br>        calendar.set(Calendar.HOUR_OF_DAY, 0);<br>        calendar.set(Calendar.SECOND, 0);<br>        calendar.set(Calendar.MINUTE, 0);<br>        calendar.set(Calendar.MILLISECOND, 0);<br> <br>        //当前时间与晚上十二点的秒差<br>        return (calendar.getTimeInMillis() - System.currentTimeMillis()) / 1000;<br>    }

 

3.发送验证码的具体方法

 

1
<br> @Override<br>    public void sendVerificationCode(String phoneNumber) {<br>        if (phoneNumber == null) {<br>            throw new CustomException("手机号码不能为空!");<br>        }<br>        // 从redis中获取手机号码对应对象信息<br>        VerifyCodeVO verifyCodeVO = redisUtils.get(phoneNumber, VerifyCodeVO.class);<br>        if (verifyCodeVO != null) {<br>            long lastSendTime = verifyCodeVO.getLastSendTime().getTime();<br>            long now = System.currentTimeMillis();<br>            if ((now - lastSendTime) / 1000 < 60) {<br>                throw new CustomException("请不要频繁获取验证码!");<br>            }<br>            Integer availableTimes = verifyCodeVO.getAvailableTimes();<br>            if (availableTimes.equals(0)) {<br>                throw new CustomException("今日验证码次数已使用完毕!");<br>            }<br>            // 次数减一<br>            verifyCodeVO.setAvailableTimes(verifyCodeVO.getAvailableTimes() - 1);<br>            // 重新生成新验证码<br>            int random = (int) ((Math.random() * 9 + 1) * 100000);<br>            verifyCodeVO.setVerifyCode(random);<br>            verifyCodeVO.setLastSendTime(new Date());<br>            redisUtils.set(phoneNumber, verifyCodeVO, nowTo12ClockTime());<br>            // 异步发送短信<br>            String id = ArpSmsTemplateEnum.APP_DATA_VERIFICATION_CODE.getId();<br>            Integer parameters = ArpSmsTemplateEnum.APP_DATA_VERIFICATION_CODE.getParameters();<br>            AsyncManager.me().ttlExecute(AsyncMessageFactory.sendBusinessSms(id, new String[]{"+86" + phoneNumber}, new String[]{String.valueOf(random)}, parameters));<br> <br>        } else {<br>            int random = (int) ((Math.random() * 9 + 1) * 100000);<br>            VerifyCodeVO vc = new VerifyCodeVO();<br>            vc.setPhoneNumber(phoneNumber);<br>            vc.setVerifyCode(random);<br>            vc.setLastSendTime(new Date());<br>            vc.setAvailableTimes(9);<br>            redisUtils.set(phoneNumber, vc, nowTo12ClockTime());<br>            // 模板ID<br>            String id = ArpSmsTemplateEnum.APP_DATA_VERIFICATION_CODE.getId();<br>            Integer parameters = ArpSmsTemplateEnum.APP_DATA_VERIFICATION_CODE.getParameters();<br>            AsyncManager.me().ttlExecute(AsyncMessageFactory.sendBusinessSms(id, new String[]{"+86" + phoneNumber}, new String[]{String.valueOf(random)}, parameters));<br>        }<br>    }

 

备注:短信接口是调用腾讯云接口,自行解决

 

4.接收验证码接口

 

1
<br> @Override<br>    public Integer getVerificationCode(String phoneNumber) {<br>        VerifyCodeVO verifyCodeVO = redisUtils.get(phoneNumber, VerifyCodeVO.class);<br>        if (verifyCodeVO == null) {<br>            throw new CustomException("请先获取手机验证码!");<br>        }<br>        long currentTimeMillis = System.currentTimeMillis();<br>        long lastTime = verifyCodeVO.getLastSendTime().getTime();<br>        // 10 分钟有效期<br>        if ((lastTime + (10 * 60 * 1000)) < currentTimeMillis) {<br>            throw new CustomException("验证码已过期,请重新获取!");<br>        }<br>        return verifyCodeVO.getVerifyCode();<br>    }

 

 以上就是视频直播系统源码,java 随机验证码 、10 分钟有效, 更多内容欢迎关注之后的文章

 

posted @   云豹科技-苏凌霄  阅读(94)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
历史上的今天:
2022-03-01 直播app源码,状态栏和导航栏设置成透明状态
2022-03-01 直播app开发,判断用户是否是首次登录平台
2022-03-01 直播源码,悬浮窗滚动渐变色效果
点击右上角即可分享
微信分享提示