脑干软件接口实现

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

接口分析

添加个人信息的主要难度就是 当这个人的信息存在时,我们在不影响数据库的情况下对数据库进行添加操作,主要还是修改功能,对数据进行修改时 还要注意update_time的字段会改变,但是有特殊情况,这个时候数据都一样,数据的随时间邮戳改变就会无法实现,就需要自己记录时间。

问题与解决

今天报错的问题就是for循环里面要是用了sql的东西 就会使运行速度变慢,同时sql对数据库进行操作时还有可能会自己莫名其妙的加上and 从而使程序出问题。

Service

 /**
    * 添加用户基本信息
    * @param tbUserInfoDto 用户基本信息
    * @return
    */
   boolean insertUserInfo(TbUserInfoDto tbUserInfoDto);

   /**
    * 查询用户基本信息
    * @param userId 用户id
    * @return
    */
   Map<String,Object> getUserInfo(Long userId);

Impl

 /**
    * 添加用户基本信息
    * @param tbUserInfoDto 用户基本信息
    * @return
    */
   @Override
   public boolean insertUserInfo(TbUserInfoDto tbUserInfoDto) {

       //设置用户表中的属性
       TbUser tbUser = new TbUser();
       BeanUtils.copyProperties(tbUserInfoDto,tbUser);
       //把这些属性保存到用户表中
       boolean save = iTbUserService.save(tbUser);
       //获取到当前这个用户的userid
       LambdaQueryWrapper<TbUser> queryWrapper = new LambdaQueryWrapper<>();
       queryWrapper.eq(TbUser::getCardNumber,tbUserInfoDto.getCardNumber());
       TbUser one = iTbUserService.getOne(queryWrapper);
       Long userId = one.getUserId();

       //文化程度进行查询 去文化程度表中进行查询这个人的文化程度id
       LambdaQueryWrapper<TbEducation> queryWrapper1 = new LambdaQueryWrapper<>();
       queryWrapper1.eq(TbEducation::getDegreeEducationName,tbUserInfoDto.getDegreeEducationName());
       TbEducation one1 = iTbEducationService.getOne(queryWrapper1);
       //进行添加这个人的文化程度
       TbUserEducation tbUserEducation = new TbUserEducation();
       tbUserEducation.setUserId(userId);
       tbUserEducation.setDegreeEducationId(one1.getDegreeEducationId());
       boolean save1 = iTbUserEducationService.save(tbUserEducation);

       //职业表中去查询这个人的职业id
       LambdaQueryWrapper<TbVocation> queryWrapper2 = new LambdaQueryWrapper<>();
       queryWrapper2.eq(TbVocation::getVocationName,tbUserInfoDto.getVocationName());
       TbVocation one2 = iTbVocationService.getOne(queryWrapper2);
       //进行添加这个人的职业程度
       TbUserVocation tbUserVocation = new TbUserVocation();
       tbUserVocation.setUserId(userId);
       tbUserVocation.setVocationId(one2.getVocationId());
       boolean save2 = iTbUserVocationService.save(tbUserVocation);

       //去婚姻表中查询这个人的婚姻状态id
       LambdaQueryWrapper<TbMarital> queryWrapper3 = new LambdaQueryWrapper<>();
       queryWrapper3.eq(TbMarital::getMaritalName,tbUserInfoDto.getMaritalName());
       TbMarital one3 = iTbMaritalService.getOne(queryWrapper3);
       //进行添加这个人的婚姻情况
       TbUserMarital tbUserMarital = new TbUserMarital();
       tbUserMarital.setUserId(userId);
       tbUserMarital.setMaritalId(one3.getMaritalId());
       boolean save3 = iTbUserMaritalService.save(tbUserMarital);

       //去支付表中找到这个人的支付类型id
       LambdaQueryWrapper<TbPay> queryWrapper4 = new LambdaQueryWrapper<>();
       queryWrapper4.eq(TbPay::getPayName,tbUserInfoDto.getPayName());
       TbPay one4 = iTbPayService.getOne(queryWrapper4);
       //进行添加这个人的支付id
       TbUserPay tbUserPay = new TbUserPay();
       tbUserPay.setUserId(userId);
       tbUserPay.setPayId(one4.getPayId());
       boolean save4 = iTbUserPayService.save(tbUserPay);
       return save && save1 && save2 && save3 && save4;
  }


   /**
    * 查询用户基本信息
    * @param userId 用户id
    * @return
    */
   @Override
   public Map<String, Object> getUserInfo(Long userId) {
       Map<String, Object> map = new HashMap<>();
       LambdaQueryWrapper<TbUser> queryWrapper = new LambdaQueryWrapper<>();
       queryWrapper.eq(TbUser::getUserId,userId);
       TbUser one = iTbUserService.getOne(queryWrapper);
       //把个人信息资料存入map中
       map.put("name",one.getName());
       map.put("cardNumber",one.getCardNumber());
       map.put("sex",one.getSex());
       map.put("birth",one.getBirth());
       map.put("phonenumber",one.getPhonenumber());
       map.put("homeAddress",one.getHomeAddress());
       map.put("nation",one.getNation());
       map.put("liveAlone",one.getLiveAlone());

       //文化程度进行查询 去文化程度表中进行查询这个人的文化程度id
       LambdaQueryWrapper<TbUserEducation> queryWrapper1 = new LambdaQueryWrapper<>();
       queryWrapper1.eq(TbUserEducation::getUserId,userId);
       TbUserEducation one1 = iTbUserEducationService.getOne(queryWrapper1);
       //再去文化程度表中找到这个人的文化程度名字加入map中
       LambdaQueryWrapper<TbEducation> queryWrapper2 = new LambdaQueryWrapper<>();
       queryWrapper2.eq(TbEducation::getDegreeEducationId,one1.getDegreeEducationId());
       TbEducation one2 = iTbEducationService.getOne(queryWrapper2);
       map.put("degreeEducationName",one2.getDegreeEducationName());

       //职业表中去查询这个人的职业id
       LambdaQueryWrapper<TbUserVocation> queryWrapper3 = new LambdaQueryWrapper<>();
       queryWrapper3.eq(TbUserVocation::getUserId,userId);
       TbUserVocation one3 = iTbUserVocationService.getOne(queryWrapper3);
       //去找到这个人的职业名称
       LambdaQueryWrapper<TbVocation> queryWrapper4 = new LambdaQueryWrapper<>();
       queryWrapper4.eq(TbVocation::getVocationId,one3.getVocationId());
       TbVocation one4 = iTbVocationService.getOne(queryWrapper4);
       map.put("vocationName",one4.getVocationName());

       //去婚姻表中查询这个人的婚姻状态id
       LambdaQueryWrapper<TbUserMarital> queryWrapper5 = new LambdaQueryWrapper<>();
       queryWrapper5.eq(TbUserMarital::getUserId,userId);
       TbUserMarital one5 = iTbUserMaritalService.getOne(queryWrapper5);
       //去婚姻表中找到这个人的婚姻状态
       LambdaQueryWrapper<TbMarital> queryWrapper6 = new LambdaQueryWrapper<>();
       queryWrapper6.eq(TbMarital::getMaritalId,one5.getMaritalId());
       TbMarital one6 = iTbMaritalService.getOne(queryWrapper6);
       map.put("mMaritalName",one6.getMaritalName());

       //去支付表中找到这个人的支付类型id
       LambdaQueryWrapper<TbUserPay> queryWrapper7 = new LambdaQueryWrapper<>();
       queryWrapper7.eq(TbUserPay::getUserId,userId);
       TbUserPay one7 = iTbUserPayService.getOne(queryWrapper7);
       //去找到这个人的支付类型名称
       LambdaQueryWrapper<TbPay> queryWrapper8 = new LambdaQueryWrapper<>();
       queryWrapper8.eq(TbPay::getPayId,one7.getPayId());
       TbPay one8 = iTbPayService.getOne(queryWrapper8);
       map.put("payName",one8.getPayName());

       return map;
  }

 

Controller

 /**
    * 添加用户个人资料
    * @param tbUserInfoDto 用户个人资料信息
    * @return
    */
   @PostMapping("/insertUserInfo")
   public AjaxResult insertUserInfo(TbUserInfoDto tbUserInfoDto){
       boolean flag = tbUserService.insertUserInfo(tbUserInfoDto);
       if (flag){
           return AjaxResult.success("添加成功!");
      }else{
           return AjaxResult.error("添加失败!");
      }
  }

   /**
    * 查找用户个人信息
    * @param userId 用户id
    * @return
    */
   @GetMapping("/getUserInfo")
   public AjaxResult getUserInfo(Long userId){
      Map<String,Object> map = tbUserService.getUserInfo(userId);
       if (map != null){
           return AjaxResult.success("查询成功!",map);
      }else{
           return AjaxResult.error("查询失败!");
      }
  }

 

总结

今天写了两个接口,一个查询一个添加,查询接口就是比较简单的接口,添加接口就是数据比较多,比较麻烦,主要的难点就是添加的时候如果这条数据已经存在那么我们就要先去获得这条数据对数据进行复制,再把复制的数据重新进行修改,其实这里的添加接口最后还是写成了修改接口,主要原因还是数据库搭建的期初问题,今天的状态还不错,继续努力。