发表于: 2020-06-11 23:36:29
1 1867
今天完成的事情:
1. 把验证验证码有效期 和 发送次数单独建了一张表
写了接口 实现类
发送短信的逻辑:
//先从数据库查询有没有
ForYzm forYzm = forYzmService.selectByPhone(tel);
if(forYzm==null) {
// 如果为空 插入个新的 手机号 验证码 创建时间 次数
long createTime = System.currentTimeMillis();
ForYzm forYzmA = new ForYzm();
forYzmA.setPhone(tel);
forYzmA.setPhone(pyzm);
forYzmA.setCreateAt(createTime);
forYzmA.setNum(1);
int a = forYzmService.insert(forYzmA);
}else {
// 如果不为空 根据手机号更改 新的验证码 新的创建时间 次数+1
int num = forYzm.getNum();
int numInce = num+1;
long createTime = System.currentTimeMillis();
ForYzm forYzmA = new ForYzm();
forYzmA.setPhone(tel);
forYzmA.setPhone(pyzm);
forYzmA.setCreateAt(createTime);
forYzmA.setNum(numInce);
boolean tf = forYzmService.updateByPhone(forYzmA);}
验证的逻辑:
//先从数据库查询
ForYzm forYzm = forYzmService.selectByPhone(phone);
//大于5次就不能发送
if(forYzm.getNum()>5){
String error = "请求验证码超过5次!请重新发送!";
logger.info("请求验证码超过5次!请重新发送!");
request.setAttribute("YzmError", error);
return "phoneRegister";
}
long NowTime = System.currentTimeMillis();
long startTime = forYzm.getCreateAt();
long endTime = NowTime - startTime;
//当前时间 - 创建时间 如果超过60秒就过期
if (endTime > 60*1000) {
String error = "验证码已经过期!请重新发送!";
logger.info("未发送验证码!");
request.setAttribute("YzmError", error);
return "phoneRegister";
}
//获取缓存中的验证么
String GetDBYzm = forYzm.getYzm();
logger.info("获取到的缓存里的验证码是" + GetDBYzm);
if (InputYzm.equals(GetDBYzm)) {
logger.info("验证码相同");
MyAccount account = new MyAccount();
account.setUsername(u);
account.setPassword(p);
account.setPhone(phone);
logger.info("要注册的用户数据为:" + account);
try {
//插入数据
int id = my.insertAccount(account);
logger.info("注册完毕生成的用户id为" + id);
logger.info("注册成功!");
//返回到登录页面
return "loginPage";
} catch (Exception e) {
String error = "注册失败,请再试试";
logger.info("注册失败,请重新输入");
request.setAttribute("error", error);
return "phoneRegister";
}
} else {
String error = "验证码错误,请重新输入!";
logger.info("验证码错误");
request.setAttribute("YzmError", error);
return "phoneRegister";
}
}
}
任务总结:
1.完成任务时间:
一 任务进度是否符合预期,是否延期,如果延期,原因是什么,如何避免下次继续延期
9天 比较慢
二 脑图分析
三 任务中遇到哪些疑难问题,最终是如何解决的,有哪些值得分享的收获
1. 刚开始就是第三方sdk看不懂
可以下载官方的demo 跟着跑一遍就好了
2. 不用SDK时,Java调用API需要 httpClient,
可以在java代码里模拟浏览器客户端发送请求。
3.验证码可以放在缓存里(前提是业务中已经增加了缓存功能)
验证码也可以放在数据库里,不过会稍微增大些数据库的压力
完全业务需求来选择。
4.Java不通过第三方,也有一个调用个人或企业邮件的发邮件功能
不过前提是你的邮箱 需要关闭登录保护,开启POP3/SMTP服务
整个任务最重要的就是要看懂第三方的demo
快速使用第三方的sdk或者api实现业务功能
深度思考:
1.什么是Annotation,怎么自定义Annotation,Annotation和XML的优缺点各是什么?
运行时的处理:某些注解可以在程序运行的时候接受代码的提取
如果不项目不了解,可能给开发和维护带来麻烦
参考: https://www.jianshu.com/p/ac276f068ea4
参考: https://blog.csdn.net/xsp_happyboy/article/details/80987484
2.如何调用第三方API实现图片上传?
通过工具类 传入bucket , accesskeyId , accessKeySecret , file ,address,key 来上传图片
3.怎么用Python写一个图片迁移脚本?
4.第三方的服务可靠吗,如果出现错误该怎么处理?
如果是确认自己的代码没问题,程序有异常。或者调用第三方服务时突然出现大量异常,就要去找第三方服务客服或技术去解决问题。


缩略图:每个对象储存服务器也可以自定义设置缩略图尺寸大小,添加水印,并生成固定模板,需要时直接调用即可。
8.为什么要使用第三方图片存储服务,好处是什么?
5.唯一缺点可能就是要花钱了
10.点对点短信和群发短信的通道区别是什么,怎么支持多种短信通道?
参考; https://www.lx598.com/hangyedongtai/958.html
评论