发表于: 2018-01-11 23:29:31

2 416


今天做的事情:


               学生证模块的手机号邮箱验证。


                使用之前在任务七做的工具类,拿过来就可以用。这里不贴代码了。都是SDK的东西。


                发送手机短信之后成功信息

              

                 log信息:


              


                邮件发送成功。


 

 

                


             成功。邮箱和手机号,是测试成功才显示出来的。



            

               

             邮箱测试成功。



             关于文章表的点赞数量,收藏数量,和点赞状态,收藏状态。特意查了下。


               是不是可以这样,当用户点击之后,前端做操作,点赞数量会显示增加1,攒够指定数量,会执行脚本修改,或者按上面说的,按小时来。



               再来说一下注册思路。


if (null == id || null == address || null == type) {
model.addAttribute("code", -200000);
return "data/json";
}

User user = userService.getObjectById(id);
//防空指针
if (user.getVerificationTimes() == null) {
user.setVerificationTimes(0L);
}

//生成随机的4位验证码
String validateCode = ValidateCodeUtil.getRandomString(4);
//发送模块
if (type == 1) {
try {
//验证限流
     if (user.getVerificationTimes() > 3) {
model.addAttribute("code", 1003);
return "/data/json";
}
//保证手机号码不重复
     Map<String, Object> param = DynamicUtil.getUserByMobile(address,id);
List<Long> userNumber = userService.getIdsByDynamicCondition(User.class, param, 0, 4);
if (0 != userNumber.size()) {
model.addAttribute("code", 1002);
return "/data/json";
}
//String phone = "13083899038";
     sms.sendMessage(address, validateCode);
user.setVerificationTimes(user.getVerificationTimes() + 1);
user.setVerificationCode(validateCode);
userService.update(user);
} catch (Throwable e) {
e.printStackTrace();
model.addAttribute("code", 1004);
}
} else if (type == 2) {
try {
//保证邮箱地址不重复
     Map<String, Object> param = DynamicUtil.getUserByMail(address);
List<Long> userNumber = userService.getIdsByDynamicCondition(User.class, param, 0, 4);
if (0 != userNumber.size()) {
model.addAttribute("code", 1002);
return "/data/json";
}
SendEmail.ceshi(address, validateCode);
user.setVerificationCode(validateCode);
userService.update(user);
} catch (Throwable e) {
e.printStackTrace();
model.addAttribute("code", 1004);
}
}

model.addAttribute("code", 0);


              首先发送手机号短信或者邮箱,做一个接口就足够用,加一个参数来区别是手机号还是邮箱,int type, 还有 手机或邮箱 就 address表示, 用户id.

 

              先判断不为空,生成4位数的随机验证码, 再使用工具类,map拼接条件去查询 这个id有没有这个手机号。没有的话,发送信息。


            

              有工具类,做起来还好,如果没有的话,确实会费周折。。


           

             

              晚上听明达小课堂,mybatis的逻辑查询和物理查询,自己搜搜了解下。


              1首先mybatis自带的分页功能是逻辑分页,但如果数据量超大会造成内存溢出。

             

              dao层代码:

                               

  1. public List<WorkflowRecord> queryByMybatis(int startRow, int endRow) {  
  2.           
  3.         RowBounds rowBounds = new RowBounds(startRow,endRow);  
  4.         System.out.println("rowBounds Offset:"+rowBounds.getOffset());  
  5.         System.out.println("rowBounds Limit:"+rowBounds.getLimit());  
  6.         WorkflowRecord workflowRecord=new WorkflowRecord();  
  7.         return sqlSessionTemplate.selectList(QUERY_BY_MYBYTAIS,workflowRecord,rowBounds);  
  8.     } 

                         

              而sql语句就是 一条 select  * from t_table

              offset:从第n条开始取;limit:取多少条


             

           2 物理分页


              

  1. @Override  
  2.     public List<WorkflowRecord> queryBySql(int startRow, int endRow) {  
  3.           
  4.               Map<String, Object> params =new HashMap<String, Object>();              
  5.         params.put("startRow"new Integer(startRow));      
  6.                 params.put("endRow"new Integer(endRow));  
  7.           
  8.         return sqlSessionTemplate.selectList(QUERY_BY_SQL, params);  
  9.     } 


             sql语句


  1. <select id="queryBySql" resultMap="proRecResult">  
  2.       
  3.      select *  
  4.         from (SELECT ROWNUM r, t1.*  
  5.            from (  
  6.               select * from T_PROREC ) t1  
  7.         <![CDATA[  
  8.              where rownum <= #{endRow})  
  9.            where r >= #{startRow}   
  10.         ]]>  
  11.           
  12. </select> 


            

分页的分类:

1.物理分页:只从数据库中查询当前页的数据

优点:不占用很多内存   缺点:效率比价低(相比于逻辑分页)

2.逻辑分页:从数据库将所有记录查询出来,存储到内存中,展示当前页,然后数据再直接从内存中获取

优点:效率高              缺点:占用内存比较高

                       




遇到的问题:


                无



收获:


              完成学生证模块

            

            禅道:http://task.ptteng.com/zentao/project-task-514-byModule-59.html


      





返回列表 返回列表
评论

    分享到