视频直播系统源码,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 分钟有效, 更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2022-03-01 直播app源码,状态栏和导航栏设置成透明状态
2022-03-01 直播app开发,判断用户是否是首次登录平台
2022-03-01 直播源码,悬浮窗滚动渐变色效果