实习项目|苍穹外卖|day4

作业

完成套餐管理模块所有业务功能,包括:

  • 新增套餐
  • 套餐分页查询
  • 删除套餐
  • 修改套餐
  • 起售停售套餐

要求:

  1. 根据产品原型进行需求分析,分析出业务规则
  2. 设计接口
  3. 梳理表之间的关系(分类表、菜品表、套餐表、口味表、套餐菜品关系表)
  4. 根据接口设计进行代码实现
  5. 分别通过swagger接口文档和前后端联调进行功能测试

新增套餐

1.根据原型进行需求分析与设计(接口文档)

最开始给的json里面有现成的接口信息,直接照做就好了。
看原型:设计选择菜品的接口(回显)
在这里插入图片描述
所以,这个需求要写两个接口,一个根据菜品分类回显,一个添加。

2.根据接口设计DTO

setmealDTO满足。

3.编码controller-》service-》mapper

根据菜品分类回显还是比较好实现的。
添加:两个表,一个是setmeal表(返回id),一个是setmeal_dish表(一次设置id,批量插入)。

    <insert id="insert" useGeneratedKeys="true" keyProperty="id">
        insert into setmeal (category_id, name, price, status, description, image, create_time, update_time, create_user, update_user)
        values (#{categoryId}, #{name}, #{price}, #{status}, #{description}, #{image}, #{createTime}, #{updateTime}, #{createUser}, #{updateUser})
    </insert>
    <insert id="insertBatch">
        insert into setmeal_dish (setmeal_id, dish_id, name, price, copies) VALUES
        <foreach collection="setmealDishes" item="smd" separator=",">
            (#{smd.setmealId}, #{smd.dishId}, #{smd.name}, #{smd.price}, #{smd.copies})
        </foreach>
    </insert>

回显的答案(用到了builder和考虑到只选择起售中的菜品显示)

public List<Dish> list(Long categoryId) {
    Dish dish = Dish.builder()
        .categoryId(categoryId)
        .status(StatusConstant.ENABLE)
        .build();
    return dishMapper.list(dish);
}
<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>

4.功能测试

Swagger接口测试+前后端联调

5.代码完善

6.commit 和 push

套餐分页查询

1.根据原型进行需求分析与设计(接口文档)

在这里插入图片描述

2.根据接口设计DTO

3.编码controller-》service-》mapper

比较常规的分页代码,用PageHelper

4.功能测试

Swagger接口测试+前后端联调

5.代码完善

6.commit 和 push

删除套餐

1.根据原型进行需求分析与设计(接口文档)

2.根据接口设计DTO

3.编码controller-》service-》mapper

主要的问题还是批量删除的动态编码。

4.功能测试

Swagger接口测试+前后端联调

5.代码完善

6.commit 和 push

修改套餐

1.根据原型进行需求分析与设计(接口文档)

首先肯定是回显,然后修改,(删除setmeal_dish,再新加)。

2.根据接口设计DTO

3.编码controller-》service-》mapper

@Transactional 忘记了事件

4.功能测试

Swagger接口测试+前后端联调

5.代码完善

6.commit 和 push

起售停售套餐

1.根据原型进行需求分析与设计(接口文档)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.根据接口设计DTO

3.编码controller-》service-》mapper

不确定的问题是throw的

答案:SetmealEnableFailedException(MessageConstant.SETMEAL_ENABLE_FAILED);

4.功能测试

Swagger接口测试+前后端联调

5.代码完善

6.commit 和 push

### 关于苍穹外卖项目第四天教程视频 对于特定项目的教程视频查询,尤其是像苍穹外卖这样的具体项目,在提供的参考资料中并未直接提及该项目及其对应的每日教程详情[^1][^2][^3]。 然而,通常这类系列教程会按照一定模式发布,例如每天更新一期视频来覆盖不同主题或功能模块。为了定位到苍穹外卖项目4天的具体教程: - 可以访问官方文档或者课程平台主页查找是否有详细的日程安排表。 - 如果存在配套的学习社区或论坛,则可以尝试在那里询问其他学员是否记得当天的内容重点。 - 社交媒体平台上也可能有关于此项目的讨论群组,加入这些群体往往能更快获得帮助。 另外值得注意的是,许多在线教育平台都会提供完整的播放列表,其中包含了整个课程的所有章节,这样就可以轻松跳转至所需的那一部分进行观看学习。 ```python # 假设有一个函数可以从给定URL获取视频列表并返回指定日期的教学资源链接 def get_tutorial_video_url(project_name, day_number): base_url = "https://example.com/tutorials" full_path = f"{base_url}/{project_name}/day_{day_number}.mp4" return full_path if check_if_exists(full_path) else None # 使用示例 tutorial_day_4_link = get_tutorial_video_url('qingtian_takeout', 4) if tutorial_day_4_link: print(f"Day 4 tutorial available at {tutorial_day_4_link}") else: print("Could not find the requested tutorial.") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值