个人资料 【项目商城】

简介: 个人资料 【项目商城】

个人资料



1. 个人资料-持久层

1.1 需要规划sql语句

1.根据用户信息的SQL语句

update t_user set phone=?,email=?,gender=?,modified_user=?,modified_time=? where uid=?

2.根据用户名来查询用户的数据

select * form t_user where uid=?
查询用户的数据不需要再重复开发。

1.2 接口与抽象方法

更新用户信息方法的定义。

/**
     * 更新用户的数据信息
     * @param user 用户的数据
     * @return 返回值为受影响的行数
     */
    Integer updateInfoByUid(User user);

1.3 抽象方法的映射

在UserMapper.xml文件中进行映射编写.

   <update id="updateInfoByUid">
        UPDATE t_user SET
      #  if表示条件标签,test属性接受的是一个返回值为Boolean值的条件  
      #   如果test的条件为真,则执行if内部的语句                        
            <if test="phone!=null">phone=#{phone},</if>
            <if test="email!=null">email=#{email},</if>
            <if test="gender!=null">gender=#{gender},</if>
            modified_user=#{modifiedUser},
            modified_time=#{modifiedTime}
        WHERE uid=#{uid}
    </update>

Usermapper–updateInfoByUid


测试

在测试类中完成功能的测试。

    @Test
    public void updateInfoByUid(){
        User user=new User();
        user.setUid(8);
        user.setPhone("1551110000");
        user.setEmail("test02@qq.com");
        user.setGender(1);
        Integer rows = userMapper.updateInfoByUid(user);
        System.out.println(rows);
    }

UserMapperTests–updateInfoByUid


2. 个人资料-业务层

2.1 异常规划

1.设计两个功能:

  • 当打开页面时,获取用户的信息并且填充到对应的文本框中。
  • 检测用户是否点击了修改按钮,如果检测到执行修改用户信息的操作。
    2.打开页面时可能找不到用户的数据,点击修改按钮之前需要再次检测用户的数据是否存在。

接口和抽象方法

主要有两个功能的模块,对应的是两个抽象的方法的设计。

  /**
     * 根据用户的uid查询用户的数据
     * @param uid 用户的uid
     * @return 用户的数据
     */
    User getByUid(Integer uid);
    /**
     * 更新用户的数据操作
     * @param uid 用户的uid
     * @param username 用户的名称
     * @param user 用户对象的数据
     */
    void changeInfo(Integer uid,String username,User user);

2.3 实现抽象方法

在UserServiceImpl类中添加两个抽象方法的具体实现。

  @Override
    public User getByUid(Integer uid) {
        User result = userMapper.findByUid(uid);
        if (result==null||result.getIsDelete()==1){
            throw new UserNotFoundException("用户数据不存在");
        }
        User user=new User();
        user.setUsername(result.getUsername());
        user.setPhone(result.getPhone());
        user.setEmail(result.getEmail());
        user.setGender(result.getGender());
        return user;
    }
    /**
     *user对象中的数据phone\email\gender,
     * 手动在将uid\username封装user对象中
     */
    @Override
    public void changeInfo(Integer uid, String username, User user) {
        User result = userMapper.findByUid(uid);
        if (result==null||result.getIsDelete()==1){
            throw new UserNotFoundException("用户数据不存在");
        }
        user.setUid(uid);
        user.setUsername(username);
        user.setModifiedUser(username);
        user.setModifiedTime(new Date());
        Integer rows = userMapper.updateInfoByUid(user);
        if (rows!=1){
            throw new UpdateException("更新数据时产生未知的异常");
        }
    }

IUserService–changeInfo

测试

在测试类进行单元测试

  @Test
    public void getByUid(){
        User user = userService.getByUid(8);
        System.out.println(user);
    }
    @Test
    public void changeInfo(){
        User user=new User();
        user.setPhone("17844440000");
        user.setEmail("test02@168.com");
        user.setGender(0);
        userService.changeInfo(8,"test02",user);
    }


UserServiceTests–changeInfo

3. 个人资料-控制层

3.1 处理异常

暂不

3.2 设计请求

1.设置一打开页面就发送数据的查询。

/user/get_by_uid
GET
HttpSession sessiom
JosnResult<User>

2.点击修改按钮发送用户的数据修改操作请求的设计

/users/change_info
POST
User user,HttpSession sessiom
JsonRest<Void>

3.3 处理请求

  @RequestMapping("get_by_uid")
    public JsonResult<User> getByUid(HttpSession session){
        User data = userService.getByUid(getuidFromSession(session));
        return new JsonResult<User>(OK,data);
    }
    @RequestMapping("change_info")
    public JsonResult<Void> changeInfo(User user,HttpSession session){
        //user对象有四个部分的数据:username、phone、email、gender
        //uid数据需要再次封装到user对象中
        Integer uid = getuidFromSession(session);
        String username = getUsernameFromSession(session);
        userService.changeInfo(uid,username,user);
        return new JsonResult<Void>(OK);
    }

UserController–changeInfo


测试

http://localhost:8080/users/get_by_uid

http://localhost:8080/users/change_info?phone=12344445555&email=test02@qq.com&gender=0

4. 个人资料-前端页面

1.在打开userdata.html页面自动发送ajax请求(get_by_uid),查询到的数据填充到这个页面上。

      /**
       * 一旦检测到当前的页面被加载
       * $(document).ready(function() {
       *    // 编写业务代码
       * });
       */
      $(document).ready(function() {
        $.ajax({
          url: "/users/get_by_uid",
          type: "GET",
          dataType: "json",
          success: function(json) {
            if (json.state == 200) {
              console.log("username=" + json.data.username);
              console.log("phone=" + json.data.phone);
              console.log("email=" + json.data.email);
              console.log("gender=" + json.data.gender);
              //将查询的数据重新设置到控件中
              $("#username").val(json.data.username);
              $("#phone").val(json.data.phone);
              $("#email").val(json.data.email);
              //prop()表示给某个元素添加属性及属性的值
              let radio = json.data.gender == 0 ? $("#gender-female") : $("#gender-male");
              radio.prop("checked", "checked");
            } else {
              alert("用户数据不存在" + json.message);
            }
          },
          error: function(xhr) {
            alert("查询用户信息产生未知的异常" + xhr.status);
          }
        });
      });

2.在检测到用户点击到了修改按钮之后发送一个ajax请求(change_info)。

README–个人资料


测试


相关文章
|
6天前
|
移动开发 容器
订水商城H5实战教程-04用户注册
订水商城H5实战教程-04用户注册
|
6天前
|
JavaScript 数据安全/隐私保护
|
6天前
|
数据安全/隐私保护
|
6天前
|
小程序 前端开发 数据管理
订水商城实战教程-06店铺信息
订水商城实战教程-06店铺信息
|
6天前
|
JavaScript 前端开发 索引
会员管理系统实战开发教程04-会员开卡
会员管理系统实战开发教程04-会员开卡
|
9月前
|
SQL Java 数据库连接
用户注册【项目 商城】2
用户注册【项目 商城】2
40 0
|
9月前
|
SQL JSON 前端开发
加入购物车【项目 商城】
加入购物车【项目 商城】
34 0
|
6月前
|
NoSQL 数据库 Redis
淘东电商项目(20) -会员唯一登录
淘东电商项目(20) -会员唯一登录
42 0
|
7月前
|
前端开发 JavaScript 容器
会员管理系统实战开发教程05-会员开卡
会员管理系统实战开发教程05-会员开卡
|
9月前
|
SQL JavaScript 前端开发
用户注册【项目 商城】1
用户注册【项目 商城】1
42 0