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

简介: 此接口是用户登陆后修改个人信息的接口,其中用户的Id和用户名是不允许修改的controller: //更新个人用户信息 @RequestMapping(value = "update_information.

此接口是用户登陆后修改个人信息的接口,其中用户的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>

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


img_fe2f8612c266bf5728cdd45b4d4aec97.png
image.png

换个邮箱测试:


img_bb0b869ee62bb66d5ddf8f0d50ae1a12.png
image.png
相关文章
|
4月前
|
Java 数据安全/隐私保护 uml
某系统提供了用户信息操作模块,用户可以修改自己的各项信息。为了使操作过程更加人性化,现使用备忘录模式对系统进行改进,使得用户在进行了错误操作之后可以恢复到操作之前的状态。用户信息中包含账号、密码、电话
该博客文章通过Java代码示例介绍了备忘录模式(Memento Pattern)的应用,通过创建备忘录对象保存用户信息的状态,允许用户在进行错误操作后能够恢复到之前的状态。
某系统提供了用户信息操作模块,用户可以修改自己的各项信息。为了使操作过程更加人性化,现使用备忘录模式对系统进行改进,使得用户在进行了错误操作之后可以恢复到操作之前的状态。用户信息中包含账号、密码、电话
|
7月前
|
监控 小程序 安全
社区每周丨支付有礼支持引导用户收藏小程序及人脸认证接口更新(8.7-8.11)
社区每周丨支付有礼支持引导用户收藏小程序及人脸认证接口更新(8.7-8.11)
178 11
|
7月前
|
存储 JSON 安全
用户登录注册系统的安全性设计
用户登录注册系统的安全性设计
182 4
|
中间件 数据库
eggjs 怎么实现更新用户信息接口去更新个性签名?
eggjs 怎么实现更新用户信息接口去更新个性签名?
101 0
eggjs 怎么实现更新用户信息接口去更新个性签名?
c实用技巧:文件统计信息和银行账户管理系统
c实用技巧:文件统计信息和银行账户管理系统
c实用技巧:文件统计信息和银行账户管理系统
|
JavaScript Java 网络安全
纳税服务系统一(用户模块)【简单增删改查、日期组件、上传和修改头像】(三)
为了更好地掌握SSH的用法,使用一个纳税服务系统来练手…..搭建SSH框架环境在上一篇已经详细地说明了。
186 0
纳税服务系统一(用户模块)【简单增删改查、日期组件、上传和修改头像】(三)
|
XML Java 网络安全
纳税服务系统一(用户模块)【简单增删改查、日期组件、上传和修改头像】(一)
为了更好地掌握SSH的用法,使用一个纳税服务系统来练手…..搭建SSH框架环境在上一篇已经详细地说明了。
124 0
纳税服务系统一(用户模块)【简单增删改查、日期组件、上传和修改头像】(一)
|
Java 网络安全
纳税服务系统一(用户模块)【简单增删改查、日期组件、上传和修改头像】(二)
为了更好地掌握SSH的用法,使用一个纳税服务系统来练手…..搭建SSH框架环境在上一篇已经详细地说明了。
168 0
纳税服务系统一(用户模块)【简单增删改查、日期组件、上传和修改头像】(二)
|
Java
纳税服务系统二(用户模块)【POI、用户唯一性校验】(一)
用户模块:本文主要的知识点有以下: 使用POI来操作Excel,对数据进行导入和导出 对用户进行唯一性校验,不能同时出现相同的用户
152 0
纳税服务系统二(用户模块)【POI、用户唯一性校验】(一)