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

目录

套餐管理实战

 新增套餐功能

                根据分类ID查询菜品

                 新增套餐(提交操作)

 套餐分页查询功能

删除套餐功能

修改套餐功能

根据id查询套餐 

修改套餐(提交操作)

套餐起售停售功能

套餐管理实战

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

  •  新增套餐功能

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

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

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

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

                根据分类ID查询菜品

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

<select id="list" resultType="Dish" parameterType="Dish">
    select * from dish
    <where>
        <if test="name != null">
            and name like concat('%',#{name},'%')
        </if>
        <if test="categoryId != null">
            and category_id = #{categoryId}
        </if>
        <if test="status != null">
            and status = #{status}
        </if>
    </where>
    order by create_time desc
</select>
    public List<Dish> list(Long categoryId) {
        String name=new String();
        QueryWrapper<Dish> qw=new QueryWrapper<Dish>();
        //第一个参数是条件,第二个参数是数据库的字段名称,
        qw.like(Strings.isNotEmpty(name),"name",name);
        qw.eq("category_id",categoryId);
        //假设有传入status
        //qw.eq("status",status);
        List<Dish> dishes = dishMapper.selectList(qw);
        System.out.println(dishes);
        return dishes;
    }
                 新增套餐(提交操作)

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

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

 套餐分页查询功能

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

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

<select id="pageQuery" resultType="com.sky.vo.SetmealVO">
    select
    	s.*,c.name categoryName
    from
    	setmeal s
    left join
    	category c
    on
    	s.category_id = c.id
    <where>
        <if test="name != null">
            and s.name like concat('%',#{name},'%')
        </if>
        <if test="status != null">
            and s.status = #{status}
        </if>
        <if test="categoryId != null">
            and s.category_id = #{categoryId}
        </if>
    </where>
    order by s.create_time desc
</select>

删除套餐功能

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

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

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

修改套餐功能

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

  • 根据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<Dish> getBySetmealId(Long id);

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

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

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
苍穹外卖项目可以使用Postman进行API接口的测试和调试。Postman是一款常用的API开发工具,它可以帮助开发人员发送HTTP请求并查看响应结果,方便进行接口的测试和调试。 在苍穹外卖项目中,可以使用Postman发送各种类型的HTTP请求,比如GET、POST、PUT、DELETE等,来模拟用户操作和测试接口功能。通过Postman,可以验证接口的正确性、查看接口返回的数据、调试接口的参数等。 为了使用Postman进行苍穹外卖项目的接口测试,您需要以下步骤: 1. 下载并安装Postman:您可以从Postman官网(https://www.postman.com/)上下载并安装适合您的操作系统的版本。 2. 打开Postman并创建一个新的请求:打开Postman应用,在界面上选择"New"来创建一个新的请求。 3. 输入接口URL和选择请求方法:在新建请求的界面中,输入苍穹外卖项目的接口URL,并选择适当的请求方法,比如GET或POST。 4. 添加请求参数和请求头:根据需要,您可以添加请求参数和请求头,以便于模拟不同的请求情况。 5. 发送请求并查看响应:点击发送按钮,Postman会向服务器发送请求,并在界面上显示响应结果。您可以查看接口返回的数据、响应状态码等信息。 通过以上步骤,您可以使用Postman进行苍穹外卖项目的接口测试。这样可以帮助您确保接口的正确性和稳定性,提高项目的质量和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值