day05
新增套餐:
@GetMapping("/list") public R<List<Dish>> list(Dish dish){ //构造查询条件 LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(dish.getCategoryId() != null, Dish::getCategoryId, dish.getCategoryId()); //添加条件,查询状态为1(1为起售,0为停售)的菜品 queryWrapper.eq(Dish::getStatus,1); List<Dish> list = dishService.list(queryWrapper); //添加排序条件 return R.success(list); }
这步回显菜品代码倒是没啥好说的 但是一定要注意访问时候的数据是什么 决定他在哪隔层 用什么方法
添加套餐 就是注意那里没有添加哪个
@Autowired private SetmealDishService setmealDishService; @Override public void saveWithDish(SetmealDto setmealDto) { super.save(setmealDto); List<SetmealDish> setmealDishes = setmealDto.getSetmealDishes(); List<SetmealDish> collect = setmealDishes.stream().map((item) -> { Long id = setmealDto.getId(); item.setSetmealId(id); return item; }).collect(Collectors.toList()); setmealDishService.saveBatch(collect); }
套餐信息分页查询
} @GetMapping("/page") public R<Page> list(int page, int pageSize, String name){ Page<Setmeal> pageInfo=new Page<>(page,pageSize); Page<SetmealDto> dtoPage = new Page<>(); //构造查询条件对象 LambdaQueryWrapper<Setmeal> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.like(name != null, Setmeal::getName, name); //操作数据库 setmealService.page(pageInfo,queryWrapper); BeanUtils.copyProperties(pageInfo,dtoPage,"record"); List<SetmealDto> collect = pageInfo.getRecords().stream().map((item) -> { SetmealDto setmealDto = new SetmealDto(); BeanUtils.copyProperties(item, setmealDto); Long categoryId = item.getCategoryId(); Category byId = categoryService.getById(categoryId); String name1 = byId.getName(); setmealDto.setCategoryName(name1); return setmealDto; }).collect(Collectors.toList()); dtoPage.setRecords(collect); return R.success(dtoPage); }
第一 查询用like、
第二:如果再插入属性找不到插入地方就new一个
删除套餐:
public void removeWithDish(List<Long> ids) { LambdaQueryWrapper<Setmeal> queryWrapper=new LambdaQueryWrapper<>(); queryWrapper.in(Setmeal::getId,ids); queryWrapper.eq(Setmeal::getStatus,1); int count = super.count(queryWrapper); if(count>0){ throw new CustomException("套餐正在售卖中,不能删除"); } super.removeByIds(ids); LambdaQueryWrapper<SetmealDish> queryWrapper1=new LambdaQueryWrapper<>(); queryWrapper1.in(SetmealDish::getSetmealId,ids); setmealDishService.remove(queryWrapper1); }
短信发送:
现在首先处理用户登陆状态:在过滤器里加入
“/user/sendMsg”, //移动端发送短信2“/user/login” //移动端登录
然后首先有一个发送信息的代码 这个不占了 就是简单的生成四位数
然后你要首先发送i个二维码 要注意首先你等请求体是user 然后把你的电话号码和验证码放进session里啊方便之后验证
@PostMapping("/sendMsg") public R<String> sendMsg(@RequestBody User user, HttpSession session) { String generate = ValidateCodeUtils.generate(); String phone = user.getPhone(); log.info(phone); log.info(generate); session.setAttribute(phone,generate); return R.success("成功"); }
发送完之后 要验证 就是把你页面输入的东西 放进请求体力 跟你丢找的session里的验证码验证 一致就通过 此外要注意 你验证之后 如果数据库里没有 是新用户 就要添加 还要放进session里 方便登录过滤
@PostMapping("/login") public R<User> login(@RequestBody Map map, HttpSession session){ String phone = map.get("phone").toString(); String code = map.get("code").toString(); String code1 =session.getAttribute(phone).toString(); if (code != null &&code.equals(code1)) { log.info("xingle...."); LambdaQueryWrapper<User> queryWrapper=new LambdaQueryWrapper<>(); queryWrapper.eq(User::getPhone,phone); User user = userService.getOne(queryWrapper); if(user==null){ user = new User(); user.setPhone(phone); userService.save(user); } session.setAttribute("user",user.getId()); return R.success(user);} return R.error("登录失败"); }
过滤层:
if(request.getSession().getAttribute("user") != null){ log.info("用户已登录,用户id为:{}",request.getSession().getAttribute("user")); Long userId = (Long)request.getSession().getAttribute("user"); BaseContext.setCurrentId(userId); filterChain.doFilter(request,response); return; }