个人信息接口修改删除

发布时间 2023-04-06 19:05:47作者: 超级无敌暴龙战士_5G

接口分析

修改个人基本信息的时候,前端需要传给我们一个userId,这个userid也是需要前端在登录的时候就获得这个id然后传输给后端,根据id去数据库进行修改,修改的代码问题还是在于user表中的update_time的字段需要实时更新,其他的修改基本就是和添加功能中的基本差不错,删除功能就简单点,主要是因为这两张表中间有连接表,所以我直接把连接表中的数据进行删除就行。

问题与解决

Service

 /**
    * 修改用户基本信息
    * @param tbUserInfoDto 用户基本信息
    * @return
    */
   boolean postUserInfo(Long userId,TbUserInfoDto tbUserInfoDto);

   /**
    * 删除用户个人信息
    * @param userId 用户id
    * @return
    */
   boolean deleteUserInfo(Long userId);

Impl

 /**
    * 修改用户基本信息
    * @param tbUserInfoDto 用户基本信息
    * @return
    */
   @Override
   public boolean postUserInfo(Long userId,TbUserInfoDto tbUserInfoDto) {


       //设置用户表中的属性
       TbUser tbUser = new TbUser();
       BeanUtils.copyProperties(tbUserInfoDto,tbUser);

       //把这些属性保存到用户表中
       LambdaQueryWrapper<TbUser> queryWrapper = new LambdaQueryWrapper<>();
       queryWrapper.eq(TbUser::getUserId,userId);
       boolean update = iTbUserService.update(tbUser, queryWrapper);


       //文化程度进行查询 去文化程度表中进行查询这个人的文化程度id
       LambdaQueryWrapper<TbEducation> queryWrapper1 = new LambdaQueryWrapper<>();
       queryWrapper1.eq(TbEducation::getDegreeEducationName,tbUserInfoDto.getDegreeEducationName());
       TbEducation one1 = iTbEducationService.getOne(queryWrapper1);
       //进行修改这个人的文化程度所对应的id
       TbUserEducation tbUserEducation = new TbUserEducation();
       tbUserEducation.setUserId(userId);
       tbUserEducation.setDegreeEducationId(one1.getDegreeEducationId());
       LambdaQueryWrapper<TbUserEducation> queryWrapper2 = new LambdaQueryWrapper<>();
       queryWrapper2.eq(TbUserEducation::getUserId,userId);
       boolean update1 = iTbUserEducationService.update(tbUserEducation, queryWrapper2);

       //职业表中去查询这个人的职业id
       LambdaQueryWrapper<TbVocation> queryWrapper3 = new LambdaQueryWrapper<>();
       queryWrapper3.eq(TbVocation::getVocationName,tbUserInfoDto.getVocationName());
       TbVocation one3 = iTbVocationService.getOne(queryWrapper3);
       //进行修改这个人的职业程度id
       TbUserVocation tbUserVocation = new TbUserVocation();
       tbUserVocation.setUserId(userId);
       tbUserVocation.setVocationId(one3.getVocationId());
       LambdaQueryWrapper<TbUserVocation> queryWrapper4 = new LambdaQueryWrapper<>();
       queryWrapper4.eq(TbUserVocation::getUserId,userId);
       boolean update2 = iTbUserVocationService.update(tbUserVocation, queryWrapper4);


       //去婚姻表中查询这个人的婚姻状态id
       LambdaQueryWrapper<TbMarital> queryWrapper5 = new LambdaQueryWrapper<>();
       queryWrapper5.eq(TbMarital::getMaritalName,tbUserInfoDto.getMaritalName());
       TbMarital one5 = iTbMaritalService.getOne(queryWrapper5);
       //进行修改这个人的婚姻情况id
       TbUserMarital tbUserMarital = new TbUserMarital();
       tbUserMarital.setUserId(userId);
       tbUserMarital.setMaritalId(one5.getMaritalId());
       LambdaQueryWrapper<TbUserMarital> queryWrapper6 = new LambdaQueryWrapper<>();
       queryWrapper6.eq(TbUserMarital::getUserId,userId);
       boolean update3 = iTbUserMaritalService.update(tbUserMarital, queryWrapper6);


       //去支付表中找到这个人的字符类型id
       LambdaQueryWrapper<TbPay> queryWrapper7 = new LambdaQueryWrapper<>();
       queryWrapper7.eq(TbPay::getPayName,tbUserInfoDto.getPayName());
       TbPay one7 = iTbPayService.getOne(queryWrapper7);
       //进行修改这个人的支付id
       TbUserPay tbUserPay = new TbUserPay();
       tbUserPay.setUserId(userId);
       tbUserPay.setPayId(one7.getPayId());
       LambdaQueryWrapper<TbUserPay> queryWrapper8 = new LambdaQueryWrapper<>();
       queryWrapper8.eq(TbUserPay::getUserId,userId);
       boolean update4 = iTbUserPayService.update(tbUserPay, queryWrapper8);

       return update && update1 && update2 && update3 && update4;

  }


   /**
    * 删除用户个人信息
    * @param userId 用户id
    * @return
    */
   @Override
   public boolean deleteUserInfo(Long userId) {
       //对用户的个人信息进行删除
       LambdaQueryWrapper<TbUser> queryWrapper = new LambdaQueryWrapper<>();
       queryWrapper.eq(TbUser::getUserId,userId);
       TbUser one = iTbUserService.getOne(queryWrapper);
       //对个人信息的数据删除 set null不让他参与sql语句
       TbUser tbUser  = new TbUser();
       BeanUtils.copyProperties(one,tbUser);
       tbUser.setName(null);
       tbUser.setCardNumber(null);
       tbUser.setSex(null);
       tbUser.setBirth(null);
       tbUser.setPhonenumber(null);
       tbUser.setHomeAddress(null);
       tbUser.setNation(null);
       tbUser.setLiveAlone(null);
       //先进行删除
       boolean remove = iTbUserService.remove(queryWrapper);
       //创建一个容器 用来装数据
       TbUser tbUser1 = new TbUser();
       tbUser1.setUserId(one.getUserId());
       //先保存,再进行修改,修改的目的就是更改update_time 字段
       boolean save = iTbUserService.save(tbUser1);
       boolean update = iTbUserService.update(tbUser,queryWrapper);

       // 去文化程度表中进行删除这个人的文化程度信息
       LambdaQueryWrapper<TbUserEducation> queryWrapper1 = new LambdaQueryWrapper<>();
       queryWrapper1.eq(TbUserEducation::getUserId,userId);
       boolean remove1 = iTbUserEducationService.remove(queryWrapper1);


       //职业表中去删除这个人的职业信息
       LambdaQueryWrapper<TbUserVocation> queryWrapper2 = new LambdaQueryWrapper<>();
       queryWrapper2.eq(TbUserVocation::getUserId,userId);
       boolean remove2 = iTbUserVocationService.remove(queryWrapper2);

       //去婚姻表中删除这个人的婚姻状态信息
       LambdaQueryWrapper<TbUserMarital> queryWrapper3 = new LambdaQueryWrapper<>();
       queryWrapper3.eq(TbUserMarital::getUserId,userId);
       boolean remove3 = iTbUserMaritalService.remove(queryWrapper3);

       //去支付表中删除这个人的字符类型信息
       LambdaQueryWrapper<TbUserPay> queryWrapper4 = new LambdaQueryWrapper<>();
       queryWrapper4.eq(TbUserPay::getUserId,userId);
       boolean remove4 = iTbUserPayService.remove(queryWrapper4);
       return remove && remove4 && remove1 && remove2 && remove3 && save && update;

  }

 

Controller

  /**
    * 修改用户基本信息
    * @param tbUserInfoDto 用户基本信息
    * @return
    */
   @PostMapping("/postUserInfo")
   public AjaxResult postUserInfo(Long userId,TbUserInfoDto tbUserInfoDto){
       boolean flag = tbUserService.postUserInfo(userId,tbUserInfoDto);
       if (flag){
           return AjaxResult.success("修改成功!");
      }else{
           return AjaxResult.error("修改失败!");
      }
  }

   /**
    * 删除患者用户高血压敏感指数信息
    * @param userId 用户id
    * @return
    */
   @DeleteMapping("/deleteUserInfo")
   public AjaxResult deleteUserInfo(Long userId){
       boolean flag = tbUserService.deleteUserInfo(userId);
       if (flag){
           return AjaxResult.success("删除成功!");
      }else {
           return AjaxResult.error("删除失败!");
      }
  }

 

总结

今天写了两个接口,一个修改,一个删除,主要难度就是在于修改,修改接口的主要不是难度,而是特别的繁琐,同时现在修改的数据再数据库为空的时候很容易报错,所以我们需要自己代入一个数据回滚的功能,暂时还没加,后面学下,给补上,就是修改功能的代码量比较多,删除的代码量比较少,难度也较低,删除的功能就把连接表里面的userId相同时进行删除,其实还是比较简单的,今天状态不错,继续保持。