苍穹外卖项目(黑马)学习笔记DAY4

目录

套餐管理实战

 新增套餐功能

                根据分类ID查询菜品

                 新增套餐(提交操作)

 套餐分页查询功能

删除套餐功能

修改套餐功能

根据id查询套餐 

修改套餐(提交操作)

套餐起售停售功能

套餐管理实战

        根据产品原型进行需求分析,分析出业务规则后完成新增套餐、套餐分页查询、删除套餐、修改套餐、起售停售套餐功能。

苍穹外卖项目(黑马)学习笔记DAY4_第1张图片

  •  新增套餐功能

                用什么方法请求?传入什么参数?返回什么数据?

                根据接口文档,该方法以Post的方式进行请求。传入的参数包含套餐实体类的属性,此外从接口文档中我们还可以看出还包含一个Object这种一般都是另一个实体类。

苍穹外卖项目(黑马)学习笔记DAY4_第2张图片

                 因此,设计了SetmealDTO的来接收前端传过来的数据。新增操作没有额外的数据需要返回给前端。

                 根据产品原型来设计接口,我们需要设计四个接口,其中两个已经在之前完成,因此这里就是完成根据发呢类Id查询菜品和整个套餐的提交过程。

苍穹外卖项目(黑马)学习笔记DAY4_第3张图片

                根据分类ID查询菜品

                        下面给出在xml下的动态sql和mp的代码。

    public List list(Long categoryId) {
        String name=new String();
        QueryWrapper qw=new QueryWrapper();
        //第一个参数是条件,第二个参数是数据库的字段名称,
        qw.like(Strings.isNotEmpty(name),"name",name);
        qw.eq("category_id",categoryId);
        //假设有传入status
        //qw.eq("status",status);
        List dishes = dishMapper.selectList(qw);
        System.out.println(dishes);
        return dishes;
    }
                 新增套餐(提交操作)

                        新增套餐,同时需要保存套餐和菜品的关联关系,涉及多个表需要开启事务,在业务层实现类的方法上使用注解 @Transactional开启事务。

                        向套餐表插入套餐数据后,返回该套餐的id,然后将该此id赋给SetmealDish对象中的setmealId,随后批量插入到setmeal_id表中保存套餐和菜品的关联关系。

苍穹外卖项目(黑马)学习笔记DAY4_第4张图片

 套餐分页查询功能

                用什么方法请求?传入什么参数?返回什么数据?

                使用get的请求方式。传入SetmealPageQueryDTO,需要返回页数以及套餐数据。由于查询套餐涉及多张表,因此使用xml的方式。

删除套餐功能

                 用什么方法请求?传入什么参数?返回什么数据?

                 从产品原型得删除功能能够一次删除一个套餐也可以是多个,且其手中的套餐不能被删除。该方法使用delete的方式请求,需要Long型的id序列,这里使用集合接收。多删除和当个删除都可用该功能解决。无额外需要传送回来的数据。

                 删除的思路:判断是否是起售状态(起售状态不能删除)-----> 删除套餐表中的数据以及套餐菜品关系表中的数据。

修改套餐功能

                 根据产品原型设计接口,修改套餐设计 根据id查询套餐、根据类型查询分类、根据分类id查询菜品、图片上传、修改套餐。

苍穹外卖项目(黑马)学习笔记DAY4_第5张图片

  • 根据id查询套餐 

                 用什么方法请求?传入什么参数?返回什么数据?

                 该方法使用get的请求方式。需要传入id的作为参数。给前端返回setmealVO。

                 思路:现根据传入的套餐id查询出套餐,然后根据套餐的去查询所有菜品信息,最后封装到setmealVO中。

  • 修改套餐(提交操作)

                 用什么方法请求?传入什么参数?返回什么数据?

                 该方法以put的方式进行请求。需要传入SetmealVO的参数。无额外的返回数据。

                 思路:修改套餐可能会新增菜品或删除菜品,可以统一删除,之后在添加。因此,删除套餐和菜品的关联关系,操作setmeal_dish表,执行delete。重新插入套餐和菜品的关联关系,操作setmeal_dish表,执行insert。

套餐起售停售功能

                 在套餐起售停售中,可以对状态为起售的套餐进行停售操作,可以对状态为停售的套餐进行起售操作。起售的套餐可以展示在用户端,停售的套餐不能展示在用户端。起售套餐时,如果套餐内包含停售的菜品,则不能起售。

                 用什么方法请求?传入什么参数?返回什么数据?

                 使用post方式请求,用路径参数接收状态,没有额外需要的数据需要返回给前端。

                 起售套餐时,判断套餐内是否有包含停售菜品,如果有则不能起售。因此先根据套餐id查询菜品,将查询到的菜品遍历一遍检查一下。

    @Select("select a.* from sky_take_out.dish a left join sky_take_out.setmeal_dish b on a.id = b.dish_id where b.setmeal_id = #{setmealId}")
    List getBySetmealId(Long id);

                 如果不包含停售菜品则调用直接调用先前写的套餐更新。

如果有帮助到你,希望可以点赞收藏转发~

你可能感兴趣的:(苍穹外卖学习笔记,学习,笔记,spring,maven,spring,boot,mybatis)