尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

黑马苍穹外卖笔记day4

黑马苍穹外卖笔记day4 第四天实现套餐管理的所有接口1.新增套餐业务规则套餐名称唯一套餐必须属于某个分类套餐必须包含菜品名称、分类、价格、图片为必填项添加菜品窗口需要根据分类类型来展示菜品新增的套餐默认为停售状态接口设计根据类型查询分类已完成根据分类id查询菜品图片上传已完成新增套餐根据分类id查询菜品controller层在DishController类中编写一个方法list()返回一个ResultListDish在Service层的DishServiceImpl类中将categoryId和状态包装成一个dish对象然后传入Mapper层用这个dish对象来进行查询在mapper层的DishMapper.xml文件中使用Mybatis来进行查询注意mybatis中where标签的语句要加and不用加逗号set标签要加逗号新增套餐注意新增套餐时不仅要保存到setmeal表中还要向setmeal_dish表中保存套餐和菜品的关联关系在Service层中的实现在SetmealServiceImpl类中的saveWithDish方法在插入套餐之后还需要获取到这个套餐的id所以在mybatis代码中要将主键返回在SetmealDishMapper.xml文件中使用useGeneratedKeys关键字指定需要返回主键keyProperty关键字指定返回的主键是哪个在saveWithDish方法中最后还需要批量插入套餐菜品关系用到了setmealDishMapper的insertBatch方法其中的mybatis代码如下所示使用到了foreach标签2.套餐分页查询业务规则根据页码进行分页展示每页展示十条数据可以根据需要按照套餐名称、分类、售卖状态进行查询Controller层SetmealController类中编写分页查询方法pageService层SetmealService中编写pageQuery方法在SetmealServiceImpl实现类中实现使用PageHelper的方法实现分页Mapper层在SetmealMapper.xml文件中使用mybatis代码来实现分页查询这里用到了左外连接将setmeal表和category表连接到一起进行查询3.删除套餐业务规则可以一次删除一个套餐也可以批量删除套餐起售中的套餐不能删除Controller层SetmealController类中编写delete()方法批量删除套餐Service层在SetmealService类的实现类SetmealServiceImpl类中实现deleteBatch()方法注意要先判断套餐的起售状态如果是起售中的套餐就不能被删除。同时要在id找不到对应套餐的时候有防御机制比如if(setmeal!null)4.修改套餐接口设计根据id查询套餐根据类型查询分类已完成根据分类id查询菜品已完成图片上传已完成修改套餐首先需要完成根据id查询套餐的功能通过路径参数{id}来对SetmealVO进行查询在Controller层中的SetmealController类中以getById()方法实现Service层在SetmealServiceImpl类中的getByIdWithDish方法中需要先通过select()方法获取到一个Setmeal对象然后通过selectBySetmealId()方法获取到套餐和菜品的关联表然后通过BeanUtils的方法将Setmeal对象的值赋给SetmealVO对象修改套餐在Controller层中的SetmealController层以update()方法实现Service层在SetmealServiceImpl类中的update()方法实现。首先要将SetmealDTO对象通过BeanUtils的方法转为Setmeal对象然后通过Mapper层的update()方法来更新对于套餐菜品关系要先删除掉原有的套餐菜品关系并新增更新后的套餐菜品关系并通过SetmealDish的Mapper层来将套餐菜品关系插入到数据库中5.起售停售套餐业务规则可以对状态为起售的套餐进行停售操作可以对状态为停售的套餐进行起售操作起售的套餐可以展示在用户端停售的套餐不能展示在用户端起售套餐时如果套餐内包含停售的菜品则不能起售Controller层在SetmealController中定义updateStatus()方法通过路径参数status来改变套餐的起售状态Service层:在SetmealServiceImpl中实现updateStatus()方法。首先在起售套餐时要先判断套餐中的所有菜品是否都处于起售状态如果有处于停售状态的菜品则套餐也不能起售。所以在Mapper层新实现了一个selectBySetmealId方法通过套餐id获取到套餐中的所有菜品然后判断这些菜品的起售状态。Mapper层DishMapper层中定义selectBySetmealId()方法通过左外连接将dish表和setmeal_dish表连接查到对应套餐id的所有菜品
返回列表