糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > java 瑞吉外卖 day5 套餐管理业务 套餐新增 套餐分页查询 套餐修改 套餐停售起

java 瑞吉外卖 day5 套餐管理业务 套餐新增 套餐分页查询 套餐修改 套餐停售起

时间:2023-01-22 14:26:07

相关推荐

java 瑞吉外卖 day5 套餐管理业务 套餐新增 套餐分页查询 套餐修改 套餐停售起

新增套餐

准备工作:

套餐信息分页查询

前面已经写了好几个分页查询了,这里查询的关键点,是套餐分类名称,不在套餐表中,我们要到别的表里拿,然后封装进setmealDto

@GetMapping("/page")public R page(int page,int pageSize,String name){Page<Setmeal> pageInfo =new Page<>(page,pageSize);Page<SetmealDto> dtoPage =new Page<>();LambdaQueryWrapper<Setmeal> queryWrapper =new LambdaQueryWrapper<>();//如果有传name就增加name筛选queryWrapper.eq(null!=name,Setmeal::getName,name);//按照更新时间降序queryWrapper.orderByDesc(Setmeal::getUpdateTime);setmealService.page(pageInfo,queryWrapper);//将装配好pageInfo 拷贝到dtoPage里 ,records 我们自行操作BeanUtils.copyProperties(pageInfo,dtoPage,"records");List<Setmeal> setmeals = pageInfo.getRecords();//将每页个setmeal都拷贝到setmealDto里,并且查询对应的categoryName然后封装进setmealDto,在合并成集合List<SetmealDto> setmealDtos = setmeals.stream().map((item) -> {SetmealDto setmealDto = new SetmealDto();BeanUtils.copyProperties(item, setmealDto);Long id = item.getCategoryId();Category category = categoryService.getById(id);String categoryName = category.getName();setmealDto.setCategoryName(categoryName);return setmealDto;}).toList();//将我们处理完成的集合,设置成新page的新recordsdtoPage.setRecords(setmealDtos);return new R(1,"分页查询成功",dtoPage);}

套餐删除

SetmealService:

@Overridepublic void removeWithDish(List<Long> ids) {//首先判断查询的内容有没有状态是在售的,如果在售,就抛自定异常LambdaQueryWrapper<Setmeal> queryWrapper =new LambdaQueryWrapper<>();queryWrapper.in(Setmeal::getId,ids);queryWrapper.eq(Setmeal::getStatus,1);long count=this.count(queryWrapper);//如果有在售的if (count>0){throw new CustomException("某个套餐正在售卖中,请停售再删除");}//根据ids删除套餐this.removeByIds(ids);//接下来我们要删除 套餐相关菜品的数据LambdaQueryWrapper<SetmealDish> queryWrapper1 =new LambdaQueryWrapper<>();queryWrapper1.in(SetmealDish::getSetmealId,ids);setmealDishService.remove(queryWrapper1);}

套餐设置批量停售或者起售

因为批量跟单个访问的请求都是一个地址,我们直接做一个方法就可以了

注意,当我们封装ids成List集合的时候,必须要用@RequestParam 否则会报错

@PostMapping("/status/{status}")public R statusChange(@PathVariable int status,@RequestParam List<Long> ids){//创建setmeal集合用作修改status条件List<Setmeal> setmeals =new ArrayList<>();//遍历id并携带status封装成setmeal对象然后装进集合for (Long id : ids) {Setmeal setmeal =new Setmeal();setmeal.setId(id);setmeal.setStatus(status);setmeals.add(setmeal);}setmealService.updateBatchById(setmeals);return new R(1,"修改状态成功");}

套餐修改

通过传入的ID进行数据回显:

SetmealServiceImpl:

@Overridepublic SetmealDto getWithDish(Long id) {//先根据id查询到套餐的数据Setmeal setmeal = this.getById(id);//拷贝到SetmealDto中SetmealDto setmealDto =new SetmealDto();BeanUtils.copyProperties(setmeal,setmealDto);//接下来我们查询套餐里的菜品信息LambdaQueryWrapper<SetmealDish> queryWrapper =new LambdaQueryWrapper<>();queryWrapper.eq(SetmealDish::getSetmealId,id);List<SetmealDish> setmealDishes = setmealDishService.list(queryWrapper);//将菜品信息封装进 dtosetmealDto.setSetmealDishes(setmealDishes);//封装完成 返回return setmealDto;}

通过页面的数据,提交封装成SetmealDto类数据保存:

SetmealServiceImpl:

public void updateWithDish(SetmealDto setmealDto){//首先更新我们的套餐this.updateById(setmealDto);//然后我们清除原来的套餐跟菜品联系数据 封装新的数据、LambdaQueryWrapper<SetmealDish> queryWrapper =new LambdaQueryWrapper<>();queryWrapper.eq(SetmealDish::getSetmealId,setmealDto.getId());setmealDishService.remove(queryWrapper);List<SetmealDish> setmealDishes = setmealDto.getSetmealDishes();List<SetmealDish> setmealDishes1 = setmealDishes.stream().map((item) -> {//将每个setmealDish添加上套餐iditem.setSetmealId(setmealDto.getId());return item;}).toList();//把新数据添加进去setmealDishService.saveBatch(setmealDishes1);}

手机验证码登录

短信发送

修改过滤器

@PostMapping("/sendMsg")public R sendMsg(@RequestBody User user, HttpSession session){//获取手机号String phone =user.getPhone();//如果手机号不为空if (StringUtils.isNotEmpty(phone)){//用ValidateCodeUtils生成随机的4位验证码String code = ValidateCodeUtils.generateValidateCode(4).toString();//这里我们只是测试,所以用log查看code然后登录就可以了log.info("code={}",code);//调用阿里云提供的短信服务API完成发送短信// SMSUtils.sendMessage("瑞吉外卖","",phone,code);//需要将生成的验证码保存到Sessionsession.setAttribute(phone,code);return new R(1,"验证码发送成功");}return new R(0,"短信发送失败");}

@PostMapping("/login")//这里传了code但是用User没法接收,我们用Map接收public R login(@RequestBody Map map,HttpSession session){//获取手机号String phone = map.get("phone").toString();//获取验证码String code = map.get("code").toString();//从session获得保存的验证码然后比对Object codeInSession = session.getAttribute(phone);if (codeInSession!=null&&codeInSession.equals(code)){//说明登录成功// 判断当前手机号是否为新用户,如果是就自动完成注册LambdaQueryWrapper<User> queryWrapper =new LambdaQueryWrapper<>();queryWrapper.eq(User::getPhone,phone);User user = userService.getOne(queryWrapper);if (user==null){user=new User();user.setPhone(phone);user.setStatus(1);userService.save(user);}session.setAttribute("user",user.getId());return new R(1,"登陆成功",user);}return new R(0,"登录失败");}

java 瑞吉外卖 day5 套餐管理业务 套餐新增 套餐分页查询 套餐修改 套餐停售起售设置 短信服务

如果觉得《java 瑞吉外卖 day5 套餐管理业务 套餐新增 套餐分页查询 套餐修改 套餐停售起》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。