8、用户更新个人信息接口开发

此接口是用户登陆后修改个人信息的接口,其中用户的Id和用户名是不允许修改的
controller

 //更新个人用户信息
    @RequestMapping(value = "update_information.do",method = RequestMethod.POST)
    @ResponseBody
    public  ServerResponse<User> update_information(HttpSession session,User user){
        //防止越权问题,我们将传过来的用户Id设置为Session里面获取当前登录用户的Id
        User currentUser= (User) session.getAttribute(Const.CURRENT_USER);
        if(currentUser==null){
            return  ServerResponse.createByErrorMessage("用户未登录");
        }
    //设置userId和username是不能被修改的
        user.setId(currentUser.getId());
        user.setUsername(currentUser.getUsername());

        ServerResponse<User> response= iUserService.updateInformation(user);

        if(response.isSuccess()){
            session.setAttribute(Const.CURRENT_USER,response.getData());
        }
        return response;
    }

server:

    //修改个人信息
    ServerResponse<User> updateInformation(User user);

serverImpl:

//修改个人信息
    public  ServerResponse<User> updateInformation(User user){

        //username是不能被更新的
        //email也要进行校验,校验新的email是不是已经存在,如果当存在相同的email的话,不能是我们当前的用户的

        int resuletCount=userMapper.checkEmailByUserId(user.getEmail(),user.getId());

        if(resuletCount>0){
            return ServerResponse.createByErrorMessage("邮箱已被使用,请更换后重试");
        }

        User updateUser=new User();
        updateUser.setId(user.getId());
        updateUser.setEmail(user.getEmail());
        updateUser.setPhone(user.getPhone());
        updateUser.setQuestion(user.getQuestion());
        updateUser.setAnswer(user.getAnswer());

        int updateCount=userMapper.updateByPrimaryKeySelective(updateUser);

        if(updateCount>0){
            return  ServerResponse.createBySuccess("更行个人信息成功",updateUser);
        }
            return ServerResponse.createByErrorMessage("更新个人信息失败,请稍后重试");

    }

Mapper:
更新新的Mapper可以直接用逆向工程生成的工具,直接调用即可,故而Mapper.xml也是我们不用修改的。
下面,我们来介绍下上面serverImpl代码中根据用户的Id来校验邮箱是否可用:
email进行校验,校验新的email是不是已经存在,如果当存在相同的email的话,不能是我们当前的用户的,
Mapper:

/根据用户的Id查询邮箱是否可用
    int checkEmailByUserId(@Param("email") String email, @Param("userId") Integer userId);

Mapper.xml

  <select id="checkEmailByUserId" resultType="int" parameterType="map" >
    select count(1) from mmall_user
    where email = #{email}
    and id != #{userId}
  </select>

接口测试:
测试邮箱不可用(即使用原邮箱)


image.png

换个邮箱测试:


image.png

推荐阅读更多精彩内容

  • 1 Mybatis入门 1.1 单独使用jdbc编程问题总结 1.1.1 jdbc程序 上边使...
    edrain阅读 2,244评论 0 37
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 24,350评论 2 82
  • 曾经我很向往有两个孩子的生活,两个差不多大的孩子一起长大多有趣,彼此有个玩伴,彼此有个依靠。向往的生活往往跟现实生...
    德艺MM阅读 34评论 0 0
  • 第九章 诱杀(4) “失踪?”马元良作了个鬼脸,“应该叫死里逃生,以后再慢慢跟你说。现在有件事要请你帮忙。...
    梦网中人阅读 92评论 0 5
  • 这几年有很多描写青春的电影,但是却很少有真正来书写我们年少青春的电影。不错,白衬衣少年,纯洁的让人心碎的爱情再加上...
    静默的停靠阅读 50评论 0 0