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
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值